NetBurner Real-Time Operating System API. More...
Go to the source code of this file.
Macros | |
#define | I2C_MAX_BUF_SIZE (64) |
Size allocated to input and output buffers in slave mode I2C. | |
#define | I2C_RX_TX_TIMEOUT (5) |
Ticks allowed before timeout of a single byte transmission. | |
#define | I2C_START_TIMEOUT (20) |
Ticks allowed before timeout when attempting start on I2C bus. | |
#define | I2C_SLAVE_TX_TERM_CHAR (0) |
Terminating char to be sent when Slave TX buffer is empty. | |
#define | I2C_OK (0) |
Last instruction terminated correctly. | |
#define | I2C_NEXT_WRITE_OK (1) |
I2C bus is OK for a write. | |
#define | I2C_NEXT_READ_OK (2) |
I2C bus is OK for a read. | |
#define | I2C_MASTER_OK (3) |
I2C finished transmission but still owns but (need to stop or restart) | |
#define | I2C_TIMEOUT (4) |
A timeout occurred while trying communicate on I2C bus. | |
#define | I2C_BUS_NOT_AVAIL (5) |
A timeout occurred while trying gain I2C bus control. | |
#define | I2C_NOT_READY (6) |
A read or write was attempted before I2C ready or during a slave transmission. | |
#define | I2C_LOST_ARB (7) |
Lost arbitration during start. | |
#define | I2C_LOST_ARB_ADD (8) |
Lost arbitration and then winner addressed our slave address. | |
#define | I2C_NO_LINK_RX_ACK (9) |
We are in Master TX mode and received no ACK from slave device, possibly during start. | |
#define | I2CInit Multi_I2CInit |
Calls Muti_I2CInit. | |
#define | I2CSendBuf Multi_I2CSendBuf |
Calls Muti_I2CSendBuf. | |
#define | I2CReadBuf Multi_I2CReadBuf |
Calls Muti_I2CReadBuf. | |
#define | I2CRestart Multi_I2CRestart |
Calls Muti_I2CRestart. | |
#define | I2CStart Multi_I2CStart |
Calls Muti_I2CStart. | |
#define | I2CStop Multi_I2CStop |
Calls Muti_I2CStrop. | |
#define | I2CSend Multi_I2CSend |
Calls Muti_I2CSend. | |
#define | I2CRead Multi_I2CRead |
Calls Muti_I2CRead. | |
#define | I2CResetPeripheral Multi_ResetPeripheral |
Calls Multi_ResetPeripheral. | |
#define | I2C_START_READ (1) |
Read option to be used for bRead_Not_Write. | |
#define | I2C_START_WRITE (0) |
Write option to be used for bRead_Not_Write. | |
#define | I2C_SR_BUSY (((0x20 & I2C_SR) == 0x20)) |
Is I2C bus busy (bit 5 of I2SR) | |
#define | I2C_CR_SLAVE (((0x20 & I2C_CR) == 0x00)) |
Is I2C bus set as slave (bit 5 of I2CR) | |
#define | I2C_SR_ARB_LOST (((0x10 & I2C_SR) == 0x10)) |
Was I2C bus Arbitration Lost (bit 4 of I2SR) | |
#define | I2C_SR_ADRES_AS_SLAVE (((0x40 & I2C_SR) == 0x40)) |
Was Device addressed as a slave(bit 6 of I2SR) | |
#define | I2C_SR_SLAVE_TX (((0x04 & I2C_SR) == 0x04)) |
Was Device addressed as a slave for TX (bit 2 of I2SR) | |
#define | I2C_CR_TX (((0x10 & I2C_CR) == 0x10)) |
Are we configured for TX (bit 4 of I2CR) | |
#define | I2C_SR_RX_ACK (((0x01 & I2C_SR) == 0x00)) |
Did we receive an RX ACK after last transmit (bit 0 of I2SR) | |
#define | I2C_CR_RX_ACK (((0x08 & I2C_CR) == 0x00)) |
Are we set to RX ACK. | |
#define | I2C_SET_NO_ACK ((I2C_CR |= 0x08)) |
Configure I2C not to send a RX ACK (bit 3 of I2CR) | |
#define | I2C_SET_ACK ((I2C_CR &= 0xF7)) |
Configure I2C to send a RX ACK (bit 3 of I2CR) | |
#define | I2C_SET_TX ((I2C_CR |= 0x10)) |
Configure I2C to be in TX mode (bit 4 of I2CR) | |
#define | I2C_SET_RX ((I2C_CR &= 0xEF)) |
Configure I2C to be in RX mode (bit 4 of I2CR) | |
#define | I2C_SET_REPEAT_START ((I2C_CR |= 0x04)) |
Configure I2C to send a repeated start signal. | |
#define | I2C_CLR_ARB_LOST ((I2C_SR &= 0xEF)) |
Clear Arbitration lost error condition. | |
Functions | |
void | Multi_I2CInit (uint8_t slave_Addr=0x08, uint8_t freqdiv=0x3C) |
This is the I2C initialization routine. More... | |
uint8_t | Multi_I2CSendBuf (uint8_t addr, puint8_t buf, int num, bool stop=true) |
This function sends a buffer to an address on the I2C bus in master mode without the need of a start and stop bit. More... | |
uint8_t | Multi_I2CReadBuf (uint8_t addr, puint8_t buf, int num, bool stop=true) |
This function allows a buffer to be read from an address on the I2C bus in master mode without the need of a start and stop bit. More... | |
bool | I2CRXAvail () |
This function determines if there is data available in the I2C slave receive buffer. More... | |
uint32_t | I2CTXAvail () |
This function determines the free space available in the I2C slave TX buffer. More... | |
uint8_t | I2CGetByte () |
This function will pend on a slave receive I2C semaphore. More... | |
uint8_t | I2CFillSlaveTXBuf (puint8_t buf, uint32_t num, bool restart=true) |
This function is used to fill the I2C slave TX buffer. More... | |
uint8_t | Multi_I2CRestart (uint8_t addr, bool Read_Not_Write, uint32_t ticks_to_wait=I2C_RX_TX_TIMEOUT) |
Send a restart of communication with a slave device after finished communication on the bus. More... | |
uint8_t | Multi_I2CStart (uint8_t addr, bool Read_Not_Write, uint32_t ticks_to_wait=I2C_START_TIMEOUT) |
This function is used to obtain an I2C bus and start communication in master mode. More... | |
uint8_t | Multi_I2CStop (uint32_t ticks_to_wait=I2C_RX_TX_TIMEOUT) |
This function ends communication and releases control of the I2C bus. This function puts your NetBurner board into idle/slave mode. More... | |
uint8_t | Multi_I2CSend (uint8_t val, uint32_t ticks_to_wait=I2C_RX_TX_TIMEOUT) |
This function sends a single byte in master mode on the I2C bus. More... | |
uint8_t | Multi_I2CRead (puint8_t val, uint32_t ticks_to_wait=I2C_RX_TX_TIMEOUT) |
This function reads a single byte in master mode from the I2C bus. More... | |
Variables | |
uint8_t(* | I2C_SlaveTX_Callback )() |
If this callback is pointed to a function, then it will be called when retrieving the data to be sent to the master. This will bypass the circular buffer functions I2CTXAvail() and I2CFillSlaveTXBuf() used when transmitting data as a slave. More... | |
void(* | I2C_SlaveTX_NAK_Callback )() |
If this callback is pointed to a function, then it will be called when the receiving master device sends a NAK. This indicates that the master device will not be reading any more data from the slave transmitter. | |
void(* | I2C_SlaveRX_Callback )(uint8_t RX_Data) |
If this callback is pointed to a function then it will be called when storing the data received from the master. This will bypass the circular buffer functions I2CRXAvail() and I2CGetByte() used when receiving data as a slave. More... | |
NetBurner Real-Time Operating System API.