关于STM32H7使用SPI6+BDMA传输数据失败

原因

由图可知BDMA只能访问SRAM4里的数据,但是我当时是把数据存到了外置的SDRAM中用FMC访问所以导致在使用HAL_SPI_Transmit_DMA(&hspi6, (uint8_t*)LCD_BUF_1, 3200)无法传输数据。
解决方法

  1. 修改链接文件STM32H743IITX_FLASH.ld:在SECTIONS { }中添加
    .sram4 (NOLOAD) : { . = ALIGN(4); *(.sram4) . = ALIGN(4); } >RAM_D3

  2. 给定义的变量加上前缀如:__attribute__((section(".sram4")))uint8_t LCD_BUF_1[10][320];

  3. 编译后可以看到变量已经成功存储到D3域了

  4. 到此已经可以正常使用HAL_SPI_Transmit_DMA(&hspi6, (uint8_t*)LCD_BUF_1, 3200)

posted @ 2025-03-31 13:11  EEChino  阅读(294)  评论(0)    收藏  举报