你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

DMA 输出BUFFER无法读取,无法操作

[复制链接]
平山村栋爷 提问时间:2017-3-18 20:31 /
如题,使用F756芯片,使用DMA2搬运SPI1的DR数据到数组A[],调试中发现以下现象:
1.debug可以看出A[]数据是对的,但是数组A[]不能向另一个数组B[]赋值,赋值结果为0;

2.A[]不能进行排序,A[]数组元素之间相互赋值也会失败;
3.使用串口打印,发现打印出的A[]数据全为0;

目前可排除原因:
1:数组定义内存位置冲突等问题,在相同位置定义数组,读取都正常
区别就在于数组A[]为DMA memory address;
2MA操作与程序操作冲突问题不存在,在保证DMA写满A[]后,A[]中数据依然无法赋给B[];

so?

调试中可以看到A[]中数据,打印到串口却都为0

调试中可以看到A[]中数据,打印到串口却都为0
收藏 2 评论8 发布时间:2017-3-18 20:31

举报

8个回答
zhulikai 回答时间:2017-3-20 10:22:27
不懂,帮顶
无薪税绵 回答时间:2017-3-29 08:11:28
你DMA的数据缓存是设置为共享,还是独享的?

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

jackeyt 回答时间:2017-3-29 09:11:39
楼主,试试用memcpy函数把A数组的值复制至B,观察能否成功。最好能贴上你的代码大家一起来分析一下。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

toofree 回答时间:2017-3-29 09:39:08
不知道什么情况,DMA停了后读取,如果用指针方式都无法读取的话,那么就没办法了。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

xmshao 回答时间:2017-3-29 11:13:18
应该是你代码问题。
你是否开启了FIFO,你DMA传输使用DIRECT模式测试下。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

cldym 回答时间:2017-3-29 15:06:06
不懂,帮顶
15616384352 回答时间:2017-3-30 08:42:47
建议楼主检查下程序,如果方便建议贴出来,大家一起看下。DMA应该不影响缓存数据的读取和排序,我用DMA来搬运ADC扫描模式的数据,对得到的缓存数据排序取平均,计算都为正常。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

衔胆栖冰 回答时间:2017-3-30 21:53:49
问题表示不清楚,A[]给B[]赋值,怎么赋值?你是怎么做的?

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版