时钟特性,比如发送一个波形高电平,然后低电平,接收方怎么知道是1、0还是1、1、0、0 ?
这就需要有一个时钟信号来告诉接收方什么时候需要采集数据。时钟特性分为同步和异步。
I2C和SPI有单独的时钟线,所以它们是同步的,接收方可以在时钟信号的指引下进行采样。
串口、CAN和USB没有时钟线,所以需要双方约定一个采样频率,这就是异步通信,并且还需要加一些帧头、帧尾等,进行采样位置的对齐。
USART
USART可以单片机到单片机、单片机到电脑、单片机到各式各样的模块间通信,极大拓展了单片机的应用范围,增强了单片机系统的硬件实力;I2C/SP是芯片间通信
起始位:标志一个数据帧的开始,固定为低电平:
首先串口的空闲状态是高电平,也就是没有数据传输的时候,引脚必须要置高电平,作为空闲状态。然后需要传输的时候,必须要先发送一个起始位。这个起始位必须是低电平,来打破空闲状态的高电平产生一个下降沿,这个下降沿就告诉接收设备,这一帧数据要开始了
停止位:用于数据帧间隔,固定为高电平:
停止位也是为下一个起止位做准备的。如果没有停止位,当数据最后一位是0的时候,下次再发动新的一帧,是不是就没法产生下降沿了,这就是起始位和停止位的作用
校验位:用于数据验证,串口使用的是奇偶校验
串口的参数
波特率:这是串口通信的速率,串口一般是使用异步通信,所以需要双方约定一个通信速率。比如每隔一秒发送一位,就也得每隔一秒接收一位。如果接收快了,就会重复接收某些位。如果接收慢了,就会漏掉某些位,所以说发送和接收必须要约定好速率。这个速率参数就是波特率。波特率的意思是每秒传输码元的个数。单位是码元每秒,或者直接叫波特。
另外还有个速率表示叫比特率。比特率的意思是每秒传输的比特数,单位是bit/s或者叫bps。
在二进制调制的情况下,一个码元就是一个比特,此时波特率就等于比特率。单片机的串口通信基本都是二进制调制,也就是高电平表示1低电平表示0,一位就是1bit。所以说这个串口的波特率经常会和比特率混用,不过这也是没关系的,因为这两个说法的数值相等,如果是多进制调制,波特率就和比特率不一样了。
反映到波形上,比如我们双方规定波特率为1000bps,就表示一秒要发1000位,每一位的时间就是一毫秒,发送方每隔一毫秒发送一位,接收方每隔一毫秒接收一位,这就是波特率,它决定了每隔多久发送一位
理论详细来源江科大笔记
/