2024-01-22 11:51 PM
Hello
I've seen tons of posts about this, I'm hoping I'm just missing something simple, I would really love to get this working.
STM32H723ZG, DMA TX works, I can send a sine wave fine but the RX buffer never changes and is never filled.
I've put the RX and TX buffers in D2RAM but this seems to make no difference.
DMA half and complete callbacks trigger fine, everything else seems to be running right the RX just wont fill.
I2S = 96khz, 32bit on a 32bit frame,
DMA= half word, circular
__attribute__ ((section(".rxBuffer"), used)) __attribute__ (()) uint16_t rxBuf[8];
__attribute__ ((section(".txBuffer"), used)) __attribute__ (()) uint16_t txBuf[8];
HAL_I2SEx_TransmitReceive_DMA (&hi2s2, txBuf, rxBuf, 4);
//in flash file
.buffers(NOLOAD) :
{
. = ALIGN(4);
. = ABSOLUTE (0x30000000);
*(.rxBuffer)
. = ABSOLUTE (0x30000040);
*(.txBuffer)
} >RAM_D2
Solved! Go to Solution.
2024-01-23 12:17 PM
If the DMA data width is not set to "Word" (was using "Half-Word" like in my previous working project) then the rx just shows 0's. When switched to word the data populates correctly.