串口概念
简单理解,串口就是单片机(MCU)与相关芯片串行通信的接口,所谓串行,就是数据每位按顺序进行传输。
相关概念
空闲位:MCU和外设如果不进行数据传输时,数据线发送空闲位,空闲位为高电平
起始位:MCU和外设如果要传输数据,首先要发送起始位为低电平有效,一个bit位
数据位:MCU和外设数据传输时,有效的数据位数有效位数:5/6/7/8,一般选择8bit
奇偶校验位:用来指示数据传输是否发生异常,有效位数为一位
校验方式有三种:
奇校验(odd)、偶校验(even)、不校验(none)
停止位:MCU和外设如果要停止数据传输,只需发送停止位即可
有效位数为1位或者2位,高电平有效
波特率:MCU和外设数据传输时的速率
工作模式
单工:MCU和外设数据传输时,只能朝一个方向进行
半双工:MCU和外设数据传输时,可以双向,但是同一时刻只能朝一个方向
全双工:MCU和外设数据传输时,可以同时双向进行
此时此刻需要2根数据线!一根用于发送数据TX,一根用于接收数据RX,一般UART采用全双工。
举例说明
MCU(单片机)给BT(蓝牙模块)发送0x95(10010101)数据并且数据校验采用奇校验,发送过程如下:
发送端:
1.MCU将0x95发送给BT
2.MCU计算0x95中1的个数(4个1,4为偶数)
3.由于1的个数是4偶数,而现在采用奇校验所以校验位应该补1(4+1=5奇数)所以MCU最后向BT发送校验位的值为1
接收端:
1.BT首先将0x95接收到
2.BT计算0x95中1的个数为4(偶数)
3.BT再次接收CPU发送的校验位1
4.BT进行匹配,BT发现数据中1的个数为偶数,并且CPU发送的校验位为1所以BT认为CPU发送的数据没有异常(如果采用不校验,CPU和外设无需发送校验位)
上面例子时序图分析
MCU向BlueTooth发送0x95数据为例,UART的工作参数为:
波特率:115200, 数据位8 停止位1 奇校验
0x95对应的二进制10010101,传输从低位开始