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

关于STM8S003F3串口问题

[复制链接]
norman33 提问时间:2016-5-5 21:05 /
接手一个研发任务,使用的是STM8S003F3,这个产品需要接受约以40ms间隔发送并回复的485数据帧,帧长度为8字节到18字节不等,使用中发现STM8S003F3在如此短间隔内无法完全处理完所有的数据帧,也就是丢包。丢包率大概在1%左右,不知道有没有朋友遇到过这种情况并有解决的办法。由于设备比较特殊,预期丢包率不应该高于万分之一,通信模式为自定义协议 485 8bit 9600 1stopBit parity-none
收藏 评论10 发布时间:2016-5-5 21:05

举报

10个回答
power568 回答时间:2016-5-6 13:17:11
按照你的通讯参数,时间应该比较紧凑,特别是当数据接收和恢复都是18字节时,光通讯时间就大约消耗了38ms, 提供如下建议:
0. 如果条件允许,可把波特率提高一个档次;
1. 丢包,首先你要确认是数据没收到还是解析出错;
2. 使用中断接收,接收的数据放入缓存;
3. 读取缓存并解析数据,解析后的数据可以直接发送,
4. 增加数据包校验机制,如CRC8、CRC16等等,设置累加和也可以。

评分

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

查看全部评分

wtliu 回答时间:2016-5-6 09:50:02
使用分时操作,把数据处理和发送分开处理,处理好的数据放入缓存。发送按先进先出原则发缓存数据即可。

评分

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

查看全部评分

wenyangzeng 回答时间:2016-5-6 11:04:15
较低的波特率误码率会降低,这个485通讯波特率设置9600在40ms传输18字节时间绰绰有余,另外必须进行CRC校验才能保证数据传输的可靠。

评分

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

查看全部评分

sfee2002 回答时间:2016-5-6 11:06:18
9600波特率,1个字节约1ms。40ms发送18个字节应该没有问题。发送用中断,这是是硬件控制的,速度很快。应该没有问题

评分

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

查看全部评分

huaiqiao 回答时间:2016-5-6 11:31:18
stm8没有用过,但是我想您先确认硬件电路没有问题,时钟这些的都配置ok,再去尝试设置较低的波特率看看。
dwwzl 回答时间:2016-5-6 13:56:30
把时钟设为默认16MHz,程序结构合理的话,应该没有问题的,我就做到20ms不出现丢包现象

评分

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

查看全部评分

liyiui 回答时间:2016-5-6 15:54:58
楼主时序没有处理好

评分

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

查看全部评分

zcl201207 回答时间:2016-5-6 19:55:54
嘻呵哈嘿吼 回答时间:2016-5-7 11:26:30
还没用过STM8做过串口项目,学点经验知识
12下一页
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版