4589|9

68

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

STM32DMA的问题 [复制链接]

最近调试 ADC 采样.
在 ADC1 规则序列采样设定 4 路, 由 DMA1 通道1 进行数据传输. 循环传输方式. 仅用软件触发规则序列
另外还使用了 注入采样, 由定时器触发.

现在发现, 在工作过程中,  DMA1 的 通道1 的 CNDTR 由 4 莫名其妙地 变成了 2.
当然采样的数据也发生了错误. 我调试中发现, 前后两通道的数据(DMA 后的内存数据)对调了.

为此, 我设定 DMA 中断. 来捕捉这个  CNDTR  的变化,
却奇怪地发现数据发生错误了, 中断却并没有捕捉到这个变化. 当然此时在中断入口设定断点,
单步跟踪, 是能发现 CNDTR 的变化的.

根据数据手册, CNDTR 是不能更改的, 只要 EN 没有关闭, 我的软件就没有关闭过 DMA 这个通道,
所以, 软件导致的变化应该不大可能.
奇怪 + 奇怪!
此帖出自stm32/stm8论坛

最新回复

Adc四路连续采集,使用dma中断方试,四路采集完后进入dma中断,读出电压转换的数据,但仿直调试的时候不能进入中断服务函数。如图,而且传输完成中断标志还是灰色的,这是为什么呢?  详情 回复 发表于 2013-5-7 15:08
点赞 关注
 

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
                                 没有人遇到过吗? 自己顶一下
此帖出自stm32/stm8论坛
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
                                 帮顶一下
此帖出自stm32/stm8论坛
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

4
 
                                 最近发现, 定时器的 DMA 也有存在类似传输错误. 难道是 STM32 的硬件 BUG?
此帖出自stm32/stm8论坛
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

5
 
报告楼上, 我也很想抓个很准确的特性, 然后写个测试程序,让大家看看.
只是感觉有点象 ic bug, 不容易抓准毛病点.
有一点可以肯定, 我没有关闭 DMA, 按照数据手册, 那么 CNDTR 是不能更改的.
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

6
 
报告楼上, 我也很想抓个很准确的特性, 然后写个测试程序,让大家看看.
只是感觉有点象 ic bug, 不容易抓准毛病点.
有一点可以肯定, 我没有关闭 DMA, 按照数据手册, 那么 CNDTR 是不能更改的. ...
请仔细看看STM32参考手册,使能DMA通道之后,CNDTR变为只读,随时反映当前还剩多少次传输,所以你观察到的现象并没有错,更不是什么Bug。

STM32_DMA_CNDTRx.GIF (18.86 KB)

STM32_DMA_CNDTRx.GIF

此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

7
 
谢谢, 楼上的确看得很仔细.

不过在发帖前, 我也详细看过这部分的介绍了.
我的问题是:
"现在发现, 在工作过程中,  DMA1 的 通道1 的 CNDTR 由 4 莫名其妙地 变成了 2.
当然采样的数据也发生了错误. 我调试中发现, 前后两通道的数据(DMA 后的内存数据)对调了. "

开始也以为 这个计数器会变属于正常情况, 然而我跟踪了好久, 这个 2 始终没有变为4 去, 因为规则采样, 应该没有几个 uS 就会变回去, jlink 在 MDK 下作怪吗? 不用调试器, 照样出错.
另外更加糟糕的是: 采样到的数据发生了错误(这是最关键的, 前面只是说的现象)

另外没有说明, 我手工改回到 4, 又正常采样了.
谢谢!
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(中级)

8
 
                                 你不能给出测试程序,让别人怎么能够帮助你呢?
此帖出自stm32/stm8论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

9
 
我也碰到此问题
运行运行一段时间后,DMA的数据就会出错,但马上又会恢复,此问题一直未解决。
此帖出自stm32/stm8论坛
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(中级)

10
 

不能进入stm32dma中断服务函数

Adc四路连续采集,使用dma中断方试,四路采集完后进入dma中断,读出电压转换的数据,但仿直调试的时候不能进入中断服务函数。如图,而且传输完成中断标志还是灰色的,这是为什么呢?

QQ截图20130507150808.png (11.25 KB, 下载次数: 0)

QQ截图20130507150808.png
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表