串口通信
发表于|更新于|分类7 (单片机)
1.通信常见类型
1.1按数据通信方式分类
串行通信: 数据逐位按顺序依次传输
并行通信: 数据各位通过多条线同时传输
1.2按数据传输方向分类
单工通信:数据只能沿一个方向传输
半双工通信:数据可以沿两个方向传输,但需要分时进行
全双工通信:数据可以同时进行双向传输
1.3按数据同步方式分类
同步通信:共用同一时钟信号
异步通信:没有时钟信号,通过在数据信号中加入起始位或停止位等一些同步信号
2.串口通信
2.1含义
通过发送和接收字节的位(bit)来进行通信
2.2通信接口
UART: 异步全双工通信
1-wire: 异步半双工
IIC: 同步半双工
SPI: 同步全双工
2.2 异步通信协议
启动位: 必须占1个位长,保持逻辑0电平
有效数据位: 可选5、6、7、8、9个位长,LSB在前,MSB在后
校验位: 可选占1个位长,也可以没有该位
停止位: 必须有,可选占0.5、1、1.5、2个位长,保持逻辑1电平
2.3引脚的复用与通用
通用:IO端口的输入或输出是由GPIO外设控制,我们称之为通用
复用:O端口的输入或输出是由其它非GPIO外设控制,我们称之为复用
3.波特率
3.1 计算公式(F1系列)
$$
baud=fck/(16*USARTDIV)
$$
3.2寄存器(BBR)
把USARTDIV的整数部分写入位[15:4],USARTDIV的小数部分写入[3:0]
4.配置HAL库步骤
4.1配置串口工作参数
HAL_UART_Init(); |
4.2串口底层初始化
HAL_UART_MspInit(); |
4.3开启异步接收中断
HAL_UART_Receive_IT(); |
4.4设置优先级,使能中断
HAL_NVIC_SetPriority(); |
4.5编写中断服务函数
USARTx_IRQHandler(); |
4.6串口数据发送
HAL_UART_Transmit(); |
文章作者: Jamth
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Jamth!