接口/总线/驱动
1、串口通讯时序:
如上图所示,串口时序由起始位、数据位、校验位、停止位组成。
起始位 :占用1Bit,低电平有效
数据位 :可以是5bit、6Bit、7Bit、8Bit,其中最常用是8Bit
校验位 :奇校验、偶校验、无校验,占用1bit,无校验位时不占用。
偶校验(even parity):校验原则是,数据位和校验位中1的个数为偶数
奇校验(odd parity):校验原则是,数据位和校验位中1的个数为奇数
无校验:即时序图中没有校验位
停止位 :占用1Bit、1.5Bit、2Bit,高电平有效
2、串口通讯速率
常用的串口通讯速率:2400bps、4800bps、9600bps、19200bps、38400bps、115200bps。现在最常用的应该是115200bps的速率,不快不慢正合适。
当然有些应用场合数据量较大,使用低波特率数据传输占用时间太长,应该适当提高波特率,例如我司有一款产品设置波特率接近1Mbps,单片机使用这么高的速率必须开启硬件流控,甚至停止位也要大于1Bit。
3、最基本的串口数据传输
最基本的串口传输只需要两根信号线,即TXD和RXD,通讯双方交叉相接,TXD发送数据,RXD接收数据。
传输数据时双方必须保证通讯波特率、数据位、检验位,停止位保持一致,才能正确通讯。这种串口传输方式有一定的不可靠性,可能会导致数据丢失,例如,MCU1向MCU2发送数据,此时MCU2正在忙于其他任务,无暇顾及串口接收,MCU1发送的数据把MCU2的FIFO填满后,剩下的字节MCU2会直接抛弃。
4、带流控的串口数据传输
此种方式使用4根线传输数据,即,TXD、RXD、CTS、RTX。和基本数据传输方式相比增加了CTS和RTS两个管脚,CTS和RTS也是交叉相接。
RTS :Require To Send缩写,请求发送,此管脚为输出管脚,用于指示自己可以接收数据,输出低电平表示可以接收数据,输出高电平指示不能接收数据。
CTS :Clear To Send缩写,允许发送,此管脚为输入管脚,用于判断发送方是否能够接收数据,读取到低电平表示对方能够接收数据,读取到高电平表示对方不能接收数据。
这种传输方式能够保证数据传输不会丢数据,保证数据的完整性。例如,MCU1向MCU2发送数据,此时MCU2正在忙于其他任务,无暇顾及串口接收,MCU1发送的数据把MCU2的FIFO填满后,MCU2会把自己的RTS拉高,指示自己不能接收数据,此时MCU1发现自己的CTS变高了,MCU1的数据发送会进入等待状态,直到MCU1的CTS变低。
当MCU2把自己的串口FIFO中的数据读取出来后,MCU2的RTS会自动变低,这时候MCU1可以继续发送数据。这种带硬件流控的传输方式,保证了数据的完成性。
5、万能的串口
串口简单易用,几乎任何接口都能转成串口使用,尤其是把一些复杂接口转换成简单的串口,能够大大降低研发成本。
全部0条评论
快来发表一下你的评论吧 !