名称 | 引脚 | 常用在 | 双工 | 时钟 | 电平 | 设备 |
---|---|---|---|---|---|---|
USART | TX、RX | 单片机和pc,单片机和单片机 | 全双工 | 异步 | 单端 | 点对点 |
I2C | SCL、SDA | 单片机和单片机 | 半双工 | 同步 | 单端 | 多设备 |
SPI | SCLK、MOSI、MISO、CS | 单片机和单片机 | 全双工 | 同步 | 单端 | 多设备 |
CAN | CAN_H、CAN_L | 智能汽车 | 半双工 | 异步 | 差分 | 多设备 |
USB | DP、DM | 半双工 | 异步 | 差分 | 点对点 |
串口通信(RS232/485等)
现在电脑上一般都没有RS-232(DB9)接口,俗称串口接口,使用USB接口进行串口通信。
RS-232电平直接连接到STM32上会烧掉芯片,也就是COMS/TTL电平不能与RS-232电平直接交换信息,需要一个电平转换芯片,阿波罗开发板选择的是 TP3232(也可以用 SP3232)。同时需要USB/串口转换电路芯片(CH340)
USART和RS232/485的联系和区别
狭义串口:指串口协议,就是时序图、数据收发先后顺序等,是抽象出来的协议;
广义串口:指符合串口协议的接口,UART、RS232、RS485在实际工作中都叫串口;
UART:主要指Soc端的串口控制器和引脚,也是串口编程主要考虑的;
RS232/485是两个Soc的串口引脚相连的中间电路,负责解决传输距离和电压不匹配问题;
串口协议规定了数据的传输时序
UART 是指 SOC 端 串口控制器 和 引脚
RS232/485 是电平标准,具体的通信协议都是串口协议,但是使用的电压范围、是电平信号还是差分信号等不同
USART
USART基本介绍
USART(Universal Synchronous/Asynchronous Receiver/Transmitter)
通用同步/异步收发器。
UART 就是异步收发器。通常很少用到 USART 的同步功能。
比特率:每秒钟传输多少个比特位。对于接收方来说,意味着多久取一次电平数据。
波特率:每秒传输多少个码元。USART的码元就是比特,故比特率=波特率。
起始位:下降沿+1bit低电平 代表起始位。
数据位:低位先行。可选5~9位,常用 8 位。
校验位:奇/偶校验,数据位1的个数为奇/偶则置位。
停止位:1bit高电平代表停止位
STM32的USART的同步功能只是多了个IO口支持时钟信号输出,但是不支持时钟信号输入,这个同步模式更多的是为了,兼容别的协议或者特殊用途而设计的,并不支持两个USART之间进行同步通信。
STM32的USART基本结构
波特率发生器 的时钟来源是 APB2/APB1
STM32F1有5个串口,3个USART,2个UART
USART1挂载在APB2总线(72MHZ),其他挂载在APB1总线(36MHZ)
经过波特率发生器分频后的总线信号通向发送控制器和接收控制器 。
发送控制器和接收控制器用来控制发送数据寄存器的发送移位寄存器和接收数据寄存器的接收移位寄存器(右移)。通过GPIO口的复用输出倒TX、RX引脚。
当数据由数据寄存器转移