前 言
本文仅供个人参考记录复习,如有错误或者模糊的地方欢迎指教.、
通信接口是指用于设备之间进行数据传输和交流的物理连接、协议和规范。不同设备间的通信接口可以是硬件接口、软件接口或者同时包含硬件和软件的接口。
通信接口
简介
通信接口的主要作用是定义数据传输的方式、规则和参数,确保设备能够正确地发送和接收数据。常见的通信接口包括USART、CAN、USB、SPI(串行外设接口)、I2C(两线制串行总线)
USART
USART广泛应用于各种串行点对点通信场景,如串口通信、蓝牙通信、以太网通信等。通过配置合适的工作模式和参数,USART能够满足不同应用的需求,并实现可靠的数据传输。它可以在全双工或半双工模式下工作,并支持同步时钟和异步通信方式。
CAN
CAN通信可以实现高速、可靠的数据传输,并支持多个节点间的通信。CAN适用于分布式系统,具有抗干扰性强、可靠性高的特点。
USB
USB是一种通用的串行总线接口,用于连接计算机和外部设备。USB提供了高速数据传输、热插拔和多种设备支持的特性。
SPI
SPI是一种高速的同步串行通信接口,用于在设备之间进行全双工的数据传输。SPI通信是基于主从模式,一个主设备可以与多个从设备进行通信。SPI采用四根信号线,包括主时钟信号、数据输入、数据输出和片选信号。它常用于连接存储器芯片、传感器、显示屏等设备,具有高速传输和简单的硬件连接特点。
I2C
I2C是一种基于两根双向数据线的串行通信协议,用于连接芯片间进行短距离通信。I2C具有简单的硬件连接和地址寻址机制,可以同时连接多个设备。I2C的特点是信号线少、占用引脚少,但传输速率较低。
电平标准
TTL:+3.3V或+5V表示1,0V表示0
RS232:-3~-15V表示1,+3~+15V表示0
RS485:两线压差+2~+6V表示1,-2~-6V表示0
串口参数
波特率(Baud Rate)
波特率是指每秒传输的比特数。它表示每秒钟传输的数据位数。波特率的选择应该确保发送和接收方都能以相同的速度进行数据传输。
数据位(Data Bits)
数据位指示每个字节的实际数据位数。常见的数据位设置为5、6、7或8位。
停止位(Stop Bits)
停止位用于指示每个数据字节的结束位置。常用值为1位或2位。
校验位(Parity Bit)
校验位用于在数据传输过程中进行错误检测。它可以选择性地加入到每个字节中,以验证数据的准确性。常见的校验方式包括偶校验(1的个数为偶)、奇校验(1的个数为奇)和无校验。
同步模式(Synchronous Mode)
同步模式下,数据传输与外部时钟信号同步。这需要一个外部时钟源来同步发送和接收方的数据传输。
异步模式(Asynchronous Mode)
异步模式下,数据传输没有外部时钟信号的同步,而是使用起始位和停止位进行同步。
串口时序
起始位
起始位信号用于指示数据传输的开始。它通常是一个低电平信号。
数据位
根据设置的数据位数,逐位传输数据信息。
校验位
如果启用了校验位,此时传输校验位。
停止位
停止位信号用于指示数据传输的结束。常见的停止位数为1位或2位。
空闲状态
在传输完成后进入空闲状态,此时数据线保持高电平。
USART
可根据寄存器的字节数据生成数据帧时序,从TX引脚发出;也可接收RX引脚的数据帧时序,拼接为字节数据,存放在寄存器中。
发送数据时(见上图绿色),要先将待发送数据写入发送数据寄存器(TDR),接着数据就会全部进入发送移位寄存器,TXE置1。这时可以在发送数据寄存器写入新数据,且发送移位寄存器中的数据会在发送器控制的驱动下向右移位(低位先行),以把数据一位一位通过TX发送出去。等移位完成后发送数据寄存器的数据才可继续进入发送移位寄存器。
接收数据时与发送数据时同理(见上图蓝色),只有在数据全部接收到接收移位寄存器后才可进入接收数据寄存器(RDR)。
为防止数据传输过快导致数据被丢弃或被覆盖,USART存在硬件流控引脚。nRTX接对方CTX,n代表要低电平有效。当可以接收数据时RTX配置低电平,请求对方发送;当处理不了时,RTX配置高电平,拒绝对方发送。
数据帧
起始位侦测
进入循环等待状态,等待接收到起始位(低电平)。当串行数据线接收到低电平信号时,串行数据线接会以波特率16倍的频率开始采样,即在一位数据的时间长度中采样16次。若每3位里至少有2个0(NE置1表示有噪音),则表示起始位已经开始,MCU会开始读取后续的数据位。
在16位的正中进行连续数据采样,以接收较多的数据为结果。(若比例我2:1,NE置1)
寄存器
USART_SR(USART 状态寄存器)
该寄存器用于获取USART模块的状态信息,例如接收完成标志、发送完成标志等。该寄存器中的标志位可以通过软件复位或硬件复位方式进行清除。
USART_DR(USART 数据寄存器)
该寄存器用于存放USART发送或接收的数据,读取该寄存器可以获取当前接收到的数据,写入该寄存器可以将数据发送出去。
USART_BRR(USART 波特率寄存器)
该寄存器用于设置波特率的分频系数,根据分频系数,USART可以生成与所需通信速率匹配的时钟信号。