ADuCM4x50 Device Drivers API Reference Manual  Release 4.0.0.0
adi_i2c.h
1 
15 #ifndef ADI_I2C_H
16 #define ADI_I2C_H
17 
19 #include <adi_processor.h>
20 #include <rtos_map/adi_rtos_map.h> /* for ADI_SEM_SIZE */
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
32 #if defined (__ICCARM__)
33 /*
34 * IAR MISRA C 2004 error suppressions.
35 *
36 * Pm011 (rule 6.3): Types which specify sign and size should be used
37 * We use bool which is accepted by MISRA but the toolchain does not accept it
38 *
39 */
40 #pragma diag_suppress=Pm011
41 
42 #endif
43 
55 typedef enum
56 {
73 
74 
84 typedef enum
85 {
94 
95 
97 typedef struct __ADI_I2C_DEV_DATA_TYPE* ADI_I2C_HANDLE;
98 
104 #define ADI_I2C_MEMORY_SIZE (48u + ADI_SEM_SIZE)
105 
106 
169 typedef struct {
170  uint8_t *pPrologue;
171  uint16_t nPrologueSize;
172  uint8_t *pData;
173  uint16_t nDataSize;
177 
178 
180 #define ADI_I2C_MAX_RATE (400000u)
181 
182 /***************************************************************
183  * Eliminable user API that may be optimized out by the linker *
184  ***************************************************************/
185 ADI_I2C_RESULT adi_i2c_Open (uint32_t const DeviceNum, void* const pMemory, uint32_t const MemorySize, ADI_I2C_HANDLE* const phDevice);
187 
188 /* blocking calls... */
189 ADI_I2C_RESULT adi_i2c_ReadWrite (ADI_I2C_HANDLE const hDevice, ADI_I2C_TRANSACTION* const pTransaction, uint32_t* const pHwErrors);
190 
191 /* non-blocking calls... */
192 ADI_I2C_RESULT adi_i2c_SubmitBuffer (ADI_I2C_HANDLE const hDevice, ADI_I2C_TRANSACTION* const pTransaction);
193 ADI_I2C_RESULT adi_i2c_IsBufferAvailable (ADI_I2C_HANDLE const hDevice, bool* const pbCompletionState);
194 ADI_I2C_RESULT adi_i2c_GetBuffer (ADI_I2C_HANDLE const hDevice, uint32_t* const pHwErrors);
195 ADI_I2C_RESULT adi_i2c_GetNumberOfDataProcessed (ADI_I2C_HANDLE const hDevice, uint32_t *pDataCount);
196 ADI_I2C_RESULT adi_i2c_GetHWMaskedErrors (ADI_I2C_HANDLE const hDevice, uint16_t *pHwMaskedErrors);
197 
198 /* other (blocking) calls... */
200 ADI_I2C_RESULT adi_i2c_SetBitRate (ADI_I2C_HANDLE const hDevice, uint32_t const requestedBitRate32);
201 ADI_I2C_RESULT adi_i2c_SetSlaveAddress (ADI_I2C_HANDLE const hDevice, uint16_t const SlaveAddress);
202 ADI_I2C_RESULT adi_i2c_IssueGeneralCall (ADI_I2C_HANDLE const hDevice, uint8_t* const pData, uint8_t const nDataSize, uint32_t* const pHwErrors);
203 
204 ADI_I2C_RESULT adi_i2c_SetBusClear (ADI_I2C_HANDLE const hDevice, const bool busClr, const bool stopBusClr);
206 
207 #if defined (__ICCARM__)
208 #pragma diag_default=Pm011
209 #endif
210 
211 #ifdef __cplusplus
212 }
213 #endif
214 
217 #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:841
uint8_t * pPrologue
Definition: adi_i2c.h:170
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:151
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:325
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:484
uint16_t nDataSize
Definition: adi_i2c.h:173
ADI_I2C_RESULT adi_i2c_SetBusClear(ADI_I2C_HANDLE const hDevice, const bool busClr, const bool stopBusClr)
Assign BUSCLR and STOPBUSCLR bit values.
Definition: adi_i2c.c:892
ADI_I2C_RESULT adi_i2c_GetHWMaskedErrors(ADI_I2C_HANDLE const hDevice, uint16_t *pHwMaskedErrors)
Get the errors that have been masked out.
Definition: adi_i2c.c:610
struct __ADI_I2C_DEV_DATA_TYPE * ADI_I2C_HANDLE
Definition: adi_i2c.h:97
ADI_I2C_HW_ERRORS
Definition: adi_i2c.h:84
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:676
ADI_I2C_RESULT adi_i2c_Reset(ADI_I2C_HANDLE const hDevice)
Reset an I2C device and driver instance.
Definition: adi_i2c.c:634
uint8_t * pData
Definition: adi_i2c.h:172
ADI_I2C_RESULT adi_i2c_GetNumberOfDataProcessed(ADI_I2C_HANDLE const hDevice, uint32_t *pDataCount)
Get the number of data written into MTX or read from MRX following the transmission/reception of a tr...
Definition: adi_i2c.c:519
ADI_I2C_RESULT adi_i2c_SetHWMaskedErrors(ADI_I2C_HANDLE const hDevice, ADI_I2C_HW_ERRORS eMaskedErrors)
Mask out errors. Errors will not be reported.
Definition: adi_i2c.c:788
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:755
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:423
ADI_I2C_RESULT
Definition: adi_i2c.h:55
uint16_t nPrologueSize
Definition: adi_i2c.h:171
ADI_I2C_RESULT adi_i2c_Close(ADI_I2C_HANDLE const hDevice)
Uninitialize and deallocate an I2C device.
Definition: adi_i2c.c:248
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:567