stm32 dma SPI 数据不刷新?

问题描述 投票:0回答:1

我将 HAL 与 stm32 (H735) 一起使用,并且使用 SPI5 和 SPI4。两者均设置为 DMA 传输。 SPI5 工作正常并将数据从外设返回到 RAM。输出的数据是静态的,所以一切都很好。 SPI 4 已更改数据但未更改。似乎它被复制到外围设备一次。我有一些设置数据的函数,首先使用的函数就是发送的数据。我在调试器中验证 SPI 已完成且没有错误。我尝试了很多方法来设置我的数据,包括使用 LinkerScript 将其放置在 D2 中。

目前我有这样的。

.spi_data :
  {
   . = ALIGN(4);
   *(.dma_buffer)
  } >RAM_D2

typedef struct tagDACoutput {
    uint8_t Dac;
    uint8_t Data[2];
} DACOUTPUT;
__attribute__((__section__(".spi_data"))) static DACOUTPUT ToTheDac;

//during transfer

                ToTheDac.Dac = 0x34;
                ToTheDac.Data[0]= (dac1 >> 8) & 0xff;
                ToTheDac.Data[1]= dac1 & 0xff;
for ( int t = 0;t < 30; t ++) asm("NOP"); //I needed to add a small wait. Like to not do this.
HAL_SPI_Transmit_DMA(&hspi4,(uint8_t*)&ToTheDac, sizeof(ToTheDac));


我看到不需要数据刷新,但不确定是否需要执行某些操作来刷新数据。

spi dma stm32h7
1个回答
0
投票

使用D!对于内存位置已修复。

© www.soinside.com 2019 - 2024. All rights reserved.