 |
AM62D FreeRTOS SDK
11.02.00
|
|
Go to the documentation of this file.
61 #include <drivers/hw_include/csl_types.h>
62 #include <drivers/hw_include/cslr_mcspi.h>
63 #include <drivers/hw_include/cslr.h>
65 #if defined (DMA_VERSION_MCSPI_UDMA)
69 #if defined (DMA_VERSION_MCSPI_EDMA)
70 #include <drivers/mcspi/v0/dma/edma/mcspi_dma_edma.h>
81 #define MCSPI_MAX_TIMEOUT_VALUE (1000000000U)
95 #define MCSPI_CHANNEL_0 (0U)
96 #define MCSPI_CHANNEL_1 (1U)
97 #define MCSPI_CHANNEL_2 (2U)
98 #define MCSPI_CHANNEL_3 (3U)
109 #define MCSPI_OPER_MODE_POLLED (0U)
110 #define MCSPI_OPER_MODE_INTERRUPT (1U)
111 #define MCSPI_OPER_MODE_DMA (2U)
115 #define MCSPI_MAX_NUM_CHANNELS (4U)
125 #define MCSPI_TRANSFER_COMPLETED (0U)
126 #define MCSPI_TRANSFER_STARTED (1U)
127 #define MCSPI_TRANSFER_CANCELLED (2U)
128 #define MCSPI_TRANSFER_FAILED (3U)
129 #define MCSPI_TRANSFER_CSN_DEASSERT (4U)
130 #define MCSPI_TRANSFER_TIMEOUT (5U)
152 #define MCSPI_TRANSFER_MODE_BLOCKING (0U)
157 #define MCSPI_TRANSFER_MODE_CALLBACK (1U)
176 #define MCSPI_MS_MODE_MASTER (CSL_MCSPI_MODULCTRL_MS_MASTER)
178 #define MCSPI_MS_MODE_SLAVE (CSL_MCSPI_MODULCTRL_MS_SLAVE)
195 #define MCSPI_FF_POL0_PHA0 (0U)
196 #define MCSPI_FF_POL0_PHA1 (1U)
197 #define MCSPI_FF_POL1_PHA0 (2U)
198 #define MCSPI_FF_POL1_PHA1 (3U)
210 #define MCSPI_CS_POL_HIGH (CSL_MCSPI_CH0CONF_EPOL_ACTIVEHIGH)
212 #define MCSPI_CS_POL_LOW (CSL_MCSPI_CH0CONF_EPOL_ACTIVELOW)
221 #define MCSPI_TR_MODE_TX_RX (CSL_MCSPI_CH0CONF_TRM_TRANSRECEI)
222 #define MCSPI_TR_MODE_RX_ONLY (CSL_MCSPI_CH0CONF_TRM_RECEIVONLY)
223 #define MCSPI_TR_MODE_TX_ONLY (CSL_MCSPI_CH0CONF_TRM_TRANSONLY)
233 #define MCSPI_IS_D0 (CSL_MCSPI_CH0CONF_IS_LINE0)
235 #define MCSPI_IS_D1 (CSL_MCSPI_CH0CONF_IS_LINE1)
245 #define MCSPI_DPE_ENABLE (CSL_MCSPI_CH0CONF_DPE0_ENABLED)
247 #define MCSPI_DPE_DISABLE (CSL_MCSPI_CH0CONF_DPE0_DISABLED)
256 #define MCSPI_SLV_CS_SELECT_0 (CSL_MCSPI_CH0CONF_SPIENSLV_SPIEN0)
257 #define MCSPI_SLV_CS_SELECT_1 (CSL_MCSPI_CH0CONF_SPIENSLV_SPIEN1)
258 #define MCSPI_SLV_CS_SELECT_2 (CSL_MCSPI_CH0CONF_SPIENSLV_SPIEN2)
259 #define MCSPI_SLV_CS_SELECT_3 (CSL_MCSPI_CH0CONF_SPIENSLV_SPIEN3)
269 #define MCSPI_SB_POL_HIGH (CSL_MCSPI_CH0CONF_SBPOL_HIGHLEVEL)
271 #define MCSPI_SB_POL_LOW (CSL_MCSPI_CH0CONF_SBPOL_LOWLEVEL)
283 #define MCSPI_TCS0_0_CLK (CSL_MCSPI_CH0CONF_TCS0_ZEROCYCLEDLY)
285 #define MCSPI_TCS0_1_CLK (CSL_MCSPI_CH0CONF_TCS0_ONECYCLEDLY)
287 #define MCSPI_TCS0_2_CLK (CSL_MCSPI_CH0CONF_TCS0_TWOCYCLEDLY)
289 #define MCSPI_TCS0_3_CLK (CSL_MCSPI_CH0CONF_TCS0_THREECYCLEDLY)
302 #define MCSPI_CH_MODE_SINGLE (CSL_MCSPI_MODULCTRL_SINGLE_SINGLE)
304 #define MCSPI_CH_MODE_MULTI (CSL_MCSPI_MODULCTRL_SINGLE_MULTI)
317 #define MCSPI_PINMODE_3PIN (CSL_MCSPI_MODULCTRL_PIN34_3PINMODE)
318 #define MCSPI_PINMODE_4PIN (CSL_MCSPI_MODULCTRL_PIN34_4PINMODE)
330 #define MCSPI_INITDLY_0 (CSL_MCSPI_MODULCTRL_INITDLY_NODELAY)
332 #define MCSPI_INITDLY_4 (CSL_MCSPI_MODULCTRL_INITDLY_4CLKDLY)
334 #define MCSPI_INITDLY_8 (CSL_MCSPI_MODULCTRL_INITDLY_8CLKDLY)
336 #define MCSPI_INITDLY_16 (CSL_MCSPI_MODULCTRL_INITDLY_16CLKDLY)
338 #define MCSPI_INITDLY_32 (CSL_MCSPI_MODULCTRL_INITDLY_32CLKDLY)
341 #define MCSPI_ERROR_TX_UNDERFLOW (0x00000001U)
342 #define MCSPI_ERROR_RX_OVERFLOW (0x00000002U)
864 #define MCSPI_FIFO_LENGTH (64U)
868 #define MCSPI_RX_FIFO_ENABLE ((uint32_t) CSL_MCSPI_CH0CONF_FFER_FFENABLED \
870 CSL_MCSPI_CH0CONF_FFER_SHIFT)
875 #define MCSPI_RX_FIFO_DISABLE ((uint32_t) CSL_MCSPI_CH0CONF_FFER_FFDISABLED \
876 << CSL_MCSPI_CH0CONF_FFER_SHIFT)
881 #define MCSPI_TX_FIFO_ENABLE ((uint32_t) CSL_MCSPI_CH0CONF_FFEW_FFENABLED \
882 << CSL_MCSPI_CH0CONF_FFEW_SHIFT)
887 #define MCSPI_TX_FIFO_DISABLE ((uint32_t) CSL_MCSPI_CH0CONF_FFEW_FFDISABLED \
888 << CSL_MCSPI_CH0CONF_FFEW_SHIFT)
893 #define MCSPI_REG_OFFSET (0x14U)
895 #define MCSPI_CHCONF(x) ((uint32_t) CSL_MCSPI_CH0CONF + \
896 (uint32_t) ((uint32_t) MCSPI_REG_OFFSET * \
899 #define MCSPI_CHSTAT(x) ((uint32_t) CSL_MCSPI_CH0STAT + \
900 (uint32_t) ((uint32_t) MCSPI_REG_OFFSET * \
903 #define MCSPI_CHCTRL(x) ((uint32_t) CSL_MCSPI_CH0CTRL + \
904 (uint32_t) ((uint32_t) MCSPI_REG_OFFSET * \
907 #define MCSPI_CHTX(x) ((uint32_t) CSL_MCSPI_TX0 + \
908 (uint32_t) ((uint32_t) MCSPI_REG_OFFSET * \
911 #define MCSPI_CHRX(x) ((uint32_t) CSL_MCSPI_RX0 + \
912 (uint32_t) ((uint32_t) MCSPI_REG_OFFSET * \
915 #define MCSPI_CLKD_MASK (0x0FU)
918 #define MCSPI_IRQSTATUS_CLEAR_ALL (CSL_MCSPI_IRQSTATUS_EOW_MASK | \
919 CSL_MCSPI_IRQSTATUS_WKS_MASK | \
920 CSL_MCSPI_IRQSTATUS_RX3_FULL_MASK | \
921 CSL_MCSPI_IRQSTATUS_TX3_UNDERFLOW_MASK | \
922 CSL_MCSPI_IRQSTATUS_TX3_EMPTY_MASK | \
923 CSL_MCSPI_IRQSTATUS_RX2_FULL_MASK | \
924 CSL_MCSPI_IRQSTATUS_TX2_UNDERFLOW_MASK | \
925 CSL_MCSPI_IRQSTATUS_TX2_EMPTY_MASK | \
926 CSL_MCSPI_IRQSTATUS_RX1_FULL_MASK | \
927 CSL_MCSPI_IRQSTATUS_TX1_UNDERFLOW_MASK | \
928 CSL_MCSPI_IRQSTATUS_TX1_EMPTY_MASK | \
929 CSL_MCSPI_IRQSTATUS_RX0_OVERFLOW_MASK | \
930 CSL_MCSPI_IRQSTATUS_RX0_FULL_MASK | \
931 CSL_MCSPI_IRQSTATUS_TX0_UNDERFLOW_MASK | \
932 CSL_MCSPI_IRQSTATUS_TX0_EMPTY_MASK)
960 uint32_t numWordsRxTx);
1037 static inline uint32_t
MCSPI_readChConf(uint32_t baseAddr, uint32_t chNum);
1091 uint32_t enableFlag);
1113 uint32_t enableFlag);
1150 uint32_t dataWidth);
1157 uint32_t bufWidthShift = 0U;
1163 else if(dataSize <= 16U)
1172 return bufWidthShift;
1208 CSL_REG32_WR(baseAddr +
MCSPI_CHTX(chNum), txData);
1213 uint32_t enableFlag)
1219 enableFlag >> CSL_MCSPI_CH0CONF_FFEW_SHIFT);
1224 uint32_t enableFlag)
1230 enableFlag >> CSL_MCSPI_CH0CONF_FFER_SHIFT);
1236 return (CSL_REG32_RD(baseAddr +
MCSPI_CHRX(chNum)));
1245 CSL_FINS(regVal, MCSPI_CH0CONF_WL, (dataWidth - 1U));
Definition: mcspi_dma_udma.h:50
#define MCSPI_IS_D1
Data line 1 (SPIDAT[1]) selected for reception.
Definition: mcspi/v0/mcspi.h:235
#define MCSPI_CHRX(x)
Base address of McSPI_CHRX(x)
Definition: mcspi/v0/mcspi.h:911
int32_t MCSPI_dmaChConfig(MCSPI_Handle handle, const MCSPI_ChConfig *chCfg, const MCSPI_DmaChConfig *dmaChCfg)
Function to configure a DMA of a channel.
void MCSPI_close(MCSPI_Handle handle)
Function to close a MCSPI peripheral specified by the MCSPI handle.
MCSPI instance attributes - used during init time.
Definition: mcspi/v0/mcspi.h:493
uint32_t transferTimeout
Definition: mcspi/v0/mcspi.h:429
static uint32_t MCSPI_readRxDataReg(uint32_t baseAddr, uint32_t chNum)
This API will return the data present in the MCSPI_RX register.
Definition: mcspi/v0/mcspi.h:1233
MCSPI channel object.
Definition: mcspi/v0/mcspi.h:534
uint32_t count
Definition: mcspi/v0/mcspi.h:378
static void MCSPI_writeTxDataReg(uint32_t baseAddr, uint32_t txData, uint32_t chNum)
This API will put the data on to the McSPI Channel transmit register.
Definition: mcspi/v0/mcspi.h:1203
uint32_t txFifoTrigLvl
Definition: mcspi/v0/mcspi.h:485
static uint32_t MCSPI_readChCtrlReg(uint32_t baseAddr, uint32_t chNum)
This API returns Channel control register value.
Definition: mcspi/v0/mcspi.h:1181
uint32_t rxFifoTrigLvl
Definition: mcspi/v0/mcspi.h:487
void(* MCSPI_CallbackFxn)(MCSPI_Handle handle, MCSPI_Transaction *transaction)
The definition of a callback function used by the SPI driver when used in MCSPI_TRANSFER_MODE_CALLBAC...
Definition: mcspi/v0/mcspi.h:412
uint32_t operMode
Definition: mcspi/v0/mcspi.h:510
uint32_t status
Definition: mcspi/v0/mcspi.h:401
Data structure used with MCSPI_transfer()
Definition: mcspi/v0/mcspi.h:357
uint32_t initDelay
Definition: mcspi/v0/mcspi.h:522
uint32_t effTxFifoDepth
Definition: mcspi/v0/mcspi.h:572
static void MCSPI_enableRxFIFO(uint32_t baseAddr, uint32_t chNum, uint32_t enableFlag)
This API will enable/disable the Rx FIFOs of McSPI peripheral.
Definition: mcspi/v0/mcspi.h:1222
static uint32_t MCSPI_readChStatusReg(uint32_t baseAddr, uint32_t chNum)
This API will return the status of the McSPI channel currently in use.
Definition: mcspi/v0/mcspi.h:1175
MCSPI_ChConfig chCfg
Definition: mcspi/v0/mcspi.h:538
uint32_t intrMask
Definition: mcspi/v0/mcspi.h:576
static uint32_t MCSPI_readChConf(uint32_t baseAddr, uint32_t chNum)
This API returns Channel Config register value.
Definition: mcspi/v0/mcspi.h:1192
#define MCSPI_CS_POL_LOW
SPIEN (CS) is held low during the ACTIVE state.
Definition: mcspi/v0/mcspi.h:212
int32_t MCSPI_reConfigFifo(MCSPI_Handle handle, uint32_t chNum, uint32_t numWordsRxTx)
Function to re-configure Effective FIFO Words.
uint32_t chConfRegVal
Definition: mcspi/v0/mcspi.h:580
static uint32_t MCSPI_getBufWidthShift(uint32_t dataSize)
This API will return the buffer width in bytes based on dataSize.
Definition: mcspi/v0/mcspi.h:1155
uint32_t transferMode
Definition: mcspi/v0/mcspi.h:427
#define MCSPI_DPE_DISABLE
No transmission on Data Line.
Definition: mcspi/v0/mcspi.h:247
MCSPI driver object.
Definition: mcspi/v0/mcspi.h:591
uint32_t MCSPI_getBaseAddr(MCSPI_Handle handle)
Function to get base address of MCSPI instance of a particular handle.
#define MCSPI_SB_POL_LOW
Start-bit polarity is held to 0 during MCSPI transfer.
Definition: mcspi/v0/mcspi.h:271
uint32_t errorFlag
Definition: mcspi/v0/mcspi.h:603
uint32_t bitRate
Definition: mcspi/v0/mcspi.h:458
void MCSPI_deinit(void)
This function de-initializes the MCSPI module.
MCSPI_Handle handle
Definition: mcspi/v0/mcspi.h:595
#define MCSPI_MAX_NUM_CHANNELS
Max number of channels/Chip Select (CS) supported.
Definition: mcspi/v0/mcspi.h:115
MCSPI Parameters.
Definition: mcspi/v0/mcspi.h:426
#define SystemP_WAIT_FOREVER
Value to use when needing a timeout of infinity or wait forver until resource is available.
Definition: SystemP.h:83
uint32_t csDisable
Definition: mcspi/v0/mcspi.h:361
uint32_t chCtrlRegVal
Definition: mcspi/v0/mcspi.h:582
void * MCSPI_Handle
A handle that is returned from a MCSPI_open() call.
Definition: mcspi/v0/mcspi.h:84
uint32_t trMode
Definition: mcspi/v0/mcspi.h:462
MCSPI_Object * object
Definition: mcspi/v0/mcspi.h:640
uint32_t inputClkFreq
Definition: mcspi/v0/mcspi.h:499
void MCSPI_init(void)
This function initializes the MCSPI module.
#define MCSPI_MS_MODE_MASTER
The module generates the clock and CS.
Definition: mcspi/v0/mcspi.h:176
#define MCSPI_TRANSFER_MODE_BLOCKING
MCSPI_transfer() blocks execution. This mode can only be used when called within a Task context
Definition: mcspi/v0/mcspi.h:152
uint32_t isOpen
Definition: mcspi/v0/mcspi.h:544
HwiP_Object hwiObj
Definition: mcspi/v0/mcspi.h:618
SemaphoreP_Object transferSemObj
Definition: mcspi/v0/mcspi.h:614
uint32_t baseAddr
Definition: mcspi/v0/mcspi.h:497
uint32_t curRxWords
Definition: mcspi/v0/mcspi.h:558
#define MCSPI_CHSTAT(x)
Base address of McSPI_CHSTAT(x)
Definition: mcspi/v0/mcspi.h:899
uint32_t csPolarity
Definition: mcspi/v0/mcspi.h:460
static void MCSPI_setDataWidth(uint32_t baseAddr, uint32_t chNum, uint32_t dataWidth)
This API will set the data width in the channel config register.
Definition: mcspi/v0/mcspi.h:1239
uint32_t startBitPolarity
Definition: mcspi/v0/mcspi.h:476
#define MCSPI_SLV_CS_SELECT_0
Definition: mcspi/v0/mcspi.h:256
static void MCSPI_writeChCtrlReg(uint32_t baseAddr, uint32_t chNum, uint32_t regVal)
This API sets Channel control register value.
Definition: mcspi/v0/mcspi.h:1186
uint32_t chMode
Definition: mcspi/v0/mcspi.h:518
int32_t MCSPI_transfer(MCSPI_Handle handle, MCSPI_Transaction *transaction)
Function to perform MCSPI transactions.
uint32_t intrNum
Definition: mcspi/v0/mcspi.h:505
int32_t MCSPI_transferCancel(MCSPI_Handle handle)
Function to cancel MCSPI transactions on channel of a SPI peripheral specified by the MCSPI handle.
uint32_t msMode
Definition: mcspi/v0/mcspi.h:433
const uint8_t * curTxBufPtr
Definition: mcspi/v0/mcspi.h:550
static void MCSPI_Transaction_init(MCSPI_Transaction *trans)
Function to initialize the MCSPI_Transaction struct to its defaults.
Definition: mcspi/v0/mcspi.h:845
uint32_t csDisable
Definition: mcspi/v0/mcspi.h:546
void * args
Definition: mcspi/v0/mcspi.h:399
uint32_t dataWidthBitMask
Definition: mcspi/v0/mcspi.h:570
uint32_t pinMode
Definition: mcspi/v0/mcspi.h:520
#define MCSPI_CHTX(x)
Base address of McSPI_CHTX(x)
Definition: mcspi/v0/mcspi.h:907
uint32_t startBitEnable
Definition: mcspi/v0/mcspi.h:473
#define MCSPI_TCS0_0_CLK
0.5 clock cycles delay
Definition: mcspi/v0/mcspi.h:283
void * txBuf
Definition: mcspi/v0/mcspi.h:381
void * rxBuf
Definition: mcspi/v0/mcspi.h:392
uint32_t systRegVal
Definition: mcspi/v0/mcspi.h:584
uint32_t effRxFifoDepth
Definition: mcspi/v0/mcspi.h:574
uint32_t dataSize
Definition: mcspi/v0/mcspi.h:367
static void MCSPI_ChConfig_init(MCSPI_ChConfig *chConfig)
Function to initialize the MCSPI_ChConfig struct to its defaults.
Definition: mcspi/v0/mcspi.h:823
uint32_t curTxWords
Definition: mcspi/v0/mcspi.h:554
uint32_t slvCsSelect
Definition: mcspi/v0/mcspi.h:470
int32_t MCSPI_chConfig(MCSPI_Handle handle, const MCSPI_ChConfig *chCfg)
Function to configure a MCSPI channel.
uint8_t intrPriority
Definition: mcspi/v0/mcspi.h:512
static void MCSPI_enableTxFIFO(uint32_t baseAddr, uint32_t chNum, uint32_t enableFlag)
This API will enable/disable the Tx FIFOs of McSPI peripheral.
Definition: mcspi/v0/mcspi.h:1211
void * mcspiDmaHandle
Definition: mcspi/v0/mcspi.h:623
uint8_t bufWidthShift
Definition: mcspi/v0/mcspi.h:564
MCSPI global configuration array.
Definition: mcspi/v0/mcspi.h:637
void * transferSem
Definition: mcspi/v0/mcspi.h:611
MCSPI_Transaction * currTransaction
Definition: mcspi/v0/mcspi.h:621
#define MCSPI_CHCONF(x)
Base address of McSPI_CHCONF(x)
Definition: mcspi/v0/mcspi.h:895
uint8_t * curRxBufPtr
Definition: mcspi/v0/mcspi.h:552
#define MCSPI_FF_POL0_PHA0
Definition: mcspi/v0/mcspi.h:195
Opaque Hwi object used with the Hwi APIs.
Definition: HwiP.h:93
MCSPI_OpenParams openPrms
Definition: mcspi/v0/mcspi.h:597
uint32_t defaultTxData
Definition: mcspi/v0/mcspi.h:482
static void MCSPI_OpenParams_init(MCSPI_OpenParams *openPrms)
Function to initialize the MCSPI_OpenParams struct to its defaults.
Definition: mcspi/v0/mcspi.h:812
uint32_t dpe1
Definition: mcspi/v0/mcspi.h:468
uint32_t gMcspiConfigNum
Externally defined driver configuration array size.
uint32_t csEnable
Definition: mcspi/v0/mcspi.h:548
Opaque semaphore object used with the semaphore APIs.
Definition: SemaphoreP.h:59
uint16_t eventId
Definition: mcspi/v0/mcspi.h:507
MCSPI_DmaChConfig dmaChCfg
Definition: mcspi/v0/mcspi.h:578
int32_t mcspiDmaIndex
Definition: mcspi/v0/mcspi.h:435
#define MCSPI_TRANSFER_COMPLETED
Definition: mcspi/v0/mcspi.h:125
uint32_t channel
Definition: mcspi/v0/mcspi.h:358
#define MCSPI_TR_MODE_TX_RX
Definition: mcspi/v0/mcspi.h:221
uint32_t inputSelect
Definition: mcspi/v0/mcspi.h:464
uint32_t isOpen
Definition: mcspi/v0/mcspi.h:609
uint32_t dpe0
Definition: mcspi/v0/mcspi.h:466
static void MCSPI_writeChConfReg(uint32_t baseAddr, uint32_t chNum, uint32_t regVal)
This API sets Channel Config register value.
Definition: mcspi/v0/mcspi.h:1197
MCSPI configuration parameters for the channel.
Definition: mcspi/v0/mcspi.h:453
MCSPI_Config gMcspiConfig[]
Externally defined driver configuration array.
MCSPI_Handle MCSPI_open(uint32_t mcspiConfigIndex, const MCSPI_OpenParams *openPrms)
This function opens a given MCSPI peripheral.
MCSPI_CallbackFxn transferCallbackFxn
Definition: mcspi/v0/mcspi.h:431
uint32_t baseAddr
Definition: mcspi/v0/mcspi.h:599
const MCSPI_Attrs * attrs
Definition: mcspi/v0/mcspi.h:638
#define MCSPI_CHCTRL(x)
Base address of McSPI_CHCTRL(x)
Definition: mcspi/v0/mcspi.h:903
#define MCSPI_CHANNEL_0
Definition: mcspi/v0/mcspi.h:95
uint32_t frameFormat
Definition: mcspi/v0/mcspi.h:456
uint32_t csIdleTime
Definition: mcspi/v0/mcspi.h:479
#define MCSPI_DPE_ENABLE
Data line selected for transmission.
Definition: mcspi/v0/mcspi.h:245
uint32_t chNum
Definition: mcspi/v0/mcspi.h:454
void * hwiHandle
Definition: mcspi/v0/mcspi.h:616