MCUSW
Loading...
Searching...
No Matches
Spi.h File Reference

Introduction

This file contains interface header for SPI MCAL driver.

Go to the source code of this file.

SPI Buffer Definition

#define SPI_IB   (0U)
 Buffer definitions IB - internal buffers.
 
#define SPI_EB   (1U)
 Buffer definitions EB - external buffers. Only this is supported.
 
#define SPI_IB_EB   (2U)
 Buffer definitions IB/EB - internal/external buffers.
 
typedef uint8 Spi_DataBufferType
 Type of application data buffer elements.
 
typedef uint16 Spi_NumberOfDataType
 Type for defining the number of data elements of the type Spi_DataBufferType to send and / or receive by Channel.
 
typedef uint8 Spi_ChannelType
 Specifies the identification (ID) for a Channel.
 
typedef uint16 Spi_JobType
 Specifies the identification (ID) for a Job.
 
typedef uint8 Spi_SequenceType
 Specifies the identification (ID) for a sequence of jobs.
 
typedef uint8 Spi_HWUnitType
 Specifies the identification (ID) for a SPI Hardware micro controller peripheral (unit)
 

SPI Config Ids

The Config Ids used for different SPI Configuration builds

#define SPI_CFG_ID_0   (0x01U)
 Config 0 (All configurations ON), Scaleability level 2)
 
#define SPI_CFG_ID_1   (0x02U)
 Config 1 (All configurations OFF). SPI_CFG_ID_1 is used only for compile check.
 
#define SPI_CFG_ID_2   (0x04U)
 Config 2 (All configurations ON except DET OFF)
 
#define SPI_CFG_ID_3   (0x08U)
 Config 3 (Configurator auto generated file)
 
#define SPI_CFG_ID_4   (0x10U)
 Config 4 (Config is used only by Unit Test, Scaleability level 0)
 
