精华 | 剖析单片机串口最底层的本质
时间:2023-02-11 01:30:00
嵌入式开发,UART串口是最常见的通信接口。你知道为什么串口这么常见吗?本文将带您深入了解串口底部的本质。
一、串口通信是什么?
串行通信是指数据只能通过一条接收线和一条发送线传输到位的通信方式。虽然串行通信比字节传输的并行通信慢,但串行口只能通过使用两条线实现数据传输。
典型的串口通信由地线、发送和接收三条线完成。由于串口通信是异步的,端口可以在一条线上发送数据,同时在另一条线上接收数据。串口通信最重要的参数是波特率、数据位、停止位和奇偶的验证。这些参数必须匹配两个需要串口通信的端口,这也是实现串口通信的前提。
图1:串行通信示数据传输意图
二、串口通信通信协议?
最初的数据是模拟信号输出的简单过程量,然后仪表界面出现了RS232接口可以实现点对点通信,但这种方式不能实现网络功能,这促进了RS485。
我们知道串口通信的数据传输是0和1,在单总线,I2C、UART逻辑1或逻辑0是通过一条线的高低电平来判断的,但信号线GND与其他设备形成通信模式,容易产生干扰,抗干扰性能相对较弱。因此,差异通信,支持多机通信,强抗干扰RS485被广泛使用。
RS485通信最大的特点是传输速度可以达到10Mb/s以上,传输距离可达3000米左右。需要注意的是,虽然485的最大速度和最大传输距离很大,但传输速度会随着距离的增加而减慢,所以两者不能兼得。
三、串口通信的物理层
串口通讯的物理层有很多标准,例如上面提到的,我们主要讲解RS-232标准,RS-232标准主要规定了信号的用途、通信接口和电平标准。
在上述通信方式中,两个通信设备"DB9接口"连接通过串口信号线建立,并在串口信号线中使用"RS-232标准"因为RS-控制器无法直接识别232电平标准的信号,因此这些信号将通过一个"芯片的电平转换"转换为控制器识别"TTL校准"只有电平信号才能实现通信。
下图为DB9标准串口通信接口:
DB9引脚说明:
上表是计算机端。DB由于两个通信设备之间的收发信号,9公头标准接法(RXD与TXD)应交叉连接,因此调制调解器端DB9母头的收发信号接法一般与公头相反。只要使用两个设备之间的连接"直通型"串口线可以连接起来。
串口线中的RTS、CTS、DSR、DTR及DCD使用逻辑的信号 1表示信号有效,逻辑0表示信号无效。例如,当计算机控制时DTR当信号线表示为逻辑1时,它是为了通知远端调制调解器,该机器已准备好接收数据,0表示尚未准备就绪。
四、波特率
波特率是指数据信号对载波的调制速率,用单位时间内载波调制状态变化的次数来表示;
例如,波特率为96000bps;代表每秒96000的传输bit,也就是说,每秒分为9600等份。
所以,每1bit时间是1/9600秒=104.1666...us。约0.1ms。由于是9600等份,即每1bit然后是下一个比特,没有额外的间隔。为了实现串口通信,收发端设置的波特率必须相同,否则无法实现通信。
一致的收发波特率可以实现通信:
收发波特率不一致,导致收发波特率不一致RX端不能正常接收:
五、串口通信的数据结构
起始位:起始位置必须是持续比特时间的逻辑0电平,标志传输字符的开始,接收器可以使用起始位置与发送器的数据同步。
数据位:数据位跟随起始位,是通信中真正有效的信息。数据位的位数可以由通信双方共同约定。传输数据时,先传输字符的低位,再传输字符的高位。
奇偶校验位:奇偶验证位置只有一个,用于奇偶验证或偶偶验证,不需要奇偶验证位置。如果是奇怪的验证,则需要确保传输的数据具有奇怪的逻辑高度;如果是偶数验证,则需要确保传输的数据具有偶数的逻辑高度。
停止位:停止位可以是1,1.软件可以设置5位或2位。它必须是逻辑1电平,标志着传输字符的结束。
空闲位:空闲位是指从一个字符的停止位结束到下一个字符的起始位置,表示线路处于空闲状态,必须用高电平填充。
六、单双工通讯
单工:数据传输只支持数据在一个方向上传输;
半双工:允许数据在两个方向传输,但在某个时刻只允许数据在一个方向传输。事实上,它是一种单工通信,不需要独立的接收端和发送端,可以合并为一个端口;
全双工:允许数据同时向两个方向传输,因此全双工通信是两种单工方式的结合,需要独立的接收端和发送端。
七、STM串口通信32
STM有两种串口通信接口:UART(通用异步收发器),USART(大容量同步异步收发器)STM32F10x系列芯片分别由三个芯片组成USART和两个UART。
两个芯片之间的连接GND共地,同时TXD和RXD交叉连接可以在两个芯片之间进行TTL电平通信。
但如果是芯片和PC除共地条件外,机器连接不能使用上述直接交叉连接,尽管两者都有TXD和RXD引脚,但通常PC机使用的是RS232接口(9针)通常是TXC和RXD通过电平转换获得芯片和PC机的RS232接口直接通信,芯片的输入输出端口也需要电平转换RS232型,再交叉连接,两者的电平标准不同:
单片机点评标准(TTL电平): 5V表示1,0V表示0;RS232电平标准: 15/ 13V表示0,-15/-13表示1。
所以单片机和PC串口通信应遵循:单片机串口和上位机给出的RS232口之间,通过电平转换电路实现TTL电平与RS232电平间转换。如果使用USB串口通信也可以实现,USB如下所示。
1.芯片去哪里了?SIA年报揭秘~
2.树莓派偷偷换了新的SoC!
3.MCU从入门到躺平
4.车规级MCU国内替代选择题:汽车厂战略激进,直供能成为未来主流?
5.编程语言成功的几个要素
6.碳中和,不确定世界的确定性
免责声明:本文在网上转载,版权归原作者所有。如果涉及作品的版权,请联系我们,我们将根据您提供的版权证明材料确认版权,并支付报酬或删除内容。