OpenEdv-开源电子网

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

有点急,STM8S003,串口同时接收和发送,谢谢了

[复制链接]

33

主题

114

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2019-7-8
在线时间
176 小时
发表于 2020-3-8 17:19:53 | 显示全部楼层 |阅读模式
150金钱
1.png
请教各位大神,我的串口最晚每100ms就要发送一次一长串的数据(这个数据大约25ms,且必须连续)
另外偶尔Uart 1 Rx要接收数据
请问要如何保证这两个功能稳定呢,我有的时候RX没收到数据,有的时候TX数据又断开
代码里面用了定时器(每100ms),串口发送中断(25ms连续数据),串口接收中断(接收图片左边TX来的数据)
谢谢各位了,拜托了

最佳答案

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

大数据量还是考虑分包传输,或者提高优先级看下
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2020-3-8 17:19:54 | 显示全部楼层
seraph15 发表于 2020-3-9 15:39
为了遵照协议,数据只能这么长且要连续,SMT8,S系列没有DMA,只有L系列有
一直再考虑这个优化问题,我 ...

大数据量还是考虑分包传输,或者提高优先级看下
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2020-3-8 20:40:52 | 显示全部楼层
发送多少数据,要25ms辣么长,建议长数据接收、发送,采用拼接的方式比较好。大多MCU的串口都是异步的,非同步,或者你用DMA来收发,看下效果
回复

使用道具 举报

33

主题

114

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2019-7-8
在线时间
176 小时
 楼主| 发表于 2020-3-9 15:39:05 | 显示全部楼层
八度空间 发表于 2020-3-8 20:40
发送多少数据,要25ms辣么长,建议长数据接收、发送,采用拼接的方式比较好。大多MCU的串口都是异步的,非 ...

为了遵照协议,数据只能这么长且要连续,SMT8,S系列没有DMA,只有L系列有
一直再考虑这个优化问题,我还想是不是要模拟来实现
或是考虑中断优先级(但不知道有没有冲突)
串口数据还可以轮询的,但是最终还是要合理分配时间。。。
回复

使用道具 举报

0

主题

78

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1588
金钱
1588
注册时间
2018-10-11
在线时间
224 小时
发表于 2020-3-9 15:55:37 | 显示全部楼层
最近那么多人搞DMX....
回复

使用道具 举报

33

主题

114

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2019-7-8
在线时间
176 小时
 楼主| 发表于 2020-3-9 20:53:54 | 显示全部楼层
spritels 发表于 2020-3-9 15:55
最近那么多人搞DMX....

有好方法吗,能不能提供一下呢。。。
回复

使用道具 举报

33

主题

114

帖子

0

精华

初级会员

Rank: 2

积分
57
金钱
57
注册时间
2019-7-8
在线时间
176 小时
 楼主| 发表于 2020-3-14 22:39:28 | 显示全部楼层
八度空间 发表于 2020-3-14 18:09
大数据量还是考虑分包传输,或者提高优先级看下

谢谢你的建议,但我真的不能拆包,我已经在研究STM8L了,打算用DMA来处理
回复

使用道具 举报

50

主题

1805

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6661
金钱
6661
注册时间
2016-5-29
在线时间
909 小时
发表于 2020-4-24 09:35:44 | 显示全部楼层
UART本身是全双工的.实现你的这个任务 应该没有问题.可以尝试中断接收,中断发送.实在不行,只有上有DMA的芯片了.
回复

使用道具 举报

8

主题

293

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1001
金钱
1001
注册时间
2018-8-16
在线时间
327 小时
发表于 2020-4-24 09:52:33 | 显示全部楼层
能不能在通讯协议上下功夫?例如校验错误的话请求重发数据?
回复

使用道具 举报

13

主题

166

帖子

0

精华

高级会员

Rank: 4

积分
791
金钱
791
注册时间
2018-12-19
在线时间
163 小时
发表于 2020-5-19 22:21:01 | 显示全部楼层
操作系统 发表于 2020-4-24 09:35
UART本身是全双工的.实现你的这个任务 应该没有问题.可以尝试中断接收,中断发送.实在不行,只有上有DMA的芯 ...

这才是解决问题的根本办法。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 13:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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