79 g_dmaCTRL dma_controlPacketSpiTx = {
89 .PORTASGN = (uint32_t)PORTA_READ_PORTB_WRITE,
90 .RDSIZE = (uint32_t)ACCESS_16_BIT,
91 .WRSIZE = (uint32_t)ACCESS_16_BIT,
92 .TTYPE = (uint32_t)FRAME_TRANSFER,
93 .ADDMODERD = (uint32_t)ADDR_INC1,
94 .ADDMODEWR = (uint32_t)ADDR_FIXED,
95 .AUTOINIT = (uint32_t)AUTOINIT_OFF
98 g_dmaCTRL dma_controlPacketSpiRx = {
108 .PORTASGN = (uint32_t)PORTB_READ_PORTA_WRITE,
109 .RDSIZE = ACCESS_16_BIT,
110 .WRSIZE = ACCESS_16_BIT,
111 .TTYPE = FRAME_TRANSFER,
112 .ADDMODERD = ADDR_FIXED,
113 .ADDMODEWR = ADDR_INC1,
114 .AUTOINIT = AUTOINIT_OFF
118 g_dmaCTRL dma_controlPacketI2cTx = {
128 .PORTASGN = (uint32_t)PORTA_READ_PORTB_WRITE,
129 .RDSIZE = (uint32_t)ACCESS_8_BIT,
130 .WRSIZE = (uint32_t)ACCESS_8_BIT,
131 .TTYPE = (uint32_t)FRAME_TRANSFER,
132 .ADDMODERD = (uint32_t)ADDR_INC1,
133 .ADDMODEWR = (uint32_t)ADDR_FIXED,
134 .AUTOINIT = (uint32_t)AUTOINIT_OFF
137 g_dmaCTRL dma_controlPacketI2cRx = {
147 .PORTASGN = (uint32_t)PORTB_READ_PORTA_WRITE,
148 .RDSIZE = (uint32_t)ACCESS_8_BIT,
149 .WRSIZE = (uint32_t)ACCESS_8_BIT,
150 .TTYPE = (uint32_t)FRAME_TRANSFER,
151 .ADDMODERD = (uint32_t)ADDR_FIXED,
152 .ADDMODEWR = (uint32_t)ADDR_INC1,
153 .AUTOINIT = (uint32_t)AUTOINIT_OFF
177 (dmaIntGroup_t)DMA_INTA);
181 (dmaChannel_t)(dmaChannel_t)
dma_spiDmaChannels[i].rxChannel, (dmaInterrupt_t)BTC, (dmaIntGroup_t)DMA_INTA);
187 dmaSetCtrlPacket((dmaChannel_t)
dma_spiDmaChannels[i].txChannel, dma_controlPacketSpiTx);
190 dmaSetCtrlPacket((dmaChannel_t)
dma_spiDmaChannels[i].rxChannel, dma_controlPacketSpiRx);
193 dmaSetChEnable((dmaChannel_t)
dma_spiDmaChannels[i].txChannel, (dmaTriggerType_t)DMA_HW);
194 dmaSetChEnable((dmaChannel_t)
dma_spiDmaChannels[i].rxChannel, (dmaTriggerType_t)DMA_HW);
207 dmaEnableInterrupt((dmaChannel_t)(dmaChannel_t)
DMA_CHANNEL_I2C1_TX, (dmaInterrupt_t)BTC, (dmaIntGroup_t)DMA_INTA);
208 dmaEnableInterrupt((dmaChannel_t)(dmaChannel_t)
DMA_CHANNEL_I2C1_RX, (dmaInterrupt_t)BTC, (dmaIntGroup_t)DMA_INTA);
209 dmaEnableInterrupt((dmaChannel_t)(dmaChannel_t)
DMA_CHANNEL_I2C1_RX, (dmaInterrupt_t)LFS, (dmaIntGroup_t)DMA_INTA);
234 dmaEnableInterrupt((dmaChannel_t)(dmaChannel_t)
DMA_CHANNEL_I2C2_TX, (dmaInterrupt_t)BTC, (dmaIntGroup_t)DMA_INTA);
235 dmaEnableInterrupt((dmaChannel_t)(dmaChannel_t)
DMA_CHANNEL_I2C2_RX, (dmaInterrupt_t)BTC, (dmaIntGroup_t)DMA_INTA);
236 dmaEnableInterrupt((dmaChannel_t)(dmaChannel_t)
DMA_CHANNEL_I2C2_RX, (dmaInterrupt_t)LFS, (dmaIntGroup_t)DMA_INTA);
258 if (inttype == (dmaInterrupt_t)BTC) {
259 uint16_t timeoutIterations = 0u;
260 uint8_t spiIndex = 0u;
261 BaseType_t xHigherPriorityTaskWoken = pdFALSE;
285 (timeoutIterations > 0u)) {
330 (void)xTaskNotifyIndexedFromISR(
334 eSetValueWithOverwrite,
335 &xHigherPriorityTaskWoken);
336 portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
340 (void)xTaskNotifyIndexedFromISR(
344 eSetValueWithOverwrite,
345 &xHigherPriorityTaskWoken);
346 portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
354 if (success ==
false) {
356 i2cREG1->MDR |= (uint32_t)I2C_REPEATMODE;
358 (void)xTaskNotifyIndexedFromISR(
362 eSetValueWithOverwrite,
363 &xHigherPriorityTaskWoken);
364 portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
367 (void)xTaskNotifyIndexedFromISR(
371 eSetValueWithOverwrite,
372 &xHigherPriorityTaskWoken);
373 portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
380 if (success ==
false) {
382 i2cREG2->MDR |= (uint32_t)I2C_REPEATMODE;
384 (void)xTaskNotifyIndexedFromISR(
388 eSetValueWithOverwrite,
389 &xHigherPriorityTaskWoken);
390 portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
393 (void)xTaskNotifyIndexedFromISR(
397 eSetValueWithOverwrite,
398 &xHigherPriorityTaskWoken);
399 portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
407 if (inttype == (dmaInterrupt_t)LFS) {
420 #ifdef UNITY_UNIT_TEST
Headers for the driver for the general DMA module of monitoring ICs.
void AFE_DmaCallback(uint8_t spiIndex)
Function called by DMA block transfer callback.
void DMA_Initialize(void)
Enables the DMA module.
void UNIT_TEST_WEAK_IMPL dmaGroupANotification(dmaInterrupt_t inttype, uint32 channel)
Headers for the driver for the DMA module.
DMA_REQUEST_CONFIG_s dma_spiDmaRequests[DMA_NUMBER_SPI_INTERFACES]
spiBASE_t * dma_spiInterfaces[DMA_NUMBER_SPI_INTERFACES]
DMA_CHANNEL_CONFIG_s dma_spiDmaChannels[DMA_NUMBER_SPI_INTERFACES]
#define DMA_REQ_LINE_I2C2_TX
#define DMA_CHANNEL_SPI1_RX
#define DMA_CHANNEL_SPI5_RX
#define DMA_REQ_LINE_I2C1_RX
#define DMA_BIG_ENDIAN_ADDRESS_16BIT
#define DMA_CHANNEL_SPI4_TX
#define DMA_BIG_ENDIAN_ADDRESS_8BIT
#define DMA_CHANNEL_I2C1_TX
#define DMA_NUMBER_SPI_INTERFACES
#define DMA_CHANNEL_I2C2_TX
#define DMA_CHANNEL_SPI3_RX
#define DMA_REQ_LINE_I2C1_TX
#define DMA_CHANNEL_I2C2_RX
#define DMA_REQ_LINE_I2C2_RX
#define DMA_CHANNEL_SPI5_TX
#define DMA_CHANNEL_SPI1_TX
#define DMA_CHANNEL_SPI4_RX
#define DMA_CHANNEL_SPI3_TX
#define DMA_CHANNEL_SPI2_TX
#define DMA_CHANNEL_I2C1_RX
#define DMA_CHANNEL_SPI2_RX
Header of task driver implementation.
#define UNIT_TEST_WEAK_IMPL
bool I2C_WaitReceive(i2cBASE_t *pI2cInterface, uint32_t timeout_us)
Waits for the I2C Rx buffer to be full.
uint8_t i2c_rxLastByteInterface2
uint8_t i2c_rxLastByteInterface1
uint8_t I2C_ReadLastRxByte(i2cBASE_t *pI2cInterface)
Used to read last byte received per I2C.
Header for the driver for the I2C module.
#define I2C_NOTIFICATION_RX_INDEX
#define I2C_NOTIFICATION_TX_INDEX
#define I2C_TX_NOTIFIED_VALUE
#define I2C_RX_NOTIFIED_VALUE
#define I2C_RX_NOTCOME_VALUE
void SPI_DmaSendLastByte(uint8_t spiIndex)
Used to send last byte per SPI.
uint8_t SPI_GetSpiIndex(spiBASE_t *pNode)
Returns index of SPI node.
Headers for the driver for the SPI module.
SPI_BUSY_STATE_e spi_busyFlags[]
#define SPI_TX_EMPTY_TIMEOUT_ITERATIONS
#define SPI_TX_BUFFER_EMPTY_FLAG_POSITION
#define SPI_PC0_CLEAR_HW_CS_MASK