前言:
在现代电子通信领域,串行通信总线扮演着至关重要的角色,它们是电子设备之间数据交换的桥梁。串行通信以其灵活性和成本效益,在嵌入式系统和各种外设之间建立了高效的通信链路。本文将深入探讨几种常见的串行通信协议:UART、RS232、RS485、IIC和SPI。通过详细的介绍和比较,我们将了解这些协议的工作原理、特点以及它们在实际应用中的适用场景。文章将从基础概念入手,逐步深入到具体的实现和应用,为读者提供全面的技术视角。
1. UART
UART:(Universal Asynchronous Receiver Transmitter) 即时通用异步接收器,是一种通用串行、异步通信总线该总线有两条数据线,可以实现全双工的发送和接收,在嵌入式系统中通常用于主机与主机辅助设备之间的通信 。
1.1 通信基础
1.1.1 串行和并行
soc与外部设备之间的通信!
并行通信:8位通过8根线一起发送
串行通信:8位1位1位的去传
在同等条件下并行通信的速度要快于串行通信,但是并行通信增加了其布线难度
1.1.2 单工和双工
单工通信:发送器直接发送给接收器
全双工:双方可以同时发
实际应用的时候看数据线的条数就可以判断,比方说iic只有一根线只能是半双工,两根线以上大概率是全双工!
1.1.2 波特率
波特率是用于描述UART通信时的通信速度,其单位为bps(bit per second)即每秒钟传送的bit的数量
1.1.3 UART帧格式
串口协议规定:
- 数据线在空闲的时候必须搞成高电平,
- 起始位为低电平,
- 发送位,把要发送的数据往信号线上放,串口协议先发低位再发高位
- 数据位5-8位都是可以的,但是一般都是发8位刚刚好时一个字节!
- 校验位校验有没有产生错误!(可有可无)
- 停止位1、1.5、2 位,都是可以的,但是不能没有,停止位必须是高电平
串口通信是异步通信,各自都有各自的时钟,像spi、iic都是属于同步通信的范畴!
硬件连接:
注意:一方的TXD要连接到另外一方的RXD
UART 控制器
一般情况下处理器中都会UART控制器,我们使用UART进行通信的时候只需要对其内部的相关寄存器进行设置即可
我们使用串口的时候只需要设置怎样的通信速度(波特率)即可
引脚功能设置
设置引脚功能的实质是让引脚再芯片内部连接到某一个对应的控制器上
Exynos4412下的UART控制器:
串口控制器也会集成一个发送器,和一个接收器,控制窗口发送速率这样一个过程
UART编程: