当前位置: 代码迷 >> 单片机 >> UART传输时序的有关问题
  详细解决方案

UART传输时序的有关问题

热度:100   发布时间:2016-04-28 14:53:44.0
UART传输时序的问题
小弟不才,没学过多少硬件方面的只是,想问问各位大侠 关于uart 通讯时序的几点问题

这个图上说“起始位:先发出一个逻辑”0”信号,表示传输字符的开始。” 和 “停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。” 
这两句话,我有点疑惑,因为在通信过程有很多0或者1,你怎么就知道其中的某一个0或者1就是 start位和stop位呢?
------解决方案--------------------
波特率啊,一旦波特率设定,那么···
其实UART收发器就是个移位寄存器,那个波特率就相当于时钟频率。哪怕你连着几个0都可以通过这个频率的时钟脉冲来确定。
嗯,一个萝卜一个坑,就像现代化生产的流水线···

所以,如果接收端设置的波特率不符合发送的,那么接收到的就会错。。
------解决方案--------------------
这个问题不要太纠结,配置好参数就可以了
------解决方案--------------------
起始位是同步位
------解决方案--------------------
应该有个时基定时器吧!通过定时来检测0/1的时长来判断有几个0或者1
------解决方案--------------------
虽然不懂,但是还是顶下
------解决方案--------------------
引用:
Quote: 引用:

波特率啊,一旦波特率设定,那么···
其实UART收发器就是个移位寄存器,那个波特率就相当于时钟频率。哪怕你连着几个0都可以通过这个频率的时钟脉冲来确定。
嗯,一个萝卜一个坑,就像现代化生产的流水线···

所以,如果接收端设置的波特率不符合发送的,那么接收到的就会错。。

哦,我可以理解为:相当于uart传输的的每一位都是都是固定的吗,即:
------解决方案--------------------
第一位为start 
------解决方案--------------------
第2-9位为数据位
------解决方案--------------------
第10位为stop位
------解决方案--------------------
 
第一位就算是必须是0,第十位必须是1,对吗,换句话,计算我不知道它是0或者1,我都知道这一位对应的事start和stop,
我这样理解对吗?

是的,如果要求严格的话,你可以检查下stop位
空闲状态时IO口是高,当一旦低了就意味着告诉对方"我要发数据了,准备好", 然后对方安装约定好的波特率来接收