- edited description
LLD for I2C (STM32F4)
Issue #190
new
General Description
The goal of the task is to provide support for I2C driver in the LLD of STM32F4 target.
The related task on the trello board: https://trello.com/c/NDZWA4wF
Required LLD interface
// STANDARD LLD FUNCTIONS (AUTO-GENERATED - can be copied from the other architecture, for example from STM32F7)
extern bool oC_I2C_LLD_IsChannelCorrect( oC_I2C_Channel_t Channel );
extern bool oC_I2C_LLD_IsChannelIndexCorrect( oC_I2C_LLD_ChannelIndex_t ChannelIndex );
extern oC_I2C_LLD_ChannelIndex_t oC_I2C_LLD_ChannelToChannelIndex( oC_I2C_Channel_t Channel );
extern oC_I2C_Channel_t oC_I2C_LLD_ChannelIndexToChannel( oC_I2C_LLD_ChannelIndex_t Channel );
extern oC_I2C_Channel_t oC_I2C_LLD_GetChannelOfModulePin( oC_I2C_Pin_t ModulePin );
oC_ErrorCode_t oC_I2C_LLD_TurnOnDriver( void );
oC_ErrorCode_t oC_I2C_LLD_TurnOffDriver( void );
// I2C specific functions (have to be implemented manual)
extern oC_ErrorCode_t oC_I2C_LLD_ConfigureAsMaster(
oC_I2C_Channel_t Channel ,
oC_I2C_LLD_SpeedMode_t SpeedMode ,
oC_I2C_LLD_AddressMode_t AddressMode ,
oC_Time_t DataHoldTime ,
oC_Time_t DataSetupTime ,
oC_Time_t ClockLowTime ,
oC_Time_t ClockHighTime ,
oC_Frequency_t ClockFrequency ,
oC_I2C_LLD_InterruptSource_t EnabledInterrupts
);
extern oC_ErrorCode_t oC_I2C_LLD_ConfigureAsSlave(
oC_I2C_Channel_t Channel ,
oC_I2C_LLD_SpeedMode_t SpeedMode ,
oC_I2C_LLD_AddressMode_t AddressMode ,
oC_I2C_LLD_Address_t OwnAddress ,
bool GeneralCallEnabled ,
bool ClockStretchingEnabled,
oC_I2C_LLD_InterruptSource_t EnabledInterrupts
);
extern oC_ErrorCode_t oC_I2C_LLD_UnconfigureChannel( oC_I2C_Channel_t Channel );
extern oC_ErrorCode_t oC_I2C_LLD_StartAsMaster( oC_I2C_Channel_t Channel, bool StartForRead, oC_I2C_LLD_Address_t SlaveAddress, oC_MemorySize_t Size );
extern oC_ErrorCode_t oC_I2C_LLD_StopAsMaster ( oC_I2C_Channel_t Channel );
extern oC_ErrorCode_t oC_I2C_LLD_WriteAsMaster( oC_I2C_Channel_t Channel, const uint8_t * Data, oC_MemorySize_t * Size );
extern oC_ErrorCode_t oC_I2C_LLD_ReadAsMaster ( oC_I2C_Channel_t Channel, uint8_t * outData, oC_MemorySize_t * Size );
extern oC_ErrorCode_t oC_I2C_LLD_WriteAsSlave ( oC_I2C_Channel_t Channel, const uint8_t * Data, oC_MemorySize_t * Size );
extern oC_ErrorCode_t oC_I2C_LLD_ReadAsSlave ( oC_I2C_Channel_t Channel, uint8_t * outData, oC_MemorySize_t * Size );
extern oC_ErrorCode_t oC_I2C_LLD_SetInterruptHandler( oC_I2C_LLD_InterruptHandler_t Handler );
extern oC_ErrorCode_t oC_I2C_LLD_ConnectModulePin( oC_I2C_Pin_t ModulePin );
extern oC_ErrorCode_t oC_I2C_LLD_DisconnectModulePin( oC_I2C_Pin_t ModulePin );
Comments (6)
-
reporter -
reporter - edited description
-
reporter - edited description
-
reporter - changed component to I2C-LLD
-
reporter - changed milestone to STM32F429ZIT6U
-
reporter - removed component
Removing component: I2C-LLD (automated comment)
- Log in to comment