5308|11

76

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

送分100分:关于串口通讯的小问题 [复制链接]

串口通讯时,比如我发送了10个字节,接收端是如何接收这每一位的数据的,又是如何区分开每个位,并把它划归到相应的字节中的。谢谢。

最新回复

其实没必要弄这么清楚. 你只需要清楚两点: 1 双方的波特率一致 2 向发送器写的字节, 会在接收器那里收到  详情 回复 发表于 2010-2-4 19:52
点赞 关注

回复
举报

61

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
这个应该是UART模块自动处理的。
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
串口通信中可以设置5、6、7、8等数据位,但是在实际的UART模块操作过程中向TXD寄存器写数据的时候是按照字节写的,读RXD的时候也是按照字节来读的,传送过程中是先传高位还是先传低位没研究过,但是是串口通信的规范,相应模块会自动处理,你发送10个字节先送的值先发送和先接收到。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

4
 
首先,通信双方需要使用相同的速率.
首先发送一个起始位,起始位是一位宽的逻辑0. 接收器会在检测到起始位时让它的内部逻辑进行一次同步,这样双方速度的微小误差不会在连续的通信过程中累积导致数据错误.
然后传送要发送的数据.数据可以有5/6/7/8/9位,取决于你对UART的设置,当然实际的UART不一定支持所有的速率. 数据的低位先发,根据你设置的波特率,从低到高每位依次出现在TXD线上,各占一位宽的时间.
最后是一个停止位. 停止位是一位宽的逻辑1. 很多UART接收器都会丢弃接收到的停止位,但有些接收器会检查这个停止位,如果不是逻辑1,它会给出一个错误信息.
通信双方的速率是不可能完全相等的,但如果速率的误差导致最后一位的时间相差1/2位,则无法正确实现数据的传送. 对于8-BIT的UART通信,允许的误差极限是5%,实际上要保证误差不超过3%的样子才行.
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

5
 
首先,通信双方需要使用相同的速率.
首先发送一个起始位,起始位是一位宽的逻辑0. 接收器会在检测到起始位时让它的内部逻辑进行一次同步,这样双方速度的微小误差不会在连续的通信过程中累积导致数据错误.
然后传送要发送的数据.数据可以有5/6/7/8/9位,取决于你对UART的设置,当然实际的UART不一定支持所有的字宽. 数据的低位先发,根据你设置的波特率,从低到高每位依次出现在TXD线上,各占一位宽的时间.
最后是一个停止位. 停止位是一位宽的逻辑1. 很多UART接收器都会丢弃接收到的停止位,但有些接收器会检查这个停止位,如果不是逻辑1,它会给出一个错误信息.
通信双方的速率是不可能完全相等的,但如果速率的误差导致最后一位的时间相差1/2位,则无法正确实现数据的传送. 对于8-BIT的UART通信,允许的误差极限是5%,实际上要保证误差不超过3%的样子才行.
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

6
 
请搜索查看NS16550数据手册
http://www.national.com/ds/PC/PC16550D.pdf
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(中级)

7
 
引用 4 楼 great_bug 的回复:
首先,通信双方需要使用相同的速率.
首先发送一个起始位,起始位是一位宽的逻辑0. 接收器会在检测到起始位时让它的内部逻辑进行一次同步,这样双方速度的微小误差不会在连续的通信过程中累积导致数据错误.
然后传送要发送的数据.数据可以有5/6/7/8/9位,取决于你对UART的设置,当然实际的UART不一定支持所有的字宽. 数据的低位先发,根据你设置的波特率,从低到高每位依次出现在TXD线上,各占一位宽的时间.
最后是一个停止位. 停止位是一位宽的逻辑1. 很多UART接收器都会丢弃接收到的停止位,但有些接收器会检查这个停止位,如果不是逻辑1,它会给出一个错误信息.
通信双方的速率是不可能完全相等的,但如果速率的误差导致最后一位的时间相差1/2位,则无法正确实现数据的传送. 对于8-BIT的UART通信,允许的误差极限是5%,实际上要保证误差不超过3%的样子才行.




请问,这每一位,对端是如何接收的,是在这一位传输的过程中,不停的进行扫描呢,还是在其他的接收方式。
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(中级)

8
 
这就是需要两边设置相同波特率的原因了。
因为波特率固定了。两个bit位之间的时间就固定了。这样UART 模块硬件就按这个间隔的时间去检测一下RX线上面的电平。如果为hi就是1,为low就是0了。

 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

9
 
扫描是肯定不需要的. 通常是在特定时刻采样RXD信号电平,作为收到的数据位.

不过特定的UART接收器可能会多次采样RXD的信号电平,然后进行滤波,提高抗干扰能力.
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

10
 
引用 7 楼 arnold9009 的回复:
引用 6 楼 comusb 的回复:

请问,这每一位,对端是如何接收的,是在这一位传输的过程中,不停的进行扫描呢,还是在其他的接收方式。


传输的是数字信号,不需要一直扫描,只要在指定的时间采样一下接收到的是0还是1就可以了



请问这个指定的采样时间,是指这一位BIT整个传输的时间,还是其中一小部分时间,是采样一次,还是采样多次。

再就是能不能不用“采样”这样的很模糊的概念,直接用什么器件导通,使什么获得高电平这样的描述更容易理解一些。

 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

11
 
如果采样一次,就会在每个BIT时间的中间,读取RXD的电平

如果是多次采样,可能是在一个位宽中间位置,取一时段,再对时间平均分割,进行多次采样,再进行滤波
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

12
 
其实没必要弄这么清楚.
你只需要清楚两点:
1 双方的波特率一致
2 向发送器写的字节, 会在接收器那里收到
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表