USART通信接口双工全双工通信双方同时、独立进行发送和接收数据双向传输互不干扰半双工通信双方均可收发数据但同一时刻只能收发选一种只有一根通信线路单工数据仅能固定单向传输一方只发送、另一方只接收无反向通信时钟同步通信双方共用统一的时钟信号数据严格按照时钟节拍传输无额外同步位传输效率高异步无统一时钟线双方提前约定波特率通过起始位和停止位实现数据帧同步电平单端以信号对地的电压表示逻辑电平抗干扰能力弱差分采用两根极性相反的信号线传输两个线之间的电压差为差分信号抗干扰强串口通信TX为输出引脚RX为输入引脚因此需要交叉连接单端电平GND是必须要接的电平标准不一致时需要加电平转换芯片TTL电平3.3V或5V表示10V表示0RS232电平-3 ~ -15V表示13 ~ 15V表示0RS485电平两线压差2 ~ 6V表示1-2 ~ -6V表示0差分信号串口参数波特率串口通信的速率起始位标志一个数据帧的开始固定为低电平数据位数据帧的有效载荷1为高电平0为低电平低位先行校验位用于数据验证根据数据位计算得来停止位用于数据帧间隔固定为高电平发送低位先行如 0x55 发送的应为 10101010USART - 通用同步/异步收发器USART是STM32内部集成的硬件外设可根据数据寄存器的一个字节数据自动生成数据帧时序从TX引脚发送出去也可自动接收RX引脚的数据帧时序拼接为一个字节数据存放在数据寄存器里自带波特率发生器最高达4.5Mbits/s可配置数据位长度 (8/9)、停止位长度 (0.5/1/1.5/2)可选校验位无校验/奇校验/偶校验支持同步模式、硬件流控制、DMA、智能卡、IrDA、LINSTM32F103C8T6 USART资源USART1、USART2、USART3USART结构TDR和发送移位寄存器双缓冲机制提高传输速率当TDR把数据全部运送到发送寄存器的时候TXE置1可以重新写入要发送的数据RDR和接收移位寄存器接收移位寄存器可以将接收到的数据合成一个字节再传到RDR转移时将RXNE置1可以进行接收数据的读取可以申请中断nRTS和nCTS - 硬件流控制防止传输过快数据丢失能接收时nRTS向对方的nCTS输出低电平数据过快读取不过来时nRTS向对方的nCTS输出高电平对方将停止发送SCLK可以用来兼容别的协议同步时钟信号可以自适应波特率识别未知的波特率唤醒单元可以通过这个实现多设备通信波特率发生器发送器和接收器的波特率由波特率寄存器BRR里的DIV确定计算公式波特率 系统时钟 / (16 * DIV)数据帧一般保持每个数据帧传输一个字节9位字长有校验8位字长无校验停止位一般为1位数据帧采样在1位中采样16次波特率是除了16的判断起始位的方法见图如果没通过则重新判断起始位如果通过了但是不是全为0则将NE置1检测8、9、10次位于一位中的中间选取出现次数多的值如果三次不是全都一样则将NE置1数据包传输采用包头和包尾来进行区分包头包尾的选取应选择在中间不会出现的数据在读取的时候可以运用状态机法存储的时候运用环形缓冲区防止数据溢出