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

DMA接收串口数据,跑飞

[复制链接]
ligongxiaobie 提问时间:2018-1-23 10:14 /
如题,初始化DMA和串口后,DMA对串口数据进行循环接收。

程序用CubeMX生成的,DMA必须用中断,实际使用串口空闲中断对数据进行记录的,DMA中断是空的。

问题,就是程序大约跑了9个小时,然后跑死了,当时用JTAG观察的数据,发现DMA的hdma_uart8_rx.Instance->NDTR这个量已经到达了6031105这个值,实际我设置的只有600.

串口数据基本没问题,而且我确实是对数据进行10ms一处理。

那么这个DMA跑飞究竟因为什么呢?

有什么样的原因会导致DMA的NDTR寄存器溢出呢?

其他函数越界?
收藏 评论9 发布时间:2018-1-23 10:14

举报

9个回答
ligongxiaobie 回答时间:2018-1-23 10:20:28
我用的F767,一直在想是不是cance总线出问题了,我打开了D和I总线
maxtch 回答时间:2018-1-23 11:54:55
有没有发生指针溢出?如果指针溢出了,那么内存数据是会被覆盖掉的。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

ligongxiaobie 回答时间:2018-1-23 14:18:02
maxtch 发表于 2018-1-23 11:54
有没有发生指针溢出?如果指针溢出了,那么内存数据是会被覆盖掉的。

我现在也在查是不是指针溢出了,可能性是有的,但是我还是想知道还有什么其他可能会导致NDTR直接错误
#define 回答时间:2018-1-23 17:35:29
                                             

评分

参与人数 1ST金币 -1 收起 理由
zero99 -1 不要灌水,谢谢,警告一次

查看全部评分

maxtch 回答时间:2018-1-23 23:33:07
ligongxiaobie 发表于 2018-1-23 14:18
我现在也在查是不是指针溢出了,可能性是有的,但是我还是想知道还有什么其他可能会导致NDTR直接错误 ...

如果内存使用量不大可以尝试用 CCM 代替系统 SRAM 作堆栈和程序本地数据用,把大部分的 SRAM 留给 DMA。这样既有助于性能(DMA 不占用 CCM 总线时间),又可以避免 DMA 意外抹除 CCM 数据。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

xmshao 回答时间:2018-1-24 11:06:28
NDTR是可以重载的,围绕那个数据变量再看看。。。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

ligongxiaobie 回答时间:2018-1-24 16:28:38
maxtch 发表于 2018-1-23 23:33
如果内存使用量不大可以尝试用 CCM 代替系统 SRAM 作堆栈和程序本地数据用,把大部分的 SRAM 留给 DMA。 ...

谢谢前辈提示,查了一下CCM,很好,可以用。
但是,必须查出来问题,因为低温(东北室外)确实出现这个问题了,必须先定位问题,然后再想解决方法,如果是程序逻辑问题,用CCM也会出问题。
ligongxiaobie 回答时间:2018-1-24 16:36:48
xmshao 发表于 2018-1-24 11:06
NDTR是可以重载的,围绕那个数据变量再看看。。。

查了一下内存map,发现hdma_uart8_rx地址前面,有这个DMA缓存的BUFFER地址,应该是BUFFER溢出,将hdma_uart8_rx进行了覆盖。
但是hdma_uart8_rx中NDTR是以指针形式传递的,意思是hdma_uart8_rx的地址是0x20002130,但是
hdma_uart8_rx中NDTR是存在图中DMA1的内存中。我特别想知道,如果BUFFER真的溢出了,会将DMA1中的内存覆盖吗?
应该不会吧?
那么NDTR是如何溢出的,是JTAG出现数据传输问题?
捕获.PNG
xmshao 回答时间:2018-1-25 12:18:50
ligongxiaobie 发表于 2018-1-24 16:36
查了一下内存map,发现hdma_uart8_rx地址前面,有这个DMA缓存的BUFFER地址,应该是BUFFER溢出,将hdma_ua ...

如果说溢出发生跑飞,会发生什么谁知道呢?

所属标签

相似问题

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