43,串口通讯相关知识点和原理分析

  1. 是异步串行接口。异步是没有时钟同步,串行就是将字节一个bit挨着一个bit先后发送。
  2. 应用很广泛,是一种最最基本的单片机或者嵌入式系统的通讯手段,几乎所有的单片机或者soc芯片都支持串口通讯。
  3. 另外还有其延伸出来的总线形式RS232,RS485,RS422。
    1. RS232是用比较高的电压范围来是表示0和1,可以简单记忆为与GND比较,高于GND电压是0,低于GND电压是1。这跟数字高电平为1,低电平为0为特征的ttl/coms电平相比正好反向了,所以有的MAX3232芯片用下图反相器来表达芯片的功能。

 

 

    1. RS422是省略掉了GND线,用差分信号表达高低电平:两根数据线A,B,当A电平大于B,表示逻辑1;反之B大于A表示逻辑0。(如果A,B相等呢,那就好像某根信号线的电平转换,认为时间足够短是不做考虑的)。

 

 

    1. RS485是半双工的RS422。因此需要约定的协议确定双发谁来占用总线发送数据,比如MODBUS协议,自己使用RS485总线首先要规划好通讯协议。

另外我们最常见的USB转串口是TTL/COMS数字电平的接口标准。高电平代表1,电平代表0。

 

那三个通讯标准说的0,1的表达,他们都是由基本的数字逻辑产生并通过专用芯片或者电路转换成对应的物理通讯协议标准。直观上说就是先产生高低电平的1和0信号,再用专用芯片转成所需要的物理通讯方式。我们这里研究的就是这个数字信号的串口发送器和接收器。

 

2,一个字节的格式:

起始,B0,B1,…..B7,parity,stop,idle

注意LSB,MSB的含义,就是最低权位和最高权位的意思。

 

  1. 分析仪一下各个位,空闲状态下总线电平是1,当数据开始发送的时候,就将电平拉低一周期,接收器端收到这个电平从低到高的跳变,认为数据开始传输了。之后按照约定的波特率,再接下来固定的时间点采样数据。数据8位传输之后,接着就是1位的校验位parity,可以是无校验,奇校验偶校验。之后就是停止位,之后总线进入空闲状态。
  2. 校验位分奇校验和偶校验,奇校验odd就是加入校验位了后(8位数据+1位校验)1的个数位是单数。偶校验even就是加入校验位了后(8位数据+1位校验)1的个数位是双数。
  3. 字节之间最好加入多个停止位,或者说空闲位(停止位我们可以控制,空闲位往往不受控制)用加多停止位的方式将两个字节之间留有一定的gap,利于接收端准确判断一个字节的开始和结束,从而正确接收数据。当串口的接收设备是低速的设备,比如单片机,这点尤其重要。
  4. 关于波特率,我们看SALEAE软件界面,https://sysclk.taobao.com/
  1.  

这里看采样点,当采样点的位置不对的时候我们认为就出现错误了。另外考虑到异步设备都是每个字节进行同步的,所以我们认为当这10来次采样累计了误差后,后面的采样点落在错误的位置,这样波特率误差就是不容许的了。我们以10次采样为例,累计偏差一个位,也就是10%的波特率偏差,这是最恶劣的情况,当有10%的波特率偏差时候,我们认为已经不能正常接收数据了。反过来想,我们也可以认为这个波特率的偏差范围还不小呢,2%,3%这样的波特率偏差是不会造成影响的。

猜你喜欢

转载自blog.csdn.net/weixin_40640020/article/details/92376193
今日推荐