OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8504|回复: 8

关于F767串口1DMA接收异常的问题

[复制链接]

6

主题

43

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
294
金钱
294
注册时间
2013-9-9
在线时间
92 小时
发表于 2021-5-23 10:27:08 | 显示全部楼层 |阅读模式
20金钱
本帖最后由 pauljames 于 2021-5-25 14:46 编辑

在使用F767的串口1 DMA接收 功能时候,遇到了这样一个问题,设置外设和内存都是8字节访问的,但是发现如果内存起始地址不是32Byte对齐的话,DMA的数据就无法正常接收,强制改变后就可以。例如开辟了一片内存区域,起始地址是0x200207A0,那么没有问题,可以正常接收;如果起始地址在0x20020795,那么前面的11个字节无法正常接收,从0x200207A0之后的区域就能收到。不知道大家有没有遇到过类似问题。我把工程精简后上传了,大家帮忙看下,挺奇特的问题。目前是0x20020010开始的16个字节无法访问。


问题.png

DMA_reg_recv异常.rar

511.39 KB, 下载次数: 6

最佳答案

查看完整内容[请看2#楼]

是不是CACHE的问题?关了CACHE试试?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2021-5-23 10:27:09 | 显示全部楼层
pauljames 发表于 2021-5-24 06:31
放在4字节对齐也会出错,比如0x200207A4

是不是CACHE的问题?关了CACHE试试?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

6

主题

890

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1477
金钱
1477
注册时间
2020-8-19
在线时间
335 小时
发表于 2021-5-23 11:02:36 | 显示全部楼层
帮顶  
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2021-5-24 01:10:47 | 显示全部楼层
这种地址一般建议至少4字节对齐啊,你这给个奇数地址,是有可能出问题
回复

使用道具 举报

6

主题

43

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
294
金钱
294
注册时间
2013-9-9
在线时间
92 小时
 楼主| 发表于 2021-5-24 06:31:23 | 显示全部楼层
正点原子 发表于 2021-5-24 01:10
这种地址一般建议至少4字节对齐啊,你这给个奇数地址,是有可能出问题

放在4字节对齐也会出错,比如0x200207A4
回复

使用道具 举报

6

主题

43

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
294
金钱
294
注册时间
2013-9-9
在线时间
92 小时
 楼主| 发表于 2021-5-24 06:59:02 | 显示全部楼层
我设置成4字节对齐的地址0x200207A4,还是出错,数据在下一个32字节对齐的地址0x200207C0才正常,不知道DMA传输哪里有这个限制?我看FIFO也只有16字节,并没有听说一定要32字节对齐的呢。
回复

使用道具 举报

6

主题

43

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
294
金钱
294
注册时间
2013-9-9
在线时间
92 小时
 楼主| 发表于 2021-5-25 14:47:36 | 显示全部楼层
正点原子 发表于 2021-5-24 01:10
这种地址一般建议至少4字节对齐啊,你这给个奇数地址,是有可能出问题

原子哥有空的时候帮忙看下,现在是0x20020010的地址,还是有问题,谢谢
回复

使用道具 举报

13

主题

643

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2432
金钱
2432
注册时间
2019-12-28
在线时间
527 小时
发表于 2021-5-25 16:19:03 | 显示全部楼层
帮顶  
回复

使用道具 举报

6

主题

43

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
294
金钱
294
注册时间
2013-9-9
在线时间
92 小时
 楼主| 发表于 2021-5-26 09:41:58 | 显示全部楼层
正点原子 发表于 2021-5-26 01:51
是不是CACHE的问题?关了CACHE试试?

关闭和开启Cache都不行,不过在每次启动DMA前执行SCB_CleanInvalidateDCache();就正常了。另外这个问题在MDK5.14版本没有发生,在5.21版本就发生了。谢谢原子哥的帮助。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 17:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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