4.6. CDD_I2C Module
4.6.1. Acronyms and Definitions
Abbreviation/Term |
Explanation |
---|---|
AUTOSAR |
Automotive Open System Architecture |
I2C |
Inter Integrated Circuit |
BSW |
Basic Software |
MCAL |
Micro Controller Abstraction Layer |
API |
Application Programming Interface |
DET |
Default Error Tracer |
MCU |
Micro Controller Unit |
OS |
Operating System |
4.6.2. Introduction
This document describes the functionality, API and configuration of the AUTOSAR BSW module I2C.
Supported AUTOSAR Release |
4.3.1 |
Supported Configuration Variants |
Pre-Compile |
Vendor ID |
CDD_I2C_VENDOR_ID (44)(TEXAS INSTRUMENTS) |
Module ID |
CDD_I2C_MODULE_ID (255) |
Supported Platform |
AM263Px |
4.6.3. Functional Overview
The I2C component is a proprietary extension of AUTOSAR BSW. The I2C driver was designed similar to the SPI driver specifications and is compatible to AUTOSAR 4.3.1.
4.6.3.1. I2C Driver Architecture
The following figure shows where the I2C is located in the AUTOSAR architecture.

The expected flow for utilization of the driver as per the example application is interrupt registration (only required in case of interrupt mode), I2c driver initialization using Cdd_I2c_Init. Post initialization buffer set up linking is done to point channels to their respective buffers using Cdd_I2c_SetupEB and for writing data to slaves Cdd_I2c_AsyncTransmit() is used in both polling as well as interrupt mode.
For reception of data from I2c slaves Cdd_I2c_AsyncTransmit() can be used in interrupt mode. If polling mode is being used, use Cdd_I2c_PollingModeProcessing() and after these functional calls call Cdd_I2c_MainFunction to process any sequence in the queue and update the status of the queue to real time value.
4.6.3.2. Initialization
The driver I2C is initialized by calling Cdd_I2c_Init () with a null pointer passed as argument. To re-initialize the driver call I2c_DeInit () and then I2c_Init () again. Only pre-compile variant is supported for the driver, hence all configuration related parameters are provided through the GUI. The service for de-initialization is provided with the function Cdd_I2c_DeInit ().
4.6.3.3. States
I2C maintains states for:
Driver
CDD_I2C_UNINIT
Driver is uninitialized
Cdd_I2c_Init () has not been called or Cdd_I2c_DeInit () has been called after initialization
CDD_I2C_IDLE
Driver is currently free, not in the middle of any transmission/reception process
CDD_I2C_BUSY
Driver is currently in use, transmission/reception in process
The state for I2c driver is returned with Cdd_I2c_GetStaus() function call.
Channels:-
CDD_I2C_CH_RESULT_OK
Channel transmission/reception not yet started
Channel transmission/reception successful
CDD_I2C_CH_RESULT_NOT_OK
Channel transmission/reception is not OK
CDD_I2C_CH_RESULT_IN_PROGRESS
Channel transmission/reception currently in progress
CDD_I2C_CH_RESULT_BUS_FAIL
Channel transmission/reception failed due to bus fault
CDD_I2C_CH_RESULT_ARBFAIL
Channel transmission/reception failed due to arbitration loss
CDD_I2C_CH_RESULT_NACKFAIL
Channel transmission/reception failed due to no acknowledge
The channel status is returned with Cdd_I2c_GetResult() function call. In case incorrect channel ID is passed a DET error occur
Sequences:-
CDD_I2C_SEQ_OK
Sequence transmission/reception not yet started
Sequence transmission/reception successful
CDD_I2C_SEQ_NOT_OK
Sequence transmission/reception in not OK
CDD_I2C_SEQ_PENDING
Sequence transmission/reception in progress
CDD_I2C_SEQ_QUEUED
Sequence queued
CDD_I2C_SEQ_NACK
Sequence failed due to no acknowledge
CDD_I2C_SEQ_FAILED
Sequence transmission/reception failed
CDD_I2C_SEQ_CANCELLED
Sequence cancelled
The sequence status is returned with Cdd_I2c_GetSequenceResult
Hardware Units:-
CDD_I2C_HW_UNIT_FREE
Hardware Unit not in use
CDD_I2C_HW_UNIT_BUSY
Hardware Unit busy
4.6.4. Hardware Features
On AM263Px platform, there are 4 I2C instances I2C0, I2C1, I2C2 and I2C3 each consisting of 25 registers for control, data transmission and reception.
4.6.4.1. Supported Features
Configurable Development error (Software supported)
Configurable No acknowledgement error check (Software supported)
Configurable Arbitration loss error check (Software supported)
Polling mode (Software supported)
Interrupt mode (Software supported)
Configurable multiple sequence in queue check (Software supported)
Configurable arbitration loss parameter (Software supported)
Configurable timeouts for reception, arbitration loss and queue (Software supported)
Configurable queue size (Software supported)
Configurable sequence size (Software supported)
Configurable channel size (Software supported)
Configurable data length (Software supported)
Configurable Hardware units (Hardware supported)
Configurable Channels (Software supported)
Configurable Sequences (Software supported)
Shareable channels (Software supported)
Channel in use checks (Software supported)
Sequence in use checks (Software supported)
Hardware unit in use checks (Software supported)
7 and 10 bit address schemes (Hardware supported)
4.6.4.1.1. Configurable Development Error
User configurable error check to report development errors.
Blocking error
4.6.4.1.2. Configurable No Acknowledgement Error Check
User configurable check to treat a no acknowledgement condition as a development error
Applicable only when AM263Px is in master receiving mode
4.6.4.1.3. Configurable Arbitration Loss Error Check
User configurable check to treat an arbitration loss condition as a development error.
Applicable in both master receive and master transmit mode for AM263Px
4.6.4.1.4. Configurable Multiple Sequences in Queue Check
User configurable check to process the same sequence multiple times or only once inside the queue
4.6.4.1.5. Configurable Arbitration Loss Parameter
User configurable parameter to deal with arbitration loss condition
Possible parameters
CDD_I2C_BURST_MODE
I2c driver detaches from the bus without any recovery attempts.
CDD_I2C_RECURRENT_MODE
I2c driver sends multiple stop signals on the bus in an attempt to free the bus and recover control.

