打印

51单片机串口的一点疑问

[复制链接]
2442|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
denvice|  楼主 | 2012-7-14 09:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 denvice 于 2012-7-14 11:21 编辑

很久没搞过51了,最近由于项目需求我对51单片机的串口有一点疑惑了,希望得到大家的帮助。如果51单片机的串口设置为8E1(八个数据为,偶校验,1个停止位)这样来接收数据,如果上位机发送了起始位,8个数据位以后,总线就一直被拉成低电平,过了比较长一段时间,总线才恢复高电平。这样的情况下51单片机能正常收到数据吗

相关帖子

沙发
dlyt_test001| | 2012-7-14 09:52 | 只看该作者
会不会都不建议这样就。协议上就1位停止位,上位机为什么还要拉低较长时间呢?

使用特权

评论回复
板凳
NE5532| | 2012-7-14 10:03 | 只看该作者
“总线就一直被拉成低电平,过了比较长一段时间,总线才恢复低电平。”楼主先得补语文,再学单片机哈。

使用特权

评论回复
地板
forgot| | 2012-7-14 10:15 | 只看该作者
这句话我想了很久没搞懂:L 3# NE5532

使用特权

评论回复
5
3htech| | 2012-7-14 10:38 | 只看该作者
E81,貌似是Even的缩写吧,是偶校验吧?

你让单片机直接发送数据,看看能不能收到。

使用特权

评论回复
6
ZRL700424| | 2012-7-14 10:51 | 只看该作者
过了比较长一段时间,总线才恢复低电平
denvice 发表于 2012-7-14 09:47


应该是写错字了,估计是“过了比较长一段时间,总线才恢复高电平”吧?

使用特权

评论回复
7
denvice|  楼主 | 2012-7-14 11:53 | 只看该作者
3# NE5532 呵呵早上犯迷糊,打快了

使用特权

评论回复
8
denvice|  楼主 | 2012-7-14 11:55 | 只看该作者
就是手上没有51的板子搞不了 5# 3htech

使用特权

评论回复
9
NE5532| | 2012-7-14 12:04 | 只看该作者
3# NE5532  呵呵早上犯迷糊,打快了
denvice 发表于 2012-7-14 11:53


那楼主,串口上每个位的时间都是一定的,为什么会被拉低很长时间呢??

使用特权

评论回复
10
cd4066| | 2012-7-14 14:56 | 只看该作者
“总线就一直被拉成低电平,过了比较长一段时间,总线才恢复低电平。”楼主先得补语文,再学单片机哈。
NE5532 发表于 2012-7-14 10:03



附议

使用特权

评论回复
11
zh5202| | 2012-7-14 15:05 | 只看该作者
开始我也没有看明白,看了后面的讨论才搞清楚。。。呵呵

使用特权

评论回复
12
wukunshan| | 2012-7-14 19:15 | 只看该作者
这是不行的,打乱了串口通信协议,其结果就是无**常通信。

使用特权

评论回复
13
denvice|  楼主 | 2012-7-14 20:32 | 只看该作者
出现这种情况是因为总线上一开始有一个Break信号,比一个正常的数据的时间长,都是低电平,就是DMX512灯光协议,这一协议中有人判断第9位来判断Break信号我就觉得奇怪 9# NE5532

使用特权

评论回复
14
denvice|  楼主 | 2012-7-14 20:34 | 只看该作者
51的串口如果收不到停止信号会咋样?数据还有没有用会不会在Buf里面

使用特权

评论回复
15
yhn1973| | 2012-7-14 22:52 | 只看该作者
能正常收到数据,收不到停止信号不会开始下个接收数据采样,但本次收到的数据会装在SBUF

使用特权

评论回复
16
NE5532| | 2012-7-15 17:51 | 只看该作者
出现这种情况是因为总线上一开始有一个Break信号,比一个正常的数据的时间长,都是低电平,就是DMX512灯光协议,这一协议中有人判断第9位来判断Break信号我就觉得奇怪 9# NE5532  ...
denvice 发表于 2012-7-14 20:32


注意人家可能巧妙利用了串口协议的变种,比如用低电平来实现电平中断唤醒,那时候可能串口收发机根本没开呢。严格的串口收发机在遇到这种长时间低电平时将给出错误标志的。

使用特权

评论回复
17
denvice|  楼主 | 2012-7-15 18:46 | 只看该作者
你说的是一种方法,很多也是这样用的。不过很多人是直接利用那个BREAK信号的特点(第九位为0来判断) 16# NE5532

使用特权

评论回复
18
denvice|  楼主 | 2012-7-15 18:48 | 只看该作者
如果下一个数据到来了,前面的数据会不会被挤掉,如果没读出来下一个数据是进不了Buff的吧? 15# yhn1973

使用特权

评论回复
19
yhn1973| | 2012-7-15 21:49 | 只看该作者
不会被挤掉,只要不清RI标记

使用特权

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

本版积分规则

8

主题

162

帖子

2

粉丝