
UM10800
All information provided in this document is subject to legal disclaimers.
© NXP Semiconductors N.V. 2016. All rights reserved.
User manual
Rev. 1.2 — 5 October 2016
416 of 487
NXP Semiconductors
UM10800
Chapter 29: LPC82x ROM API I2C driver routines
The following structure has to be defined to use the I2C API:
typedef struct I2CD_API { // index of all the i2c driver functions
void (*i2c_isr_handler) (I2C_HANDLE_T* h_i2c) ; // ISR interrupt service request
// MASTER functions ***
ErrorCode_t (*i2c_master_transmit_poll)(I2C_HANDLE_T* h_i2c, I2C_PARAM* ptp,
I2C_RESULT* ptr );
ErrorCode_t (*i2c_master_receive_poll)(I2C_HANDLE_T* h_i2c, I2C_PARAM* ptp,
I2C_RESULT* ptr );
ErrorCode_t (*i2c_master_tx_rx_poll)(I2C_HANDLE_T* h_i2c, I2C_PARAM* ptp,
I2C_RESULT* ptr ) ;
ErrorCode_t (*i2c_master_transmit_intr)(I2C_HANDLE_T* h_i2c, I2C_PARAM* ptp,
I2C_RESULT* ptr ) ;
ErrorCode_t (*i2c_master_receive_intr)(I2C_HANDLE_T* h_i2c, I2C_PARAM* ptp,
I2C_RESULT* ptr ) ;
ErrorCode_t (*i2c_master_tx_rx_intr)(I2C_HANDLE_T* h_i2c, I2C_PARAM* ptp, I2C_RESULT*
ptr ) ;
// SLAVE functions ***
ErrorCode_t (*i2c_slave_receive_poll)(I2C_HANDLE_T* h_i2c, I2C_PARAM* ptp, I2C_RESULT*
ptr ) ;
ErrorCode_t (*i2c_slave_transmit_poll)(I2C_HANDLE_T* h_i2c, I2C_PARAM* ptp,
I2C_RESULT* ptr ) ;
ErrorCode_t (*i2c_slave_receive_intr)(I2C_HANDLE_T* h_i2c, I2C_PARAM* ptp, I2C_RESULT*
ptr ) ;
ErrorCode_t (*i2c_slave_transmit_intr)(I2C_HANDLE_T* h_i2c, I2C_PARAM* ptp,
I2C_RESULT* ptr ) ;
ErrorCode_t (*i2c_set_slave_addr)(I2C_HANDLE_T* h_i2c,
uint32_t slave_addr_0_3, uint32_t slave_mask_0_3) ;
// OTHER functions
uint32_t (*i2c_get_mem_size)(void) ; //ramsize_in_bytes memory needed by I2C drivers
ErrorCode_t i2c_slave_receive_poll(I2C_HANDLE_T* , I2C_PARAM* ,
I2C_RESULT*)
;
I2C Slave Receive Polling
ErrorCode_t i2c_slave_transmit_poll(I2C_HANDLE_T* , I2C_PARAM* ,
I2C_RESULT*)
;
I2C Slave Transmit Polling
ErrorCode_t i2c_slave_receive_intr(I2C_HANDLE_T* , I2C_PARAM* ,
I2C_RESULT*)
;
I2C Slave Receive Interrupt
ErrorCode_t i2c_slave_transmit_intr(I2C_HANDLE_T* , I2C_PARAM* ,
I2C_RESULT*)
;
I2C Slave Transmit Interrupt
ErrorCode_t i2c_set_slave_addr(I2C_HANDLE_T*, slave_addr_0_3,
slave_mask_0_3)
;
I2C Set Slave Address
uint32_t i2c_get_mem_size(void)
;
I2C Get Memory Size
I2C_HANDLE_T* i2c_setup(i2c_base_addr, *start_of_ram)
;
I2C Setup
ErrorCode_t i2c_set_bitrate(I2C_HANDLE_T*, P_clk_in_hz,
bitrate_in_bps)
;
I2C Set Bit Rate
uint32_t i2c_get_firmware_version(void )
;
I2C Get Firmware Version
I2C_MODE_T i2c_get_status(I2C_HANDLE_T* )
;
I2C Get Status
ErrorCode_t i2c_set_timeout(I2C_HANDLE_T* h_i2c, uint32_t timeout)
;
I2C time-out value
Table 364. I2C API calls
API call
Description
Reference