硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1491|回复: 7
收起左侧

[DMA] 求助,h750vbt6 串口dma发送无效

[复制链接]

5

主题

26

回帖

41

积分

新手上路

积分
41
发表于 2021-9-3 23:30:52 | 显示全部楼层 |阅读模式
使用的是cubemx生成的默认函数和库,dma开启了之后,使用dma发送则无任何效果,使用普通发送则可以。

目前查询了论坛,关闭了d cache i cache,无任何反应。

然后也试过另一个帖子的两个办法,也是无任何反应。

修改项目配置。更改通用RAM起始地址为AXI SRAM(0x24000000)
使用__attribute__((section( )))指定DMA访问的目标地址  __attribute__((section(".ARM.__at_0x24000000")))


是不是最新的cubemx 库必须有前置操作才可以使用。
现在还没有开始调接收,就已经卡住了。



HAL_UART_Transmit_DMA 一直不可以
HAL_UART_Transmit 一直可以


怀疑确实是dma无法访问到数组导致的,可是要怎么定义 才能访问到呢?


回复

使用道具 举报

5

主题

26

回帖

41

积分

新手上路

积分
41
 楼主| 发表于 2021-9-3 23:35:54 | 显示全部楼层
_u5_test                             0x24000000   Data          28  main.o(.ARM.__at_0x24000000)
    __stdout                                 0x2400001c   Data           4  stdout.o(.data)
    SystemCoreClock                          0x24000020   Data           4  system_stm32h7xx.o(.data.SystemCoreClock)
    SystemD2Clock                            0x24000024   Data           4  system_stm32h7xx.o(.data.SystemD2Clock)
    USART_PRINTF_FLAG                        0x24000028   Data           4  main.o(.data.USART_PRINTF_FLAG)
    uwTickFreq                               0x2400002c   Data           1  stm32h7xx_hal.o(.data.uwTickFreq)
    uwTickPrio                               0x24000030   Data           4  stm32h7xx_hal.o(.data.uwTickPrio)
    hadc1                                    0x2400003c   Data         100  main.o(.bss.hadc1)
    hadc3                                    0x240000a0   Data         100  main.o(.bss.hadc3)
    hcrc                                     0x24000104   Data          36  main.o(.bss.hcrc)
    hdma_uart5_rx                            0x24000128   Data         120  main.o(.bss.hdma_uart5_rx)
    hdma_uart5_tx                            0x240001a0   Data         120  main.o(.bss.hdma_uart5_tx)
    hdma_usart1_rx                           0x24000218   Data         120  main.o(.bss.hdma_usart1_rx)
    hdma_usart3_rx                           0x24000290   Data         120  main.o(.bss.hdma_usart3_rx)
    hdma_usart3_tx                           0x24000308   Data         120  main.o(.bss.hdma_usart3_tx)
    hdma_usart6_rx                           0x24000380   Data         120  main.o(.bss.hdma_usart6_rx)
    hdma_usart6_tx                           0x240003f8   Data         120  main.o(.bss.hdma_usart6_tx)
    hhash                                    0x24000470   Data          68  main.o(.bss.hhash)
    hi2c1                                    0x240004b4   Data          76  main.o(.bss.hi2c1)
    hqspi                                    0x24000500   Data          76  main.o(.bss.hqspi)
    hrng                                     0x2400054c   Data          20  main.o(.bss.hrng)
    hspi1                                    0x24000560   Data         136  main.o(.bss.hspi1)
    hspi2                                    0x240005e8   Data         136  main.o(.bss.hspi2)
    hsram1                                   0x24000670   Data          76  main.o(.bss.hsram1)
    htim17                                   0x240006bc   Data          76  main.o(.bss.htim17)
    htim2                                    0x24000708   Data          76  main.o(.bss.htim2)
    huart1                                   0x24000754   Data         144  main.o(.bss.huart1)
    huart3                                   0x240007e4   Data         144  main.o(.bss.huart3)
    huart5                                   0x24000874   Data         144  main.o(.bss.huart5)
    huart6                                   0x24000904   Data         144  main.o(.bss.huart6)
    uwTick                                   0x24000994   Data           4  stm32h7xx_hal.o(.bss.uwTick)
    __initial_sp                             0x24001998   Data           0  startup_stm32h750xx.o(STACK)
回复

使用道具 举报

5

主题

26

回帖

41

积分

新手上路

积分
41
 楼主| 发表于 2021-9-3 23:37:59 | 显示全部楼层
_u5_test                             0x24000000   Data          28  main.o(.ARM.__at_0x24000000)

这个就是dma用的发送用的数据,不清楚为啥用不了
回复

使用道具 举报

5

主题

26

回帖

41

积分

新手上路

积分
41
 楼主| 发表于 2021-9-3 23:57:03 | 显示全部楼层
附件是整个的工程设置

h750wf.zip

1.97 MB, 下载次数: 25

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106649
QQ
发表于 2021-9-4 08:51:13 | 显示全部楼层
方便的话,先看现成的例子,看看自己能解决不
1、STM32V7基于STM32CubeMX的串口空闲中断接收不定长数据实现(HAL库1.9.0自带函数实现)
http://www.armbbs.cn/forum.php?mod=viewthread&tid=108553

2、【STM32H743实验例程】实验14:STM32H743串口DMA方式收发,DMA方式问题比较多,要注意数据一致性
http://www.armbbs.cn/forum.php?mod=viewthread&tid=86271

3、基于STM32H7的CMSIS-Driver驱动实现串口DMA和串口中断两种方式案例【已发布】
http://www.armbbs.cn/forum.php?mod=viewthread&tid=99211




回复

使用道具 举报

5

主题

26

回帖

41

积分

新手上路

积分
41
 楼主| 发表于 2021-9-4 09:43:00 | 显示全部楼层
谢谢,我再试试,第二个我试过了没成功,我再重新研究一下,非常感谢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106649
QQ
发表于 2021-9-4 10:53:08 | 显示全部楼层
tear07251 发表于 2021-9-4 09:43
谢谢,我再试试,第二个我试过了没成功,我再重新研究一下,非常感谢

你先测试下,有什么问题再交流。
回复

使用道具 举报

5

主题

192

回帖

212

积分

高级会员

积分
212
发表于 2021-9-4 16:27:06 | 显示全部楼层
tear07251 发表于 2021-9-4 09:43
谢谢,我再试试,第二个我试过了没成功,我再重新研究一下,非常感谢

1630743843(1).jpg

请叫我雷锋,还好你上传了代码,我估计你发送不行用的是串口1吧。
看你自己干的好事,串口1开了接收,没开启发送的DMA,
所以为啥你的IT可以DMA不行,知道了吧。
用了4个串口,唯独串口1发送DMA没有配置。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-27 22:22 , Processed in 0.297038 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表