OpenEdv-开源电子网

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

DMA + 串口空闲中断接收 不定长数据靠谱吗

[复制链接]

14

主题

54

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
205
金钱
205
注册时间
2017-12-4
在线时间
64 小时
发表于 2021-4-16 15:43:05 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 516182660 于 2021-4-16 15:47 编辑

STM32F103RET6 做 DMA + 串口空闲中断接收 经常发现两帧数据才进一次空闲中断(即两帧数据当一帧接收),我将上传代码大家帮忙分析一下
用正点原子的串口助手循环发送以下两帧数据,间隔 100 毫秒,一帧数据是100字节,另一帧数据22字节,两帧数据加起来刚好122字节,就会发现进入  test = 0;

数据帧一: CC 00 00 00 00 00 5B 07 A0 00 51 00 00 00 35 91 7C 9C C1 2D 4E 4B 81 8C 95 B4 EA 96 B8 0D 96 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 32 2E 30 30 2E 33 30 00 00 00 00 00 00 00 00 00 00 00 00 FF DD FF DD FF DD 00 00 00 00 00 00 12 A3 00 41 00 00 00 00 00 00 43 35


数据帧二: CC 00 00 00 00 00 0D 00 F0 00 03 02 00 00 00 00 00 00 00 00 64 83
4.png
3.png
2.png
1.png

仿真视频.rar

1.1 MB, 下载次数: 10

DMA+空闲中断接收不定长数据.rar

13.01 MB, 下载次数: 337

最佳答案

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

程序没问题。 9600的波特率在100ms时间内只能发出96字节,而你却要发出100字节,所以你那两帧事实上是连续的,肯定进不了IDLE中断呀,不信你用逻辑分析仪或示波器看一下实际的RX波形,两帧是不是粘在一起了? 要么把波特率调高一点,要么把发送间隔该长一些,要么把每帧的字节数改小一些,肯定就没问题了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2021-4-16 15:43:06 | 显示全部楼层
程序没问题。

9600的波特率在100ms时间内只能发出96字节,而你却要发出100字节,所以你那两帧事实上是连续的,肯定进不了IDLE中断呀,不信你用逻辑分析仪或示波器看一下实际的RX波形,两帧是不是粘在一起了?


要么把波特率调高一点,要么把发送间隔该长一些,要么把每帧的字节数改小一些,肯定就没问题了
坚决不用寄存器,拒绝重复造轮子。
回复

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2021-4-16 16:48:50 | 显示全部楼层
不能,空闲时间时间太短,自己开个定时器计时,作接收超时。如5-6ms
回复

使用道具 举报

14

主题

54

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
205
金钱
205
注册时间
2017-12-4
在线时间
64 小时
 楼主| 发表于 2021-4-17 13:48:51 | 显示全部楼层
本帖最后由 516182660 于 2021-4-17 14:25 编辑
xkwy 发表于 2021-4-16 19:06
程序没问题。

9600的波特率在100ms时间内只能发出96字节,而你却要发出100字节,所以你那两帧事实上是连 ...

谢谢大牛,确实是这个问题。该问题在各大技术群提问讨论得热火朝天也没有解决,我自己也找了一周时间也没结果,你一针见血,非常感谢。以下附图不用理会,发错了但是不知道怎么删除
1.png
2.png
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-27 23:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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