4.6.4.1.6. Configurable Timeouts
User configurable timeout for queue, reception in polling mode and arbitration loss
All the timeout periods are in ticks
It is user responsibility to initialize and start the timer in the application for timeouts to take effect
Note
CddI2cQueueTimeout parameter Value should be passed as number of ticks according to clock frequency. The clock source have changed from RTI timers which used 200MHz clock frequency to R5f timers which uses 400MHz clock frequency, so the timeout values need to be configured accordingly.
4.6.4.1.7. Configurable Queue, Sequence and Channel Size
User configurable maximum size for Sequence, Queue and Channel
4.6.4.1.8. Configurable Hardware Units
User configurable parameter to define how many Hardware Units (Instances) to use out of a maximum of 4
User configurable parameter to specify which Hardware Unit to use
User configurable parameter to specify Serial clock frequency (Channel bit rate)
User configurable parameter to specify the frequency at which the Hardware Unit will operate internally
User configurable input frequency to I2c module which will be used to set channel bit rate and I2c internal operational frequency. Please note that this frequency should be the same as the clock source selected in MCU module, this has to be maintained by the user.

4.6.4.1.9. Configurable Channels
User configurable parameter to define channel direction (read or write), I2c Slave address, address scheme (7 bit slave address or 10 bit slave address) and chained channel implementation.
A channel is the actual unit which contains the data to be transmitted along with direction(read/write) and slave address.
The number of channels configured can not exceed the maximum number of channels defined in the general container.
Data buffer is linked to channels in the application by provided API’s
Same channels can be used by multiple sequences

4.6.4.1.10. Configurable Sequences
User configurable parameter to define which Hardware unit to use, number of channels present in the sequence, sequence complete callback function and sequence error notify callback function
Sequences are accessible to the user and are passed as function parameters for transmission and reception

