This file provides the prototype declarations of PAL I2C.
More...
Go to the source code of this file.
This file provides the prototype declarations of PAL I2C.
- Author
- Infineon Technologies AG
Definition in file pal_i2c.h.
◆ PAL_I2C_EVENT_BUSY
#define PAL_I2C_EVENT_BUSY (0x0002) |
Event returned when lower level I2C bus is busy.
Definition at line 53 of file pal_i2c.h.
◆ PAL_I2C_EVENT_ERROR
#define PAL_I2C_EVENT_ERROR (0x0001) |
Event returned when I2C master operation fails.
Definition at line 51 of file pal_i2c.h.
◆ PAL_I2C_EVENT_SUCCESS
#define PAL_I2C_EVENT_SUCCESS (0x0000) |
Event returned when I2C master completes execution.
Definition at line 49 of file pal_i2c.h.
◆ pal_i2c_t
PAL I2C context structure.
◆ pal_i2c_deinit()
De-initializes the I2C master.
De-initializes the I2C master with the specified context.
- The platform specific de-initialization of I2C master has to be implemented as part of this API, if required.
- If the target platform does not demand explicit de-initialization of i2c master (Example: If the platform driver takes care of init after the reset), it would not be required to implement.
- The implementation must take care the following scenarios depending upon the target platform selected.
- The implementation must handle the acquiring and releasing of the I2C bus before de-initializing the I2C master to avoid interrupting the ongoing slave I2C transactions using the same I2C master.
- If the I2C bus is in busy state, the API must not de-initialize and return PAL_STATUS_I2C_BUSY status.
- This API must ensure that multiple users/applications sharing the same I2C master resource is not impacted.
- Precondition
-
- Note
-
- Parameters
-
[in] | p_i2c_context | Valid pointer to the PAL I2C context that should be de-initialized |
- Return values
-
◆ pal_i2c_init()
Initializes the I2C master.
Initializes the I2C master with the given context.
- The platform specific initialization of I2C master has to be implemented as part of this API, if required.
- If the target platform does not demand explicit initialization of i2c master (Example: If the platform driver takes care of init after the reset), it would not be required to implement.
- The implementation must take care the following scenarios depending upon the target platform selected.
- The implementation must handle the acquiring and releasing of the I2C bus before initializing the I2C master to avoid interrupting the ongoing slave I2C transactions using the same I2C master.
- If the I2C bus is in busy state, the API must not initialize and return PAL_STATUS_I2C_BUSY status.
- Repeated initialization must be taken care with respect to the platform requirements. (Example: Multiple users/applications sharing the same I2C master resource)
- Precondition
-
- Note
-
- Parameters
-
[in] | p_i2c_context | Valid pointer to the PAL I2C context that should be initialized |
- Return values
-
◆ pal_i2c_read()
LIBRARY_EXPORTS pal_status_t pal_i2c_read |
( |
const pal_i2c_t * |
p_i2c_context, |
|
|
uint8_t * |
p_data, |
|
|
uint16_t |
length |
|
) |
| |
Reads from I2C bus.
Reads the data from I2C slave.
pal_i2c_read()
- The API attempts to read if the I2C bus is free, else it returns busy status PAL_STATUS_I2C_BUSY
- The bus is released only after the completion of reception or after completion of error handling.
- The API invokes the upper layer handler with the respective event status as explained below.
- Precondition
-
- Note
- Otherwise the below implementation has to be updated to handle different bitrates based on the input context.
- The caller of this API must take care of the guard time based on the slave's requirement.
- Parameters
-
[in] | p_i2c_context | pointer to the PAL I2C context pal_i2c_t |
[in] | p_data | Pointer to the data buffer to store the read data |
[in] | length | Length of the data to be read |
- Return values
-
◆ pal_i2c_set_bitrate()
Sets the I2C Master bitrate.
Sets the bitrate/speed(KHz) of I2C master.
- Sets the bitrate of I2C master if the I2C bus is free, else it returns busy status PAL_STATUS_I2C_BUSY
- The bus is released after the setting the bitrate.
- This API must take care of setting the bitrate to I2C master's maximum supported value.
- Eg. In XMC4800, the maximum supported bitrate is 400 KHz. If the supplied bitrate is greater than 400KHz, the API will set the I2C master's bitrate to 400KHz.
- If upper_layer_event_handler is initialized, the upper layer handler is invoked with the respective event status listed below.
- Precondition
-
- Note
-
- Parameters
-
[in] | p_i2c_context | Valid pointer to the PAL I2C context |
[in] | bitrate | Bitrate to be used by I2C master in KHz |
- Return values
-
◆ pal_i2c_write()
LIBRARY_EXPORTS pal_status_t pal_i2c_write |
( |
const pal_i2c_t * |
p_i2c_context, |
|
|
uint8_t * |
p_data, |
|
|
uint16_t |
length |
|
) |
| |
Writes on I2C bus.
Writes the data to I2C slave.
pal_i2c_write()
- The API attempts to write if the I2C bus is free, else it returns busy status PAL_STATUS_I2C_BUSY
- The bus is released only after the completion of transmission or after completion of error handling.
- The API invokes the upper layer handler with the respective event status as explained below.
- Precondition
-
- Note
- Otherwise the below implementation has to be updated to handle different bitrates based on the input context.
- The caller of this API must take care of the guard time based on the slave's requirement.
- The upper_layer_event_handler must be initialized in the p_i2c_context before invoking the API.
- Parameters
-
[in] | p_i2c_context | Valid pointer to the PAL I2C context pal_i2c_t |
[in] | p_data | Pointer to the data to be written |
[in] | length | Length of the data to be written |
- Return values
-