ADuCM302x Device Drivers API Reference Manual  Release 3.1.2.0
adi_i2c.h
1 
46 #ifndef ADI_I2C_H
47 #define ADI_I2C_H
48 
50 #include <adi_processor.h>
51 #include <rtos_map/adi_rtos_map.h> /* for ADI_SEM_SIZE */
59 #ifdef __cplusplus
60 extern "C" {
61 #endif
62 
63 #if defined (__ICCARM__)
64 /*
65 * IAR MISRA C 2004 error suppressions.
66 *
67 * Pm011 (rule 6.3): Types which specify sign and size should be used
68 * We use bool which is accepted by MISRA but the toolchain does not accept it
69 *
70 */
71 #pragma diag_suppress=Pm011
72 
73 #endif
74 
86 typedef enum
87 {
104 
105 
115 typedef enum
116 {
124 
125 
127 typedef struct __ADI_I2C_DEV_DATA_TYPE* ADI_I2C_HANDLE;
128 
134 #define ADI_I2C_MEMORY_SIZE (44u + ADI_SEM_SIZE)
135 
136 
199 typedef struct {
200  uint8_t *pPrologue;
201  uint16_t nPrologueSize;
202  uint8_t *pData;
203  uint16_t nDataSize;
207 
208 
210 #define ADI_I2C_MAX_RATE (400000u)
211 
212 /***************************************************************
213  * Eliminable user API that may be optimized out by the linker *
214  ***************************************************************/
215 ADI_I2C_RESULT adi_i2c_Open (uint32_t const DeviceNum, void* const pMemory, uint32_t const MemorySize, ADI_I2C_HANDLE* const phDevice);
216 ADI_I2C_RESULT adi_i2c_Close (ADI_I2C_HANDLE const hDevice);
217 
218 /* blocking calls... */
219 ADI_I2C_RESULT adi_i2c_ReadWrite (ADI_I2C_HANDLE const hDevice, ADI_I2C_TRANSACTION* const pTransaction, uint32_t* const pHwErrors);
220 
221 /* non-blocking calls... */
222 ADI_I2C_RESULT adi_i2c_SubmitBuffer (ADI_I2C_HANDLE const hDevice, ADI_I2C_TRANSACTION* const pTransaction);
223 ADI_I2C_RESULT adi_i2c_IsBufferAvailable (ADI_I2C_HANDLE const hDevice, bool* const pbCompletionState);
224 ADI_I2C_RESULT adi_i2c_GetBuffer (ADI_I2C_HANDLE const hDevice, uint32_t* const pHwErrors);
225 
226 /* other (blocking) calls... */
227 ADI_I2C_RESULT adi_i2c_Reset (ADI_I2C_HANDLE const hDevice);
228 ADI_I2C_RESULT adi_i2c_SetBitRate (ADI_I2C_HANDLE const hDevice, uint32_t const requestedBitRate32);
229 ADI_I2C_RESULT adi_i2c_SetSlaveAddress (ADI_I2C_HANDLE const hDevice, uint16_t const SlaveAddress);
230 ADI_I2C_RESULT adi_i2c_IssueGeneralCall (ADI_I2C_HANDLE const hDevice, uint8_t* const pData, uint8_t const nDataSize, uint32_t* const pHwErrors);
231 
232 
233 #if defined (__ICCARM__)
234 #pragma diag_default=Pm011
235 #endif
236 
237 #ifdef __cplusplus
238 }
239 #endif
240 
243 #endif /* ADI_I2C_H */
ADI_I2C_RESULT adi_i2c_IssueGeneralCall(ADI_I2C_HANDLE const hDevice, uint8_t *const pData, uint8_t const nDataSize, uint32_t *const pHwErrors)
Transmit a General Call command to all slave devices on the I2C bus.
Definition: adi_i2c.c:789
uint8_t * pPrologue
Definition: adi_i2c.h:200
ADI_I2C_RESULT adi_i2c_Open(uint32_t const DeviceNum, void *const pMemory, uint32_t const MemorySize, ADI_I2C_HANDLE *const phDevice)
Initialize and allocate an I2C device for use in Master Mode.
Definition: adi_i2c.c:181
ADI_I2C_RESULT adi_i2c_ReadWrite(ADI_I2C_HANDLE const hDevice, ADI_I2C_TRANSACTION *const pTransaction, uint32_t *const pHwErrors)
Blocking I2C Master-Mode data read/write API.
Definition: adi_i2c.c:355
ADI_I2C_RESULT adi_i2c_IsBufferAvailable(ADI_I2C_HANDLE const hDevice, bool *const pbCompletionState)
Query if a non-blocking I2C transfer is complete.
Definition: adi_i2c.c:511
uint16_t nDataSize
Definition: adi_i2c.h:203
struct __ADI_I2C_DEV_DATA_TYPE * ADI_I2C_HANDLE
Definition: adi_i2c.h:127
ADI_I2C_HW_ERRORS
Definition: adi_i2c.h:115
ADI_I2C_RESULT adi_i2c_SetBitRate(ADI_I2C_HANDLE const hDevice, uint32_t const requestedBitRate32)
Set the I2C serial bus speed.
Definition: adi_i2c.c:656
ADI_I2C_RESULT adi_i2c_Reset(ADI_I2C_HANDLE const hDevice)
Reset an I2C device and driver instance.
Definition: adi_i2c.c:613
uint8_t * pData
Definition: adi_i2c.h:202
ADI_I2C_RESULT adi_i2c_SetSlaveAddress(ADI_I2C_HANDLE const hDevice, uint16_t const SlaveAddress)
Set the I2C serial bus slave address.
Definition: adi_i2c.c:735
ADI_I2C_RESULT adi_i2c_SubmitBuffer(ADI_I2C_HANDLE const hDevice, ADI_I2C_TRANSACTION *const pTransaction)
Non-Blocking I2C Master-Mode data read or data write API.
Definition: adi_i2c.c:450
ADI_I2C_RESULT
Definition: adi_i2c.h:86
uint16_t nPrologueSize
Definition: adi_i2c.h:201
ADI_I2C_RESULT adi_i2c_Close(ADI_I2C_HANDLE const hDevice)
Uninitialize and deallocate an I2C device.
Definition: adi_i2c.c:278
ADI_I2C_RESULT adi_i2c_GetBuffer(ADI_I2C_HANDLE const hDevice, uint32_t *const pHwErrors)
Request ownership of a submitted buffer.
Definition: adi_i2c.c:570