4.6.4.1.11. Channel in Use Checks
Channels in free state, i.e. not currently being transmitted by another sequence or the same sequence are available for transmission/reception
4.6.4.1.12. Sequence in Use Checks
Sequence not in transmission currently are available for use.
4.6.4.1.13. Hardware Unit in Use Checks
Hardware not in use, i.e. currently not transmitting/receiving any sequence is available for use.
4.6.4.2. Features Provided Beyond the AUTOSAR Standard
Hardware configuration unit container to handle different hardware units
Hardware configuration unit container to handle transfer speeds and hardware unit mapping. Parallel sequence and channel processing on different hardware units. Configure acknowledge and no acknowledge handling (ACK, NACK). Configurable addressing for standard (7bit) and extended (10bit) addresses.
I2C chain channel feature.
I2C sequence queuing feature.
I2C support for parallel handling of hardware units if more than one is available.
I2C improved error handling like:
Handling for SDA stuck scenario
Handling for SCL low held scenario
Handling for general communication timeout
4.6.4.3. Not supported Features
Multi master mode (Software limitation)
DMA mode (Software limitation)
4.6.5. Source files
Description of static files is provided below:
📦AM263Px
┣ 📂build
┣ 📂mcal
┃ ┣ 📂I2c
┃ ┃ ┣ 📂include
┃ ┃ ┃ ┣ 📜Cdd_I2c.h : Header file that contains all API relevant declarations
┃ ┃ ┃ ┗ 📜Cdd_I2c_Irq.h : Contains the declarations of the ISR handlers
┃ ┃ ┣ 📂src
┃ ┃ ┃ ┣ 📜Cdd_I2c.c : Source file that contains the API relevant implementation
┃ ┃ ┃ ┗ 📜Cdd_I2c_Irq.c : Contains the ISR implementation
┃ ┃ ┣ 📂V0
┃ ┃ ┃ ┣ 📜Cdd_I2c_hw_reg.h : Contains register offsets, mask values, shift values and specific bit set reset macros
┃ ┃ ┃ ┣ 📜Cdd_I2c_priv.c : Contains internal function definitions used to realize the driver
┃ ┃ ┃ ┗ 📜Cdd_I2c_priv.h : Contains internal function declarations used to realize the driver
┃ ┃ ┗ 📜Makefile
┣ 📂mcal_config
┣ 📂mcal_docs
┗ 📜README.txt
Description of generated files is provided below:
Plugin Files |
Description |
---|---|
Cdd_I2c_Cfg.h |
This file contains general container configuration parameters like DET error ON, Polling mode OFF, Sequence size, Queue size, Channel size etc. |
Cdd_I2c_Cfg.c |
Contains all channels Post-Build Configuration parameters |
The below diagram shows the files structure for the I2C driver.