#define SPI_CFG_ID_5   (0x20U)
 Config 5 (Config is used only by Unit Test for DMA

 
#define SPI_CFG_ID_6   (0x40U)
 Config 6 (Config is used only by Unit Test for DMA.
 
#define SPI_CFG_ID_7   (0x80U)
 Config 7 (Performance testing only, level 2, asynch, no DMA)
 
#define SPI_CFG_ID_8   (0x100U)
 Config 8 (Loopback test on different data sizes, level 1, asynch, no DMA)
 
enum  Spi_StatusType { SPI_UNINIT = 0U , SPI_IDLE = 1U , SPI_BUSY = 2U }
 This type defines a range of specific status for SPI Handler/Driver. More...
 
enum  Spi_JobResultType { SPI_JOB_OK = 0U , SPI_JOB_PENDING = 1U , SPI_JOB_FAILED = 2U , SPI_JOB_QUEUED = 3U }
 This type defines a range of specific Jobs status for SPI Handler/Driver. More...
 
enum  Spi_SeqResultType { SPI_SEQ_OK = 0U , SPI_SEQ_PENDING = 1U , SPI_SEQ_FAILED = 2U , SPI_SEQ_CANCELLED = 3U }
 This type defines a range of specific Sequences status for SPI Handler/Driver. More...
 
enum  Spi_HwUnitResultType { SPI_HW_UNIT_OK = 0U , SPI_HW_UNIT_PENDING = 1U , SPI_HW_UNIT_FAILED = 2U }
 This type defines a range of specific HW unit status for SPI Handler/Driver. More...
 
enum  Spi_AsyncModeType { SPI_POLLING_MODE = 0U , SPI_INTERRUPT_MODE = 1U }
 Specifies the asynchronous mechanism mode for SPI busses handled asynchronously in LEVEL 2. More...
 
enum  Spi_TransferType { SPI_MSB = 0U , SPI_LSB = 1U }
 Word transfer order - MSB first or LSB first. More...
 
enum  Spi_LevelType { SPI_LOW = STD_LOW , SPI_HIGH }
 Type for SPI Chip Select Polarity and Clock Idle Level. More...
 
enum  Spi_CsPinType { SPI_CS0 = 0U , SPI_CS1 , SPI_CS2 , SPI_CS3 }
 SPI Chip Select Pin. More...
 
enum  Spi_ClkMode { SPI_CLK_MODE_0 = 0x00U , SPI_CLK_MODE_1 = 0x01U , SPI_CLK_MODE_2 = 0x02U , SPI_CLK_MODE_3 = 0x03U }
 SPI Clock Mode - sets the clock polarity and phase. Note: These values are a direct register mapping. So don't change value. More...
 
enum  Spi_TxRxMode { SPI_TX_RX_MODE_BOTH = 0x00U , SPI_TX_RX_MODE_TX_ONLY = 0x02U }
 SPI TX/RX Mode. More...
 
enum  Spi_JobPriorityType { SPI_JOB_PRIORITY_0 = 0U , SPI_JOB_PRIORITY_1 , SPI_JOB_PRIORITY_2 , SPI_JOB_PRIORITY_3 }
 SPI Job Priority. More...
 
enum  Spi_CsModeType { SPI_SINGLE = 0U , SPI_CONTINUOUS = 1U }
 SPI Chip Select Mode. More...
 
enum  Spi_DataDelayType { SPI_DATADELAY_0 = 0U , SPI_DATADELAY_1 = 1U , SPI_DATADELAY_2 = 2U , SPI_DATADELAY_3 = 3U }
 Spi_DataDelayType defines the number of interface clock cycles between CS toggling and first or last edge of MCSPI clock. More...
 
enum  Spi_DataLineReceiveType { DATA_LINE_0_RECEPTION = 0U , DATA_LINE_1_RECEPTION = 1U }
 Spi_DataLineReceiveType defines the lines selected for reception. More...
 
enum  Spi_DataLineTransmitType { DATA_LINE_NO_TRANSMISSION = 0x3U , DATA_LINE_0_TRANSMISSION = 0x2U , DATA_LINE_1_TRANSMISSION = 0x1U , DATA_LINE_BOTH_TRANSMISSION = 0x0U }
 Spi_DataLineTransmitType defines the lines selected for transmission. More...
 
enum  Mcspi_IrqStatusType { SPI_NO_EVENT = 0U , SPI_EVENT_PENDING = 1U , SPI_STATUS_READ_FAIL = 2U }
 Irq status and std return type. More...
 
typedef void(* Spi_CacheWbInv) (uint8 *BufPtr, uint16 LenByte)
 Cache write-back invalidate function.
 
typedef void(* Spi_CacheWb) (uint8 *BufPtr, uint16 LenByte)
 Cache write-back function.
 
typedef void(* Spi_CacheInv) (uint8 *BufPtr, uint16 LenByte)
 Cache invalidate function.
 
void Spi_Init (const Spi_ConfigType *CfgPtr)
 Service for SPI initialization.
 
Std_ReturnType Spi_DeInit (void)
 Service for SPI de-initialization.
 
Spi_StatusType Spi_GetStatus (void)
 Service returns the SPI Handler/Driver software module status.
 
Spi_JobResultType Spi_GetJobResult (Spi_JobType Job)
 This service returns the last transmission result of the specified Job.
 
Spi_SeqResultType Spi_GetSequenceResult (Spi_SequenceType Sequence)
 This service returns the last transmission result of the specified Sequence.
 
void Spi_GetVersionInfo (Std_VersionInfoType *versioninfo)
 This service returns the version information of this module.
 
Spi_StatusType Spi_GetHWUnitStatus (Spi_HWUnitType HWUnit)
 This service returns the status of the specified SPI Hardware microcontroller peripheral.
 
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.
 
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 parameter.
 
Std_ReturnType Spi_SetupEB (Spi_ChannelType Channel, const Spi_DataBufferType *SrcDataBufferPtr, Spi_DataBufferType *DesDataBufferPtr, Spi_NumberOfDataType Length)
 Service to setup the buffers and the length of data for the EB SPI Handler/Driver Channel specified.
 
Std_ReturnType Spi_AsyncTransmit (Spi_SequenceType Sequence)
 Service to transmit data on the SPI bus.
 
void Spi_Cancel (Spi_SequenceType Sequence)
 Service cancels the specified on-going sequence transmission.
 
Std_ReturnType Spi_SyncTransmit (Spi_SequenceType Sequence)
 Service to transmit data on the SPI bus.
 
Std_ReturnType Spi_SetAsyncMode (Spi_AsyncModeType Mode)
 Service to set the asynchronous mechanism mode for SPI busses handled asynchronously.
 
void Spi_MainFunction_Handling (void)
 This function polls the SPI interrupts linked to HW Units allocated to the transmission of SPI sequences to enable the evolution of transmission state machine.
 
Std_ReturnType Spi_GetDmaHandle (struct Udma_DrvObj *udmaObjPtr)
 Service for getting DMA handle in SPI.
 
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 structure.
 
Std_ReturnType Spi_dataOverflowUnderflowIntrEnable (Spi_HWUnitType HWUnit, uint32 intFlags)
 This function Enable Under/Overflow Interupts of the hardware unit and returns the status.
 
Std_ReturnType Spi_dataOverflowUnderflowIntrDisable (Spi_HWUnitType HWUnit, uint32 intFlags)
 This function Disable Under/Overflow Interupts of the hardware unit and returns the status.
 
Mcspi_IrqStatusType Spi_dataOverflowUnderflowIntrGetStatus (Spi_HWUnitType HWUnit, uint32 intFlags)
 This function status Under/Overflow Interupts of the hardware unit and returns the status.
 
Std_ReturnType Spi_dataOverflowUnderflowIntrStatusClear (Spi_HWUnitType HWUnit, uint32 intFlags)
 This function status clear Under/Overflow Interupts of the hardware unit and returns the status.
 

Data Structures

struct  Spi_ChannelConfigType
 SPI Channel configuration structure. More...
 
struct  Spi_McspiExternalDeviceConfigType
 SPI Job configuration structure specific to McSPI peripheral. More...
 
struct  Spi_ExternalDeviceConfigType
 SPI external device specific configuration structure . More...
 
struct  Spi_JobConfigType
 SPI Job configuration structure. More...
 
struct  Spi_SeqConfigType
 SPI Sequence configuration structure. More...
 
struct  Spi_HwUnitConfigType
 SPI Hardware unit configuration structure. More...
 
struct  Spi_ConfigType
 SPI config structure. More...
 
struct  Spi_ChannelConfigType_PC
 SPI channel config structure parameters Pre-Compile only. More...
 
struct  Spi_JobConfigType_PC
 SPI job config structure parameters Pre-Compile only. More...
 
struct  Spi_SeqConfigType_PC
 SPI sequence config structure parameters Pre-Compile only. More...
 
struct  Spi_RegisterReadbackType
 SPI register readback structure. More...
 

Macros

SPI Driver Module SW Version Info

Defines for SPI Driver version used for compatibility checks

#define SPI_SW_MAJOR_VERSION   (9U)
 Driver Implementation Major Version.
 
#define SPI_SW_MINOR_VERSION   (2U)
 Driver Implementation Minor Version.
 
#define SPI_SW_PATCH_VERSION   (0U)
 Driver Implementation Patch Version.
 
SPI Driver Module AUTOSAR Version Info

Defines for SPI Driver AUTOSAR version used for compatibility checks

#define SPI_AR_RELEASE_MAJOR_VERSION   (4U)
 AUTOSAR Major version specification implemented by SPI Driver.
 
#define SPI_AR_RELEASE_MINOR_VERSION   (3U)
 AUTOSAR Minor version specification implemented by SPI Driver.
 
#define SPI_AR_RELEASE_REVISION_VERSION   (1U)
 AUTOSAR Patch version specification implemented by SPI Driver.
 
SPI Driver ID Info
#define SPI_VENDOR_ID   ((uint16) 44U)
 Texas Instruments Vendor ID.
 
#define SPI_MODULE_ID   ((uint16) 83U)
 SPI Driver Module ID.
 
#define SPI_INSTANCE_ID   ((uint8) 0U)
 SPI Driver Instance ID.
 
SPI Error Codes

Error codes returned by SPI functions

#define SPI_E_PARAM_CHANNEL   ((uint8) 0x0AU)
 API service called with wrong parameter.
 
#define SPI_E_PARAM_JOB   ((uint8) 0x0BU)
 API service called with wrong parameter.
 
#define SPI_E_PARAM_SEQ   ((uint8) 0x0CU)
 API service called with wrong parameter.
 
#define SPI_E_PARAM_LENGTH   ((uint8) 0x0DU)
 API service called with wrong parameter.
 
#define SPI_E_PARAM_UNIT   ((uint8) 0x0EU)
 API service called with wrong parameter.
 
#define SPI_E_PARAM_POINTER   ((uint8) 0x10U)
 APIs called with a Null Pointer.
 
#define SPI_E_UNINIT   ((uint8) 0x1AU)
 API service used without module initiali-zation.
 
#define SPI_E_SEQ_PENDING   ((uint8) 0x2AU)
 Services called in a wrong sequence.
 
#define SPI_E_SEQ_IN_PROCESS   ((uint8) 0x3AU)
 Synchronous transmission service called at wrong time.
 
#define SPI_E_ALREADY_INITIALIZED   ((uint8) 0x4AU)
 API Spi_Init service called while the SPI driver has already been initialized.
 
#define SPI_E_SEQUENCE_NOT_OK   ((uint8) 0x5AU)
 Sequence did not complete successfully.
 
SPI Service Ids

The Service Id is one of the argument to Det_ReportError function and is used to identify the source of the error

#define SPI_SID_INIT   ((uint8) 0x00U)
 Spi_Init() API Service ID.
 
#define SPI_SID_DEINIT   ((uint8) 0x01U)
 Spi_DeInit() API Service ID.
 
#define SPI_SID_WRITE_IB   ((uint8) 0x02U)
 Spi_WriteIB() API Service ID.
 
#define SPI_SID_ASYNC_TRANSMIT   ((uint8) 0x03U)
 Spi_AsyncTransmit() API Service ID.
 
#define SPI_SID_READ_IB   ((uint8) 0x04U)
 Spi_ReadIB() API Service ID.
 
#define SPI_SID_SETUP_EB   ((uint8) 0x05U)
 Spi_SetupEB() API Service ID.
 
#define SPI_SID_GET_STATUS   ((uint8) 0x06U)
 Spi_GetStatus() API Service ID.
 
#define SPI_SID_GET_JOB_RESULT   ((uint8) 0x07U)
 Spi_GetJobResult() API Service ID.
 
#define SPI_SID_GET_SEQ_RESULT   ((uint8) 0x08U)
 Spi_GetSequenceResult() API Service ID.
 
#define SPI_SID_GET_VERSION_INFO   ((uint8) 0x09U)
 Spi_GetVersionInfo() API Service ID.
 
#define SPI_SID_SYNC_TRANSMIT   ((uint8) 0x0AU)
 Spi_SyncTransmit() API Service ID.
 
#define SPI_SID_GET_HW_UNIT_STATUS   ((uint8) 0x0BU)
 Spi_GetHWUnitStatus() API Service ID.
 
#define SPI_SID_CANCEL   ((uint8) 0x0CU)
 Spi_Cancel() API Service ID.
 
#define SPI_SID_SET_ASYNC_MODE   ((uint8) 0x0DU)
 Spi_SetAsyncMode() API Service ID.
 
#define SPI_SID_MAINFUNCTION_HANDLING   ((uint8) 0x10U)
 Spi_MainFunction_Handling() API Service ID.
 
#define SPI_SID_DMA_INIT   ((uint8) 0x20U)
 Spi_GetDmaHandle() API Service ID.
 
#define SPI_MCSPI_FCLK   (48000000U)
 MCSPI functional clock input in Hz. This clock is used to generate the serial clock output after the divider.