打印
[STM32H5]

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

[复制链接]
4815|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
如果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一次传输数据量,是另外一个参数项。

使用特权

评论回复
5
Ericknfk|  楼主 | 2023-9-4 20:14 | 只看该作者
天意无罪 发表于 2023-8-24 22:25
你这个参数是设置的数据位宽,不是设置的DMA一次传输数据量,是另外一个参数项。 ...

就是位宽,我的数组用的是uint16,但是转运的时候的位宽不是halfword,而是byte。我知道这样用是不对的,但是我很想知道这样用为什么前两个数据依然能成功转运,而三四个不行。

使用特权

评论回复
6
香水城| | 2023-9-5 15:34 | 只看该作者
交代的还是不够清楚,你的DMA源和目的数据宽度都是设置BYTE吗?
如果是的话,经过4次传输,则传了00,00,01,00四个字节过去。

使用特权

评论回复
7
Bowclad| | 2023-9-5 21:55 | 只看该作者
传输量还没设置吧

使用特权

评论回复
8
chuxh| | 2023-9-5 22:20 | 只看该作者
不是一个参数

使用特权

评论回复
9
捧一束彼岸花| | 2023-9-10 16:04 | 只看该作者
一般数据宽度不一致,可能会出现数据传输错误的问题

使用特权

评论回复
10
月亮一键变蓝| | 2023-9-10 19:00 | 只看该作者
其实性能会降低一些吧,不过还好

使用特权

评论回复
11
温室雏菊| | 2023-9-10 21:21 | 只看该作者
数据混乱吧,我猜的

使用特权

评论回复
12
她已醉| | 2023-9-11 00:07 | 只看该作者
为啥要设计数据宽度不一致呢?

使用特权

评论回复
13
在曼谷的春| | 2023-9-11 03:08 | 只看该作者
很容易出现数据传输错误。例如,如果DMA配置为传输32位数据,但实际传输的数据宽度只有16位,那么可能会导致数据截断或数据错位

使用特权

评论回复
14
将爱藏于深海| | 2023-9-11 06:12 | 只看该作者
数据建议还是设计宽度一致吧

使用特权

评论回复
15
将爱藏于深海| | 2023-9-11 06:12 | 只看该作者
数据建议还是设计宽度一致吧

使用特权

评论回复
16
风凉| | 2023-9-11 09:23 | 只看该作者
可能会出现这种情况,因为DMA会按照配置的数据宽度进行传输,如果实际数据宽度较小,那么可能会浪费一部分带宽和资源。

使用特权

评论回复
17
故意相遇| | 2023-9-11 12:11 | 只看该作者
DMA会按照配置的数据宽度进行传输,如果实际数据宽度较大,那么可能会导致数据溢出或截断。

使用特权

评论回复
18
西洲| | 2023-9-11 15:23 | 只看该作者
大概率是数据错误的吧,数据会乱的

使用特权

评论回复
19
白马过平川| | 2023-9-11 19:00 | 只看该作者
好好配置呗,把数据尽量统一一下

使用特权

评论回复
20
Henryko| | 2023-9-11 21:40 | 只看该作者
位宽的问题吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

3

帖子

0

粉丝