4.6.6. Module requirements
4.6.6.1. Memory Mapping
The objects (e.g. variables, functions, constants) are declared by compiler independent definitions – the compiler abstraction definitions. Each compiler abstraction definition is assigned to a memory section. The following table contains the memory section names and the compiler abstraction definitions of the I2C and illustrates their assignment among each other.
Memory Mapping Sections |
I2C_CODE |
I2C_VAR1 |
I2C_VAR_NO_INIT |
I2C_VAR_INIT |
CDD_VAR_ZERO_INIT |
I2C_CONST |
I2C_PBCFG |
I2C_APPL_CODE |
I2C_APPL_DATA |
---|---|---|---|---|---|---|---|---|---|
I2C_START_SEC_CODE |
x |
||||||||
I2C_STOP_SEC_CODE |
x |
||||||||
I2C_START_SEC_CODE_ISR |
x |
||||||||
I2C_STOP_SEC_CODE_ISR |
x |
||||||||
I2C_START_SEC_PBCFG_ROOT |
x |
||||||||
I2C_STOP_SEC_PBCFG_ROOT |
x |
||||||||
I2C_START_SEC_PBCFG |
x |
||||||||
I2C_STOP_SEC_PBCFG |
x |
||||||||
I2C_START_SEC_CONST_32BIT (.text) |
x |
||||||||
I2C_STOP_SEC_CONST_32BIT |
x |
||||||||
I2C_START_SEC_CONST_UNSPECIFIED |
x |
||||||||
I2C_STOP_SEC_CONST_UNSPECIFIED |
x |
||||||||
I2C_START_SEC_VAR_NOINIT_UNSPECIFIED |
x |
||||||||
I2C_STOP_SEC_VAR_NOINIT_UNSPECIFIED |
x |
||||||||
I2C_START_SEC_VAR_INIT_UNSPECIFIED |
x |
||||||||
I2C_STOP_SEC_VAR_INIT_UNSPECIFIED |
x |
||||||||
I2C_START_SEC_VAR_ZERO_INIT_UNSPECIFIED |
x |
||||||||
I2C_STOP_SEC_VAR_ZERO_INIT_UNSPECIFIED |
x |
||||||||
Application buffers passed to I2C |
x |
||||||||
Notification called from I2C |
x |
4.6.6.2. Scheduling
4.6.6.2.1. SchM (Optional)
Beside the OSEK / AUTOSAR OS the Schedule Manager provides functions that module I2C calls at begin and end of critical sections
4.6.6.3. Error handling
4.6.6.3.1. Development Error Reporting
By default, development errors are reported to the DET using the service Det_ReportError (), If development error reporting is enabled (i.e. precompile parameter CDD_I2C_DEV_ERROR_DETECT==STD_ON). If another module is used for development error reporting, the function prototype for reporting the error can be configured by the integrator, but must have the same signature as the service Det_ReportError (). The reported I2C ID is 255
4.6.6.4. Error codes
Will be updated in future release:
4.6.6.4.1. Services used by I2C driver
Service ID |
Service |
---|---|
0x00 |
CDD_I2C_Init |
0x01 |
CDD_I2c_DeInit |
0x02 |
CDD_I2c_GetVersionInfo |
0x03 |
CDD_I2c_SetupEB |
0x04 |
CDD_I2c_SetupEBDynamic |
0x05 |
CDD_I2c_AsyncTransmit |
0x06 |
CDD_I2c_Cancel |
0x07 |
CDD_I2c_GetResult |
0x08 |
CDD_I2c_GetSequenceResult |
0x09 |
CDD_I2c_MainFunction |
0x0A |
CDD_2c_PollingModeProcessing |
0x0B |
Cdd_I2c_SetHandling |
4.6.7. Used resources
4.6.7.1. Interrupt Handling
Will be updated in future release:
4.6.8. Integration description
4.6.8.1. Dependent modules
4.6.8.1.1. DET
The module I2C depends on the DET (by default) in order to report development errors. Detection and reporting of development errors can be enabled or disabled by the switch “Enable Development Error Detection” on the “General” container within the module I2C. The DET can be replaced optionally by an equivalent component which is responsible to recognize development errors, if no DET component is available.
4.6.8.1.2. MCU
The module MCU powers up the microcontroller’s peripherals at startup time and initializes clock source. Since the peripherals are also containing the registers for I/O functionality they have to be activated if it is intended to use them.
4.6.8.1.3. PORT
The module PORT enables the I2C lines at startup time. To operate the I2C properly, the PORT driver has to be configured. The PORT driver sets the Pins to the required values for the I2C to operate. The Pins used are SDA (serial data line) and SCL (serial clock). An open drain configuration is recommended. Some I2C drivers require the PORT for switching from I2C functionality to DIO functionality – to use the “clock free” procedure - and back.
4.6.8.1.4. Configurable callback functions
4.6.8.1.4.1. Notifications
At its configurable interfaces the I2C defines notifications that can be mapped to callback functions in case completion of a sequence or failure of a sequence. The mapping is not statically defined by the I2C but can be performed at configuration time.
4.6.8.1.4.2. I2c_SequenceCompleteNotification
Sequence transfer successful notification function. Can be configured in the configuration tool.
Particularities and Limitations: It is advised to keep the code execution in the notification function as short as possible.
Call context: Interrupt as well as polling
4.6.8.1.4.3. I2c_SequenceErrorNotification
Sequence transfer error notification function. If the I2c detects an error, this function notifies the application about a communication failure. Can be configured in the configuration tool.
Particularities and Limitations: It is advised to keep the code execution in the notification function as short as possible.
Call context: Interrupt as well as polling
For the Following API’s it is possible to be called from the sequence notifications:
Cdd_I2c_DeInit
Cdd_I2c_GetVersionInfo
Cdd_I2c_SetupEB
Cdd_I2c_SetupEBDynamic
Cdd_I2c_AsyncTransmit
CDD_I2c_Cancel
Cdd_I2c_GetResult
Cdd_I2c_GetSequenceResult
Cdd_I2c_MainFunction
Cdd_I2c_PollingModeProcessing
Cdd_I2c_SetHandling
Cdd_I2c_GetStatus
4.6.8.2. Multi-core and Resource allocator
Not Supported
4.6.9. Configuration
4.6.9.1. Configuration Parameters
Parameter |
Description |
Default Value |
Range |
Unit |
---|---|---|---|---|
CddI2cDevErrorDetect |
I2c Dev Error ON/OFF |
TRUE |
TRUE\FALSE |
BOOLEAN |
CddI2cUseInterrupts |
Switches to activate or deactivate interrupt controlled job processing(ON/OFF) |
FALSE |
TRUE\FALSE |
BOOLEAN |
CddI2cVersionInfoApi |
Pre-processor switch to enable/disable the API to read out the modules version information |
TRUE |
TRUE\FALSE |
BOOLEAN |
CddI2cArbitrationLossCheck |
Switches to activate or deactivate Arbitration loss interrupt(ON/OFF) |
FALSE |
TRUE\FALSE |
BOOLEAN |
CddI2cNackAsErrorCheck |
Switches to activate or deactivate NACK error check(ON/OFF) |
FALSE |
TRUE\FALSE |
BOOLEAN |
CddI2cCancelCheck |
Switches to activate or deactivate the Cancel channel transmission API(ON/OFF) |
FALSE |
TRUE\FALSE |
BOOLEAN |
CddI2cStatusCheck |
Switches to activate or deactivate Cdd_I2c_GetStatus API(ON/OFF) |
FALSE |
TRUE\FALSE |
BOOLEAN |
CddI2cMultipleSequenceInQueueProcessCheck |
Switches to activate or deactivate functionality to process same sequence in queue multiple times (ON/OFF) |
FALSE |
TRUE\FALSE |
BOOLEAN |
CddI2cArbitrationLossParam |
CDD_I2C Arbitration loss condition parameter, possible values are CDD_I2C_BURST_MODE (for detaching from bus) or CDD_I2C_RECURRENT_MODE (For sending 9 clock pulses to the slave in order to synchronize the bus) |
CDD_I2C_BURST_MODE |
CDD_I2C_BURST_MODE CDD_I2C_RECURRENT_MODE |
ENUMERATION |
CddIrqType |
Type of Isr function: void functionname(void) CAT1 : interrupt void func(void) CAT2 : ISR(func) |
CDD_I2C_ISR_VOID |
CDD_I2C_ISR_VOID CDD_I2C_ISR_CAT1 CDD_I2C_ISR_CAT2 |
ENUMERATION |
CddI2cOsCounterRef |
This parameter contains a reference to the OsCounter, which is used by the CddI2c driver |
ASPathDataOfSchema:/AUTOSAR/EcucDefs/Os/OsCounter |
ASPathDataOfSchema:/AUTOSAR/EcucDefs/Os/OsCounter |
REFERENCE |
CddI2cDefaultOSCounterId |
Default Os Counter Id if node reference to OsCounter ref CddI2cOsCounterRef is not set |
0 |
0-16 |
INTEGER |
CddI2cArbitrationLossTimeout |
I2C timeout - used for timing I2C arbitration loss wait wait |
1000 |
1 - 4294967295 |
INTEGER |
CddI2cPollTimeout |
I2C timeout - used for I2C polling timeouts |
1000 |
1 - 4294967295 |
INTEGER |
CddI2cQueueTimeout |
I2C timeout - used for queue timeouts. Unit is in clock ticks. Configure the timeout according to r5f clock frequency(400MHz/200MHz) |
1000 |
1 - 4294967295 |
INTEGER |
CddI2cQueueSize |
Define I2c driver max queue size |
10 |
0 - 255 |
INTEGER |
CddI2cMaxlengthByte |
Maximum Length of byte to be write or read |
1 |
0 - 255 |
INTEGER |
CddI2cHwUnitsUsed |
Maximum number of I2c hardware units used |
1 |
1 to 4 |
INTEGER |
CddI2cHwUnitType |
I2c HW unit to use |
CDD_I2C_HW_UNIT_0 |
CDD_I2C_HW_UNIT_0 CDD_I2C_HW_UNIT_1 CDD_I2C_HW_UNIT_2 CDD_I2C_HW_UNIT_3 |
ENUMERATION |
CddI2cChannelBitRate |
Selection of Channel Bit Rate |
CDD_I2C_100KHZ |
CDD_I2C_100KHZ CDD_I2C_400KHZ CDD_I2C_1P0MHZ CDD_I2C_3P4MHZ |
ENUMERATION |
CddI2cHwUnitFrequency |
Frequency which the HW unit will utilise, please note that this differs from the bus frequency used for communication |
96000000 |
NA |
INTEGER |
CddI2cClkInputSrc |
Please ensure that the frequency used here should be the same as mcu clk settings for I2c, as this is required internally to calculate pre-scalar which is needed to set the bus frequency |
200000000 |
0 - 4294967295 |
INTEGER |
CddI2cChannelDirection |
Selection of Channel direction |
CDD_I2C_WRITE |
CDD_I2C_WRITE CDD_I2C_READ |
ENUMERATION |
CddI2cChannelSlaveAddress |
Set slave address for channel |
50 |
0 - 65535 |
INTEGER |
I2cSlaveAddressScheme |
Specifies whether channel is 7 bit or 10 bit |
CDD_I2C_7_BIT_ADDRESS |
CDD_I2C_7_BIT_ADDRESS CDD_I2C_10_BIT_ADDRESS |
ENUMERATION |
CddI2cSequenceHwUnitType |
I2c HW unit to use |
CDD_I2C_HW_UNIT_0 |
CDD_I2C_HW_UNIT_0 CDD_I2C_HW_UNIT_1 CDD_I2C_HW_UNIT_2 CDD_I2C_HW_UNIT_3 |
ENUMERATION |
CddI2cNumberOfChannelsInSequence |
Set the number of channels in the sequence |
1 |
1 - 255 |
INTEGER |
CddI2cSequenceCompleteNotify |
Function pointer to callback function sequence complete notify |
NA |
NA |
FUNCTION |
CddI2cSequenceErrorNotify |
Function pointer to callback function sequence complete notify |
NA |
NA |
FUNCTION |
I2cChannelIndex |
This parameter specifies the order of Channels within the Sequence. |
NA |
0 - 255 |
INTEGER |
I2cChannelAssignment |
A Sequence reference to a I2c channel |
ASPathDataOfSchema:/AUTOSAR/EcucDefs/Cdd_I2c/CddI2cChannelConfig |
ASPathDataOfSchema:/AUTOSAR/EcucDefs/Cdd_I2c/CddI2cChannelConfig |
REFERENCE |
4.6.10. Examples
The example applications demonstrates use of I2C module, the list below identifies key steps performed in the example.
4.6.10.1. Overview
Will be updated in future release:
4.6.10.2. Setup required to run example
Will be updated in future release:
4.6.10.3. How to run examples
I2C example application demonstrating the MCAL I2C driver features is in folder <MCAL_ROOT>/examples /I2C.
This application can be built from the root folder by giving “gmake -s I2c_app PLATFORM=am263px”.
4.6.10.4. Sample Log
I2cApp: Sample Application - STARTS !!!
I2cApp: gI2cAppMcuClockConfig[0].Mcu_ClockSourceId = 2 gI2cAppMcuClockConfig[0].Mcu_ClockDiv = 0 :
I2cApp: Vendor ID: 44
I2cApp: Module ID: 255
I2cApp: SW Major version ID: 10
I2cApp: SW Minor version ID: 0
I2cApp: SW Patch version ID: 0
I2cApp: Temperature write SuccessFull
I2cApp: Message written to EEPROM: I2C read/write test passed
I2cApp: EEPROM address pointer reset to start read from location : 0
I2cApp: Temperature sensor reading : 38.500000 (celcius)
I2cApp: Message read from EEPROM: I2C read/write test passed
All tests have passed
4.6.10.5. File Structure
📦AM263Px
┣ 📂build
┣ 📂mcal
┃ ┣ 📂examples
┃ ┃ ┣ 📂I2c
┃ ┃ ┃ ┣ 📂soc
┃ ┃ ┃ ┣ 📜I2capp.c : Contains I2c test example
┃ ┃ ┃ ┗ 📜Makefile
┃ ┣ 📂examples_config
┃ ┃ ┣ 📂I2c_Demo_Cfg
┃ ┃ ┃ ┗ 📂soc
┃ ┃ ┃ ┃ ┣ 📂am263px
┃ ┃ ┃ ┃ ┃ ┗ 📂r5f0_0
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📂include
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗📜Cdd_I2c_Cfg.h : Contains the configuration parameters
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂src
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜Cdd_I2c_Cfg.c : Contains all Pre-Compile Configured parameters
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📂swcd
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜Cdd_I2c_Bswmd.arxml : contains the arxml description file
┃ 📂mcal_config
┃ 📂mcal_docs
┗ 📜README.txt
4.6.10.6. Test Report
Please refer AM26x CDD I2c Driver Test Case Report as part of CSP provided in the release package.