[STM32H5] STM32的DMA中传输数据宽度与实际宽度不符会怎样?

[复制链接]
5757|21
 楼主| Ericknfk 发表于 2023-8-21 18:02 | 显示全部楼层 |阅读模式
如果uint16_t A[]={0,1,2,3},B[]={0,0,0,0};要将A数组的数据用DMA传递到B数组中,但是在设置数据宽度的时候设置的是一位DMA_Initstructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Byte。将结果显示在OLED屏幕上,结果只有前两个数正确的传到了B数组中,B数组在OLDE上显示的是0,1,0,0。出现这种问题的根本原因是什么。
LcwSwust 发表于 2023-8-21 19:06 | 显示全部楼层
传输数量呢
harry233 发表于 2023-8-24 17:44 | 显示全部楼层

STM32的DMA中传输数据宽度与实际宽度不符会怎样?

有一个传输通道数量,dma启动一次就只传那么多字节,你可以看看那个位置是不是没设置好
天意无罪 发表于 2023-8-24 22:25 | 显示全部楼层
你这个参数是设置的数据位宽,不是设置的DMA一次传输数据量,是另外一个参数项。
 楼主| Ericknfk 发表于 2023-9-4 20:14 | 显示全部楼层
天意无罪 发表于 2023-8-24 22:25
你这个参数是设置的数据位宽,不是设置的DMA一次传输数据量,是另外一个参数项。 ...

就是位宽,我的数组用的是uint16,但是转运的时候的位宽不是halfword,而是byte。我知道这样用是不对的,但是我很想知道这样用为什么前两个数据依然能成功转运,而三四个不行。
香水城 发表于 2023-9-5 15:34 | 显示全部楼层
交代的还是不够清楚,你的DMA源和目的数据宽度都是设置BYTE吗?
如果是的话,经过4次传输,则传了00,00,01,00四个字节过去。

6538364f6d9e0e6ce0.png
Bowclad 发表于 2023-9-5 21:55 | 显示全部楼层
传输量还没设置吧
chuxh 发表于 2023-9-5 22:20 | 显示全部楼层
不是一个参数
捧一束彼岸花 发表于 2023-9-10 16:04 | 显示全部楼层
一般数据宽度不一致,可能会出现数据传输错误的问题
月亮一键变蓝 发表于 2023-9-10 19:00 | 显示全部楼层
其实性能会降低一些吧,不过还好
温室雏菊 发表于 2023-9-10 21:21 | 显示全部楼层
数据混乱吧,我猜的
她已醉 发表于 2023-9-11 00:07 | 显示全部楼层
为啥要设计数据宽度不一致呢?
在曼谷的春 发表于 2023-9-11 03:08 | 显示全部楼层
很容易出现数据传输错误。例如,如果DMA配置为传输32位数据,但实际传输的数据宽度只有16位,那么可能会导致数据截断或数据错位
将爱藏于深海 发表于 2023-9-11 06:12 | 显示全部楼层
数据建议还是设计宽度一致吧
将爱藏于深海 发表于 2023-9-11 06:12 | 显示全部楼层
数据建议还是设计宽度一致吧
风凉 发表于 2023-9-11 09:23 | 显示全部楼层
可能会出现这种情况,因为DMA会按照配置的数据宽度进行传输,如果实际数据宽度较小,那么可能会浪费一部分带宽和资源。
故意相遇 发表于 2023-9-11 12:11 | 显示全部楼层
DMA会按照配置的数据宽度进行传输,如果实际数据宽度较大,那么可能会导致数据溢出或截断。
西洲 发表于 2023-9-11 15:23 | 显示全部楼层
大概率是数据错误的吧,数据会乱的
白马过平川 发表于 2023-9-11 19:00 | 显示全部楼层
好好配置呗,把数据尽量统一一下
Henryko 发表于 2023-9-11 21:40 | 显示全部楼层
位宽的问题吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

3

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部