基础:
UART硬件连接
UART控制器
一般情况下处理器中都会集成UART控制器,我们使用UART进行通信时只需要对其内部的相关寄存器进行设置即可
Exynos4412下的UART控制器(Exynos4412的主频是1000兆)
设置引脚功能的本质是让引脚在芯片内部连接到某一个对应的控制器上
这里可以设置为GPIO、UART和PWM三种功能
通信基础 - 并行和串行
并行通信:
例如:char 类型的数据 1个字节8位 BIT[0] - BIT[7]可以一次性传送过去
串行通信:
过独木桥
单工和双工
单工通信:
发送器 -> 接收器
波特率(每秒钟传送的二进制位的个数)
波特率用于描述UART通信是的通信速度,其单位为(bps bit per second)即每秒钟传送的bit的数量
一、URAT(Universal Asynchronous Receiver Transmitter)
通用异步收发器,是一种通用的串行、异步通信总线,该总线有两条数据线,可以实现全双工的发送和接收,在嵌入式系统中常用于主机与辅助设备之间的通信
异步:收发双方时钟不同步
如果连续发了两个0或者两个1或者多个1或0,如何去判断1和0的个数?
方式一:通过时间去判定,波特率,每秒钟发送的二进制位的个数,那这样子可能会因为两部机器的时间有不同步而产生错位的情况
如何避免?
采用串行通信方式,每次只允许一个位通过,这样子就避免了错位的问题
串口通信可以避免累计误差的出现
UART存在的问题
1)电气接口不统一
-
UART只是对信号的时序进行了定义,而未定义接口的电气特性
-
UART通信时一般直接使用处理器使用的电平,即TTL电平,但不同的处理器使用的电平存在差异,所以不同的处理器使用的UART通信时一般不能直接相连
-
UART没有规定不同器间连接时连接器的标准,所以不同期间之间通过UART通信时连接很不方便
2)抗干扰能力差
UART一般直接使用TTL信号来表示0和1,但TTL信号的抗干扰能力较差,数据在传输过程中很容易出错
3)通信距离极短
因为TTL信号的抗干扰能力较差,所以其通信距离也很短,一般只能用于一个电路板上的两个不同的芯片之间的通信
二、RS232协议原理及应用
这是一个用于串行通讯的标准,该标准采用一个标准的连接器标准中对连接器的每个引脚的作用加以规定,还对信号的电平加以规定
接口:
该标准规定采用一个25引脚的DB-25连接器,标准中对连接器的每个引脚的信号内容加以规定)还对各种信号的电平加以规定;后来IBM的PC机将RS232简化成了DB-9在接器,后来成为事实标准;现在工业控制的RS-232接口一般只使用RXD、TXD、GND三条线;
信号:
该标准规定逻辑“1”的电平为-5v到-15v,辽辑“0”的电平为+5v到+15v,选用该电气标准的目的在于提高抗干扰能力,增大通信距离,其传送距离一般可达15m;
电平转换:
虽然很多处理器中都会集成UART控制器,但处理器产生的信号一般都是TTL信号并不是符合RS232标准的信号,所以一般我们还需要在处理器外部去添加电路对信号的电平进行转换;
R232存在的问题
三、RS485协议原理及应用
该标准由电信行业协会和电子工业联盟定义;使用该标准的通信网络能在远距离(可达1500米)条件下以及电子噪声大的环境下有效传输信号,该标准允许连接多个收发器,即具有多站能力,这样可以利用单一的RS485接口方便地建立起一个设备网络
232和串口都是点对点两个设备的通信协议,485可以形成一个网络,大概可以到32个
信号:
RS485标准规定采用差分信号进行数据传输。两线间的电压差为+2v到+6v表示逻辑“1”,两线间的电压差为-2v到-6v表示逻辑“0”;使用差分信号能有效地减少噪声信号的干扰,延长通信距离,RS485的通信距离可以达到1500m; RS485接口信号的电平比RS232降低了,所以不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便地与TTL电路连接
差分信号: 差分传输是一种信号传输的技术,区别于传统的一根信号线一根地线的做法,差分传输在这两根线上都传输信号,这两个信号的振幅相同,相位相反。在这两根线上的传输的信号就是差分信号。信号接收端比较这两个电压的差值来判断发送端发送的逻辑状态。在电路板上,差分走线必须是等长、等宽、紧密靠近、且在同一层面的两根线。
接口
RS485采用两线制,这种接线方式为总线式拓扑结构,在同一总线上,可以同时存在多个节点;
因为采用两线制,数据的发送和接收都要使用这对差分信号线,发送和接收不能同时进行,所以只能采用 半双工的方式工作,编程时也需要加以处理
电平转换
虽然很多处理器中都会集成UART控制器,但处理器产生的信号一般都是TTL信号并不是符合RS485标准的信号,所以一般我们还需要在处理器外部去添加电路将TTL信号转换成差分信号;
RS485的优势
485在编程时需注意收发不能同时进行
四、IIC总线
IIC总线是PhiLips公司在八十年代初推出的一种串行、半双工总线,主要用于近距离、低速的芯片之间的通信;IIC总线有两根双向的信号线;一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步;IIC总线硬件结构简单,成本较低,因此在各个领域得到了广泛的应用,经常用于一个电路板上的各个芯片之间的通信。
IIC总线是一种多主机总线,连接在IIC总线上的器件分为主机和从机主机有权发起和结束一次通信,而从机只能被主机呼叫;当总线上有多个主机同时启用总线时,IIC也具备冲突检测和仲裁的功能来防止错误产生;每个连接到IIC总线上的器件都有一个唯一的地址(7bit),且每个器件都可以作为主机也可以作为从机(同一时刻只能有一个主机),总线上的器件增加和删除不影响其他器件正常工作;IIC总线在通信时总线上发送数据的器件为发送器,接收数据的器件为接收器;
IIC总线通信过程
-
主机发送起始信号启用总线
-
主机发送一个字节数据指明从机地址和后续字节的传送方向
-
被寻址的从机发送应答信号回应主机
-
发送器发送一个字节数据(这一个字节的数据最后一位来决定除第一次发送的是主机发送给从机还是从机发给主机)
-
接收器发送应答信号回应发送器... …(循环步骤4、5)
-
通信完成后主机发送停止信号释放总线
IIC总线寻址方式
-
IIC总线上传送的数据是广义的,既包括地址,又包括真正的数据
-
主机在发送起始信号后必须先发送一个字节的数据,该数据的高7位为从机地址,最低位表示后续字节的传送方向,‘0'表示主机发送数据,'1'表示主机接收数据;总线上所有的从机接收到该字节数据后都将这7位地址与自己的地址进行比较,如果相同,则认为自己被主机寻址,然后再根据第8位将自己定为发送器或接收器
起始信号和停止信号
字节传送与应答
IIC总线通信时每个字节为8位长度,数据传送时,先传送最高位,后传送低位,发送器发送完一个字节数据后接收器必须发送1位应答位来回应发送器即一帧共有9位
同步信号
IIC总线在进行数据传送时,时钟线SCL为低电平期间发送器向数据线上发送一位数据,在此期间数据线上的信号允许发生变化,时钟线SCL为高电平期间接收器从数据线上读取一位数据,在此期间数据线上的信号不允许发生变化,必须保持稳定。
典型IIC时序
1)主机向从机发送数据
2)从机向主机发送数据
注:阴影部分表示数据由主机向从机传送,无阴影部分表示从机向主机传送;A表示应答,A非表示非应答,S表示起始信号,P表示终止信号
3)主机先向从机发送数据,然后从机再向主机发送数据
停止有两种方式
1、主机不发
2、从机不接
五、SPI总线
SPI总线没有起始信号和终止信号
SPI(Serial Per ipheral Interface)是串行外设接口的缩写,SPI是一种高速的、全双工、同步的串行通信总线;SPI采用主从方式工作,一般有一个主设备和一个或多个从设备;SPI需要至少4根线,分别是MISO(主设备Master输入从设备Out输出)、MOSI(主设备输出从设备输入)、SCLK(时钟)、CS(片选)SPI使用引脚较少且布线方便,所以越来越多的芯片集成了这种通信协议;
什么时候会用到4根以上的线?
多个从机的时候
寻址方式
当主设备要和某个从设备进行通信时,主设备需要先向对应从设备的片选线上发送使能信号(高电平或者低电平,根据从机而定)表示选中该从设备
通信过程
SPI总线在进行数据传送时,先传送高位,后传送低位;数据线为高电平表示逻辑‘1’,低电平表示逻辑‘0’;一个字节传送完成后无需应答即可开始下一个字节的传送;SPI总线采用同步方式工作, 时钟线在上升沿或下降沿时发送器向数据线上发送数据,在紧接着的下降沿或上升沿时接收器从数据线上读取数据,完成一位数据传送,八个时钟周期即可完成一个字节数据的传送;
无应答过程可能会存在主机一直在发,但是从机没有接收到的情况
极性和相位
SPI总线有 四种不同的工作模式(00,01,10,11),取决于极性(CPOL)和相位(CPHL)这两个因素
CPOL表示SCLK空闲时的状态
CPOL=O,空闲时SCLK为低电平
CPOL=1,空闲时SCLK为高电平
CPHA表示采样时刻
CPHA=0,每个周期的第一个时钟沿采样
CPHA=1,每个周期的第二个时钟沿采样
IIC和SPI的异同
相同点
1.均采用串行步的方式
2.均采用TTL电平,传输距离和应用场景类似
3.均采用主从方式工作
不同点
1.IIC为半双工,SPI为全双工
2.IIC有应答机制,SPI无应答机制
3.IIC通过向总线广播从机地址来寻址,SPl通过向对应从机发送使能信号来寻址
4.IIC的时钟极性和时钟相位固定,SPI的时钟极性和时钟相位可调
SPI缺点
需要占用主机较多的口线(每个从机都需要一根片选线);
只支持单个主机;
没有指定的流控制,没有应答机制确认是否接收到数据 。
优点:
支持全双工操作;
操作简单;
数据传输速率较高。