cancel
Showing results for 
Search instead for 
Did you mean: 

STM32H723ZG DMA I2S - tx works, no RX

MatthewsEffects
Associate III

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

 

10 REPLIES 10

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.