通信接口背景知识 设备之间通信的方式 一般情况下,设备之间的通信方式可以分成并行通信和串行通信两种。并行与串行通信的区别如下表所示。 串行通信的分类 1、按照数据传送方向,分为:
2、按照通信方式,分为:
在同步通讯中,收发设备上方会使用一根信号线传输信号,在时钟信号的驱动下双方进行协调,同步数据。例如,通讯中通常双方会统一规定在时钟信号的上升沿或者下降沿对数据线进行采样。 在异步通讯中不使用时钟信号进行数据同步,它们直接在数据信号中穿插一些用于同步的信号位,或者将主题数据进行打包,以数据帧的格式传输数据。通讯中还需要双方规约好数据的传输速率(也就是波特率)等,以便更好地同步。常用的波特率有4800bps、9600bps、115200bps等。 在同步通讯中,数据信号所传输的内容绝大部分是有效数据,而异步通讯中会则会包含数据帧的各种标识符,所以同步通讯效率高,但是同步通讯双方的时钟允许误差小,稍稍时钟出错就可能导致数据错乱,异步通讯双方的时钟允许误差较大。 常见的串行通信接口 STM32串口通信基础 STM32的串口通信接口有两种,分别是:UART(通用异步收发器)、USART(通用同步异步收发器)。而对于大容量STM32F10x系列芯片,分别有3个USART和2个UART。
对于两个芯片之间的连接,两个芯片GND共地,同时TXD和RXD交叉连接。这里的交叉连接的意思就是,芯片1的RxD连接芯片2的TXD,芯片2的RXD连接芯片1的TXD。这样,两个芯片之间就可以进行TTL电平通信了。STM32与51单片机串口通信相关实例,请移步此处:STM32与51单片机串口通信实例。 若是芯片与PC机(或上位机)相连,除了共地之外,就不能这样直接交叉连接了。尽管PC机和芯片都有TXD和RXD引脚,但是通常PC机(或上位机)通常使用的都是RS232接口(通常为DB9封装),因此不能直接交叉连接。RS232接口是9针(或引脚),通常是TxD和RxD经过电平转换得到的。故,要想使得芯片与PC机的RS232接口直接通信,需要也将芯片的输入输出端口也电平转换成RS232类型,再交叉连接。
RS-232通讯协议标准串口的设备间通讯结构图如下: 所以单片机串口与PC串口通信就应该遵循下面的连接方式:在单片机串口与上位机给出的RS232口之间,通过电平转换电路(如下面图中的Max232芯片) 实现TTL电平与RS232电平之间的转换。STM32与PC之间通信实例,请移步此处:STM32实例-用按键控制串口发送数据,文末附代码。 通信过程中只有两个脚参与通信。
单片机的P3口是有两个复用接口RXD 和TXD。这是单片机进行串行通信的收发口,连接应该错位的对应到电脑的TDX RDX上。注意:单片机和RS232的电平标准是不一样的。 单片机的电平标准 TTL电平 :+5V表示1 0V表示0。 RS232的电平标准 +15/+13 V表示1 -15/-13 表示0。 所以 单片机与电脑串口通信就应该遵循下面的连接方式: 在单片机与上位机给出的RS232口之间通过电平转换电路(最上面图中的Max232芯片) 实现TTL电平与RS232电平之间的转换,PC串口与单片机串口连接方式图: 注意这两个DB9:DB91是在电脑上的 DB92是在单片机实验板上焊接着的。 这里的交叉连接的意思是 DB91的RXD连着DB92的TXD。 DB92的RXD连着DB91的TXD这样交叉着连接,如果电脑没有RS232口 只有USB口,可以用串口转接线转出串口,如下图所示。 这个时候在电脑上位机上需要安装串口驱动程序。 注意,这个驱动程序驱动的是PL2303芯片(在上图的大头里面) 使得RS232信息转换成USB信息。 下图为上图的内部结构: ![]() 用串口通信比USB简单,因为串口通信没有协议,使用方便简单。
STM32中UART参数 串口通讯的数据包由发送设备通过自身的TXD接口传输到接收设备的RXD接口,通讯双方的数据包格式要规约一致才能正常收发数据。 |
|
来自: 新用户0118F7lQ > 《待分类》