打印

关于串口数据接收的问题

[复制链接]
2573|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xuyh3307|  楼主 | 2010-4-16 18:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的是瑞萨 R8C 的单片机,
使用中断来接收上位机的串行数据,
但是出现的问题是,
要是串口接收失败,
那么下次的串口信号就基本接收不到了
就算接收到,
硬件也会自动校验出错误

我不知道是不是我程序的问题?
谢谢!

相关帖子

沙发
冷漠| | 2010-9-27 08:49 | 只看该作者
本帖最后由 冷漠 于 2010-9-27 08:52 编辑

串口接收失败,(当然中断也发生)故障状态一直维持,不再正常接收;直到故障处理程序完成,清除故障状态之后,恢复接收正常状态;——UART 原理设计基本相同。

也就是说,用户需要编制一个故障处理程序,清除故障状态;最懒的处理就是不处理,直接清除故障状态,恢复正常接收。

使用特权

评论回复
板凳
yewuyi| | 2010-9-27 09:46 | 只看该作者
波特率如同火车上的一排排座位。
UART接受一个规定数量的位数据信号后硬件会自然产生一个中断,一般包含上起始位,停止位等,一般由11个位数据,我们把它称呼为一帧数据,这就如同火车的一节车厢,这个车厢中包含11排座位。
假如你现在一共有11个人出门旅游,买了11张连号票,并且正好在一个车厢中,火车每次都要求排好对按顺序上车,如果某此有一排上错人了,怎么办?

使用特权

评论回复
地板
handlike| | 2010-9-27 13:21 | 只看该作者
协议有问题,一般协议都是以一个特殊的字节作为开始(如0xff,0xfa等)也就是发送或接收序列中很少用到的字节。每次发送个数固定。这样即使收到一串码有误码,下一次也可以通过找特殊字节达到同步。不然就象LZ所说一次校验不成功后面的全是错误的了。所以自己规化一个协议是关键所在。

使用特权

评论回复
5
xuyh3307|  楼主 | 2010-9-27 20:27 | 只看该作者
2# 冷漠
哇!这个帖子很老了呢!
到现在该问题已经自己搞定了。
单片机确实是一直将故障状态保持着,直到我把串口整个初始化一遍才把故障状态清掉。

使用特权

评论回复
6
sjywjf0318| | 2011-5-12 18:56 | 只看该作者
大家好,下位机DSP2812一次发送6000各字节数据,串口助手只能接受4000多个字节,这是怎回事呢?
波特率都是9600

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

18

帖子

1

粉丝