- 通信接口背景知识
处理器与外部设备通信的两种方式:
串行通信:
按照数据传输方式分为单工、半双工、全双工
串行通信的通信方式:
- 同步通信:速度由时钟同步信号决定,每个时钟信号(如上升沿)发生时传输一个bit,如SPI、IIC通信接口;
- 异步通信:不带时钟同步信号,但有传输约定。如UART(通用异步收发器),单总线。UART(通用异步收发器)通信, 发送/接收端使用统一波特率(确定每个bit所使用的时间),起始位/校验位/停止位;单总线通信,没有约 定波特率,在标准时间内高低电平的占比来确定是1还是0。
同步异步的通信区别:
*1* 同步通信要求接收端时钟频率和发送端时钟频率一致,发送端发送连续的比特流(如);异步通信时不要求接收端时钟和发送端时钟同步,发送端发送完一个字节后,可经过任意长的时间间隔再发送下一个字节。
*2* 同步通信效率高;异步通信效率较低。
*3* 同步通信较复杂,双方时钟的允许误差较小;异步通信简单,双方时钟可允许一定误差。
*4* 同步通信可用于点对多点;异步通信只适用于点对点。
- 常见的串行通信接口
STM32的串口通信接口:
UART:通用异步收发器
USART:通用同步异步收发器
- UART异步通信方式引脚连接方法
- STM32F4 UART通信特点
- 串口通信过程
- STM32串口异步通信需要定义的参数
- 串口操作相关库函数
- 串口配置步骤
1.串口时钟使能: RCC_APBxPeriphClockCmd();
GPIO时钟使能:RCC_AHB1PeriphClockCmd();
2.引脚复用映射: GPIO_PinAFConfig();
3.GPIO端口模式设置:
GPIO_Init();
模式设置为GPIO_Mode_AF
4.串口参数初始化:USART_Init();
5.开启中断并且初始化NVIC(如果需要开启中断才需要这个步骤)
NVIC_Init();
USART_ITConfig();
6.使能串口: USART_Cmd();
7.编写中断处理函数:USARTx_IRQHandler();
8.串口数据收发:
void USART_SendData();//发送数据到串口,DR
uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据
9.串口传输状态获取:
FlagStatus USART_GetFlagStatus();
void USART_ClearITPendingBit();