13#define I2C_RX_TX_TIMEOUT (5)
14#define I2C_START_TIMEOUT (20)
16#define NUM_I2C_MODULES (6)
50 volatile i2cstruct *i2cRegs;
53 inline bool busBusy() {
return (0x20 & i2cRegs->i2sr) == 0x20; };
54 inline bool slaveMode() {
return (0x20 & i2cRegs->i2cr) == 0x00; };
55 inline bool arbLost() {
return (0x10 & i2cRegs->i2sr) == 0x10; };
56 inline bool addressedAsSlave() {
return (0x40 & i2cRegs->i2sr) == 0x40; };
57 inline bool addressedSlaveTX() {
return (0x04 & i2cRegs->i2sr) == 0x04; };
58 inline bool transmitting() {
return (0x10 & i2cRegs->i2cr) == 0x10; };
59 inline bool receivedRXAck() {
return (0x01 & i2cRegs->i2sr) == 0x00; };
60 inline bool sentRXAck() {
return (0x08 & i2cRegs->i2cr) == 0x00; };
61 inline void setAck() { i2cRegs->i2cr &= 0xF7; };
62 inline void setRX() { i2cRegs->i2cr &= 0xEF; };
63 inline void setRepeatStart() { i2cRegs->i2cr |= 0x04; };
64 inline void clrArbLost() { i2cRegs->i2sr &= 0xEF; };
65 inline void clrIntFlag() { i2cRegs->i2sr &= 0xFD; };
66 inline void sendStop() { i2cRegs->i2cr &= 0xDF; }
68 inline void sendData(uint8_t data) { i2cRegs->i2dr = data; };
69 inline void setFreq(uint8_t freq) { i2cRegs->i2fdr = freq; }
72 inline void setTX() { i2cRegs->i2cr |= 0x10; };
73 inline void setNoAck() { i2cRegs->i2cr |= 0x08; };
74 inline uint8_t readData() {
return i2cRegs->i2dr; };
77 volatile e_i2cstatus status;
79 void init(uint8_t moduleNum, uint8_t freqdiv);
80 void stop(uint32_t ticks_to_wait);
83 void read8(uint8_t *val, uint32_t ticks_to_wait);
84 void write8(uint8_t, uint32_t);
85 void start(uint8_t,
bool, uint32_t);
86 void restart(uint8_t,
bool, uint32_t);
87 volatile bool bLastTX;
89 volatile bool bRestarted;
92extern i2c_master I2C[NUM_I2C_MODULES];
void init()
System initialization. Ideally called at the beginning of all applications, since the easiest Recover...
Semaphores are used to control access to shared resources or or to communicate between tasks in a mul...
Definition nbrtos.h:407