forked from M-Labs/artiq
runtime/i2c: make syscalls more ARTIQ-Python-friendly
This commit is contained in:
parent
3364827744
commit
ff4a46c278
|
@ -113,3 +113,7 @@ class DDSBatchError(Exception):
|
||||||
or when too many commands are batched.
|
or when too many commands are batched.
|
||||||
"""
|
"""
|
||||||
artiq_builtin = True
|
artiq_builtin = True
|
||||||
|
|
||||||
|
class I2CError(Exception):
|
||||||
|
"""Raised with a I2C transaction fails."""
|
||||||
|
artiq_builtin = True
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#include <generated/csr.h>
|
#include <generated/csr.h>
|
||||||
|
|
||||||
|
#include "artiq_personality.h"
|
||||||
#include "rtio.h"
|
#include "rtio.h"
|
||||||
#include "i2c.h"
|
#include "i2c.h"
|
||||||
|
|
||||||
|
@ -91,7 +92,7 @@ static void i2c_scl_o(int busno, int o) {}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
int i2c_init(int busno)
|
void i2c_init(int busno)
|
||||||
{
|
{
|
||||||
/* Set SCL as output, and high level */
|
/* Set SCL as output, and high level */
|
||||||
i2c_scl_o(busno, 1);
|
i2c_scl_o(busno, 1);
|
||||||
|
@ -104,10 +105,8 @@ int i2c_init(int busno)
|
||||||
/* Check the I2C bus is ready */
|
/* Check the I2C bus is ready */
|
||||||
i2c_halfperiod();
|
i2c_halfperiod();
|
||||||
i2c_halfperiod();
|
i2c_halfperiod();
|
||||||
if(i2c_sda_i(busno))
|
if(!i2c_sda_i(busno))
|
||||||
return 1; /* success */
|
artiq_raise_from_c("I2CError", "SDA is stuck low")
|
||||||
else
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void i2c_start(int busno)
|
void i2c_start(int busno)
|
||||||
|
@ -132,7 +131,7 @@ void i2c_stop(int busno)
|
||||||
i2c_halfperiod();
|
i2c_halfperiod();
|
||||||
}
|
}
|
||||||
|
|
||||||
int i2c_write(int busno, char b)
|
int i2c_write(int busno, int b)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -158,7 +157,7 @@ int i2c_write(int busno, char b)
|
||||||
return !i2c_sda_i(busno);
|
return !i2c_sda_i(busno);
|
||||||
}
|
}
|
||||||
|
|
||||||
char i2c_read(int busno, int ack)
|
int i2c_read(int busno, int ack)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
char b;
|
char b;
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
#ifndef __I2C_H
|
#ifndef __I2C_H
|
||||||
#define __I2C_H
|
#define __I2C_H
|
||||||
|
|
||||||
int i2c_init(int busno);
|
void i2c_init(int busno);
|
||||||
void i2c_start(int busno);
|
void i2c_start(int busno);
|
||||||
void i2c_stop(int busno);
|
void i2c_stop(int busno);
|
||||||
int i2c_write(int busno, char b);
|
int i2c_write(int busno, int b);
|
||||||
char i2c_read(int busno, int ack);
|
int i2c_read(int busno, int ack);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue