148 #include "Std_Types.h" 168 #define SPI_SW_MAJOR_VERSION (1U) 170 #define SPI_SW_MINOR_VERSION (2U) 172 #define SPI_SW_PATCH_VERSION (1U) 182 #define SPI_AR_RELEASE_MAJOR_VERSION (4U) 184 #define SPI_AR_RELEASE_MINOR_VERSION (3U) 186 #define SPI_AR_RELEASE_REVISION_VERSION (1U) 194 #define SPI_VENDOR_ID ((uint16) 44U) 196 #define SPI_MODULE_ID ((uint16) 83U) 198 #define SPI_INSTANCE_ID ((uint8) 0U) 206 #define SPI_UNIT_MCU_MCSPI0 ((Spi_HWUnitType) CSIB0) 208 #define SPI_UNIT_MCU_MCSPI1 ((Spi_HWUnitType) CSIB1) 210 #define SPI_UNIT_MCU_MCSPI2 ((Spi_HWUnitType) CSIB2) 212 #define SPI_UNIT_MCSPI0 ((Spi_HWUnitType) CSIB3) 214 #define SPI_UNIT_MCSPI1 ((Spi_HWUnitType) CSIB4) 216 #define SPI_UNIT_MCSPI2 ((Spi_HWUnitType) CSIB5) 218 #define SPI_UNIT_MCSPI3 ((Spi_HWUnitType) CSIB6) 219 #if defined (SOC_J721E) 221 #define SPI_UNIT_MCSPI4 ((Spi_HWUnitType) CSIB7) 223 #define SPI_UNIT_MCSPI5 ((Spi_HWUnitType) CSIB8) 225 #define SPI_UNIT_MCSPI6 ((Spi_HWUnitType) CSIB9) 227 #define SPI_UNIT_MCSPI7 ((Spi_HWUnitType) CSIB10) 235 #if defined (SOC_AM65XX) 236 #define SPI_HW_UNIT_CNT (7U) 237 #elif defined (SOC_J721E) 238 #define SPI_HW_UNIT_CNT (11U) 250 #define SPI_IB_EB (2U) 285 #ifndef SPI_E_PARAM_CHANNEL 287 #define SPI_E_PARAM_CHANNEL ((uint8) 0x0AU) 289 #ifndef SPI_E_PARAM_JOB 291 #define SPI_E_PARAM_JOB ((uint8) 0x0BU) 293 #ifndef SPI_E_PARAM_SEQ 295 #define SPI_E_PARAM_SEQ ((uint8) 0x0CU) 297 #ifndef SPI_E_PARAM_LENGTH 299 #define SPI_E_PARAM_LENGTH ((uint8) 0x0DU) 301 #ifndef SPI_E_PARAM_UNIT 303 #define SPI_E_PARAM_UNIT ((uint8) 0x0EU) 305 #ifndef SPI_E_PARAM_POINTER 307 #define SPI_E_PARAM_POINTER ((uint8) 0x10U) 311 #define SPI_E_UNINIT ((uint8) 0x1AU) 313 #ifndef SPI_E_SEQ_PENDING 315 #define SPI_E_SEQ_PENDING ((uint8) 0x2AU) 317 #ifndef SPI_E_SEQ_IN_PROCESS 319 #define SPI_E_SEQ_IN_PROCESS ((uint8) 0x3AU) 321 #ifndef SPI_E_ALREADY_INITIALIZED 326 #define SPI_E_ALREADY_INITIALIZED ((uint8) 0x4AU) 328 #ifndef SPI_E_SEQUENCE_NOT_OK 330 #define SPI_E_SEQUENCE_NOT_OK ((uint8) 0x5AU) 343 #define SPI_SID_INIT ((uint8) 0x00U) 345 #define SPI_SID_DEINIT ((uint8) 0x01U) 347 #define SPI_SID_WRITE_IB ((uint8) 0x02U) 349 #define SPI_SID_ASYNC_TRANSMIT ((uint8) 0x03U) 351 #define SPI_SID_READ_IB ((uint8) 0x04U) 353 #define SPI_SID_SETUP_EB ((uint8) 0x05U) 355 #define SPI_SID_GET_STATUS ((uint8) 0x06U) 357 #define SPI_SID_GET_JOB_RESULT ((uint8) 0x07U) 359 #define SPI_SID_GET_SEQ_RESULT ((uint8) 0x08U) 361 #define SPI_SID_GET_VERSION_INFO ((uint8) 0x09U) 363 #define SPI_SID_SYNC_TRANSMIT ((uint8) 0x0AU) 365 #define SPI_SID_GET_HW_UNIT_STATUS ((uint8) 0x0BU) 367 #define SPI_SID_CANCEL ((uint8) 0x0CU) 369 #define SPI_SID_SET_ASYNC_MODE ((uint8) 0x0DU) 371 #define SPI_SID_MAINFUNCTION_HANDLING ((uint8) 0x10U) 381 #define SPI_MCSPI_FCLK (48000000U) 391 #define SPI_CFG_ID_0 (0x01U) 394 #define SPI_CFG_ID_1 (0x02U) 396 #define SPI_CFG_ID_2 (0x04U) 398 #define SPI_CFG_ID_3 (0x08U) 400 #define SPI_CFG_ID_4 (0x10U) 402 #define SPI_CFG_ID_5 (0x20U) 448 #if defined (SOC_J721E) 807 typedef struct Spi_ConfigType_s
839 typedef struct Spi_ChannelConfigType_PC_s
849 typedef struct Spi_JobConfigType_PC_s
863 typedef struct Spi_SeqConfigType_PC_s
869 #if (STD_ON == SPI_REGISTER_READBACK_API) 938 FUNC(Std_ReturnType, SPI_CODE)
Spi_DeInit(
void);
999 Spi_SequenceType Sequence);
1001 #if (STD_ON == SPI_VERSION_INFO_API) 1022 P2VAR(Std_VersionInfoType, AUTOMATIC, SPI_APPL_DATA) versioninfo);
1025 #if (STD_ON == SPI_HW_STATUS_API) 1049 #if ((SPI_CHANNELBUFFERS == SPI_IB) || (SPI_CHANNELBUFFERS == SPI_IB_EB)) 1078 Spi_ChannelType Channel,
1079 P2CONST(Spi_DataBufferType, AUTOMATIC, SPI_APPL_DATA) DataBufferPtr);
1106 Spi_ChannelType Channel,
1107 P2VAR(Spi_DataBufferType, AUTOMATIC, SPI_APPL_DATA) DataBufferPointer);
1110 #if ((SPI_CHANNELBUFFERS == SPI_EB) || (SPI_CHANNELBUFFERS == SPI_IB_EB)) 1142 FUNC(Std_ReturnType, SPI_CODE) Spi_SetupEB(
1143 Spi_ChannelType Channel,
1144 P2CONST(Spi_DataBufferType, AUTOMATIC, SPI_APPL_DATA) SrcDataBufferPtr,
1145 P2VAR(Spi_DataBufferType, AUTOMATIC, SPI_APPL_DATA) DesDataBufferPtr,
1146 Spi_NumberOfDataType Length);
1150 #if ((SPI_SCALEABILITY == SPI_LEVEL_1) || (SPI_SCALEABILITY == \ 1175 #if (STD_ON == SPI_CANCEL_API) 1193 FUNC(
void, SPI_CODE)
Spi_Cancel(Spi_SequenceType Sequence);
1196 #if ((SPI_SCALEABILITY == SPI_LEVEL_0) || (SPI_SCALEABILITY == \ 1217 FUNC(Std_ReturnType, SPI_CODE)
Spi_SyncTransmit(Spi_SequenceType Sequence);
1221 #if (SPI_SCALEABILITY == SPI_LEVEL_2) 1269 #if (STD_ON == SPI_REGISTER_READBACK_API) 1299 Spi_HWUnitType HWUnit,
SPI Sequence configuration structure.
Definition: Spi.h:778
uint8 Spi_SequenceType
Specifies the identification (ID) for a sequence of jobs.
Definition: Spi.h:271
Std_ReturnType Spi_RegisterReadback(Spi_HWUnitType HWUnit, Spi_RegisterReadbackType *RegRbPtr)
This function reads the important registers of the hardware unit and returns the value in the structu...
Spi_SeqEndNotifyType Spi_SequenceEndNotification
Definition: Spi.h:782
Std_ReturnType Spi_SyncTransmit(Spi_SequenceType Sequence)
Service to transmit data on the SPI bus.
Spi_SeqResultType Spi_GetSequenceResult(Spi_SequenceType Sequence)
This service returns the last transmission result of the specified Sequence.
#define SPI_MAX_JOBS
Maximum jobs across all sequence/hwunit.
Definition: Spi_Cfg.h:165
Spi_JobPriorityType jobPriority
Definition: Spi.h:761
Spi_AsyncModeType
Specifies the asynchronous mechanism mode for SPI busses handled asynchronously in LEVEL 2...
Definition: Spi.h:517
Spi_DataLineTransmitType transmissionLineEnable
Definition: Spi.h:738
#define SPI_MAX_CHANNELS_PER_JOB
Maximum channels allowed per job.
Definition: Spi_Cfg.h:156
Spi_StatusType Spi_GetHWUnitStatus(Spi_HWUnitType HWUnit)
This service returns the status of the specified SPI Hardware microcontroller peripheral.
Spi_NumberOfDataType maxBufLength
Definition: Spi.h:686
This file contains ISR function declaration for SPI MCAL driver.
Std_ReturnType Spi_WriteIB(Spi_ChannelType Channel, const Spi_DataBufferType *DataBufferPtr)
Service for writing one or more data to an IB SPI Handler/Driver Channel specified by parameter...
uint8 externalDeviceCfgId
Definition: Spi.h:855
void Spi_GetVersionInfo(Std_VersionInfoType *versioninfo)
This service returns the version information of this module.
Spi_JobResultType
This type defines a range of specific Jobs status for SPI Handler/Driver.
Definition: Spi.h:465
Spi_CsPinType
SPI Chip Select Pin.
Definition: Spi.h:553
Spi_TxRxMode
SPI TX/RX Mode.
Definition: Spi.h:593
uint8 Spi_HWUnitType
Specifies the identification (ID) for a SPI Hardware micro controller peripheral (unit) ...
Definition: Spi.h:277
#define SPI_MAX_HW_UNIT
Maximum HW unit - This should match the sum for the below units ISR which are ON. ...
Definition: Spi_Cfg.h:174
Spi_DataDelayType
Spi_DataDelayType defines the number of interface clock cycles between CS toggling and first or last ...
Definition: Spi.h:632
Std_ReturnType Spi_SetAsyncMode(Spi_AsyncModeType Mode)
Service to set the asynchronous mechanism mode for SPI busses handled asynchronously.
Spi_HWUnitType hwUnitId
Definition: Spi.h:796
uint16 Spi_NumberOfDataType
Type for defining the number of data elements of the type Spi_DataBufferType to send and / or receive...
Definition: Spi.h:262
uint8 Spi_DataBufferType
Type of application data buffer elements.
Definition: Spi.h:256
SPI channel config structure parameters Pre-Compile only.
Definition: Spi.h:839
uint32 clkDivider
Definition: Spi.h:721
uint32 defaultTxData
Definition: Spi.h:684
#define SPI_MAX_JOBS_PER_SEQ
Maximum jobs allowed per sequence.
Definition: Spi_Cfg.h:159
Spi_CsModeType
SPI Chip Select Mode.
Definition: Spi.h:620
uint16 Spi_JobType
Specifies the identification (ID) for a Job.
Definition: Spi.h:268
Spi_SeqResultType
This type defines a range of specific Sequences status for SPI Handler/Driver.
Definition: Spi.h:484
Spi_HwUnitResultType
This type defines a range of specific HW unit status for SPI Handler/Driver.
Definition: Spi.h:501
#define SPI_MAX_CHANNELS
Maximum channels across all jobs/sequence/hwunit.
Definition: Spi_Cfg.h:162
SPI job config structure parameters Pre-Compile only.
Definition: Spi.h:849
SPI sequence config structure parameters Pre-Compile only.
Definition: Spi.h:863
Spi_TransferType transferType
Definition: Spi.h:696
uint32 mcspiRev
Definition: Spi.h:885
uint16 startBitEnable
Definition: Spi.h:731
uint32 mcspiHlSysConfig
Definition: Spi.h:883
SPI Hardware unit configuration structure.
Definition: Spi.h:794
uint8 dataWidth
Definition: Spi.h:681
Spi_ChannelType channelId
Definition: Spi.h:841
Spi_StatusType Spi_GetStatus(void)
Service returns the SPI Handler/Driver software module status.
Spi_CsModeType csMode
Definition: Spi.h:708
Spi_ClkMode clkMode
Definition: Spi.h:727
uint8 maxExtDevCfg
Definition: Spi.h:821
Spi_LevelType csPolarity
Definition: Spi.h:711
Spi_DataLineReceiveType receptionLineEnable
Definition: Spi.h:736
This file contains generated pre compile configuration file for SPI MCAL driver.
#define SPI_MAX_EXT_DEV
Maximum external device cfg.
Definition: Spi_Cfg.h:179
Spi_DataDelayType csIdleTime
Definition: Spi.h:713
Spi_McspiExternalDeviceConfigType mcspi
Definition: Spi.h:747
Std_ReturnType Spi_DeInit(void)
Service for SPI de-initialization.
void Spi_Init(const Spi_ConfigType *CfgPtr)
Service for SPI initialization.
uint8 maxSeq
Definition: Spi.h:815
Spi_LevelType startBitLevel
Definition: Spi.h:734
void Spi_Cancel(Spi_SequenceType Sequence)
Service cancels the specified on-going sequence transmission.
uint8 maxHwUnit
Definition: Spi.h:818
#define SPI_MAX_SEQ
Maximum sequence across all hwunit.
Definition: Spi_Cfg.h:168
Spi_StatusType
This type defines a range of specific status for SPI Handler/Driver.
Definition: Spi.h:418
uint32 channelPerJob
Definition: Spi.h:767
uint8 seqInterruptible
Definition: Spi.h:780
SPI register readback structure.
Definition: Spi.h:874
uint32 jobPerSeq
Definition: Spi.h:784
Spi_ClkMode
SPI Clock Mode - sets the clock polarity and phase. Note: These values are a direct register mapping...
Definition: Spi.h:569
uint32 mcspiHlRev
Definition: Spi.h:879
Spi_HWUnitType hwUnitId
Definition: Spi.h:763
uint32 mcspiSyst
Definition: Spi.h:889
Spi_TxRxMode txRxMode
Definition: Spi.h:729
SPI external device specific configuration structure .
Definition: Spi.h:745
uint8 maxChannels
Definition: Spi.h:809
SPI Job configuration structure specific to McSPI peripheral.
Definition: Spi.h:704
Std_ReturnType Spi_ReadIB(Spi_ChannelType Channel, Spi_DataBufferType *DataBufferPointer)
Service for reading synchronously one or more data from an IB SPI Handler/Driver Channel specified by...
Spi_JobType jobId
Definition: Spi.h:851
SPI Job configuration structure.
Definition: Spi.h:759
Spi_HwUnitType
This type defines a range of HW SPI Hardware microcontroller peripheral allocated to this Job...
Definition: Spi.h:432
Spi_LevelType
Type for SPI Chip Select Polarity and Clock Idle Level.
Definition: Spi.h:542
Spi_JobEndNotifyType Spi_JobEndNotification
Definition: Spi.h:765
Spi_DataLineTransmitType
Spi_DataLineTransmitType defines the lines selected for transmission.
Definition: Spi.h:658
uint32 mcspiSysStatus
Definition: Spi.h:887
Spi_CsPinType csPin
Definition: Spi.h:853
uint32 mcspiHlHwInfo
Definition: Spi.h:881
Spi_JobPriorityType
SPI Job Priority.
Definition: Spi.h:605
Spi_DataLineReceiveType
Spi_DataLineReceiveType defines the lines selected for reception.
Definition: Spi.h:647
uint8 Spi_ChannelType
Specifies the identification (ID) for a Channel.
Definition: Spi.h:265
void Spi_MainFunction_Handling(void)
This function polls the SPI interrupts linked to HW Units allocated to the transmission of SPI sequen...
SPI Channel configuration structure.
Definition: Spi.h:677
Spi_SequenceType seqId
Definition: Spi.h:865
Std_ReturnType Spi_AsyncTransmit(Spi_SequenceType Sequence)
Service to transmit data on the SPI bus.
uint8 channelBufType
Definition: Spi.h:679
uint16 csEnable
Definition: Spi.h:706
Spi_TransferType
Word transfer order - MSB first or LSB first.
Definition: Spi.h:531
Spi_JobResultType Spi_GetJobResult(Spi_JobType Job)
This service returns the last transmission result of the specified Job.
SPI config structure.
Definition: Spi.h:807
uint8 maxJobs
Definition: Spi.h:812