UART、IIC、SPI通信协议UART•通用异步收发传输器(UniversalAsynchronousReceiver/Transmitter),通常称作UART,是一种异步收发传输器,是电脑硬件的一部分。将资料由串行通信与并行通信间作传输转换,作为并行输入成为串行输出的芯片,通常集成于其他通讯接口的连结上。通信协议•UART作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输。•其中各位的意义如下:•起始位:先发出一个逻辑”0”的信号,表示传输字符的开始。•资料位:紧接着起始位之后。资料位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ASCII码。从最低位开始传送,靠时钟定位。•奇偶校验位:资料位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。•停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。•空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。•数据传送速率用波特率来表示,即每秒钟传送的二进制位数。例如数据传送速率为120字符/秒,而每一个字符为10位(1个起始位,8个数据位,无校验位,1个结束位),则其传送的波特率为10×120=1200字符/秒=1200波特。数据通信格式低位在前高位在后多字节数据传输注:异步通信是按字符传输的,接收设备在收到起始信号之后只要在一个字符的传输时间内能和发送设备保持同步就能正确接收。下一个字符起始位的到来又使同步重新校准(依靠检测起始位来实现发送与接收方的时钟自同步的)UART工作原理•发送数据过程空闲状态,线路处于高电位;当收到发送数据指令后,拉低线路一个数据位的时间T,接着数据按低位到高位依次发送,数据发送完毕后,接着发送奇偶校验位和停止位(停止位为高电位),一帧数据发送结束。•接收数据过程空闲状态,线路处于高电位;当检测到线路的下降沿(线路电位由高电位变为低电位)时说明线路有数据传输,按照约定的波特率从低位到高位接收数据,数据接收完毕后,接着接收并比较奇偶校验位是否正确,如果正确则通知后续设备准备接收数据或存入缓存。10位串行字符收发时序图IIC•IIC为串行外设接口,IIC总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准,具有总线仲裁机制,通常两线需要接上拉电阻,非常适合在器件之间进行近距离、非经常性的数据通信。IIC通信协议•IIC总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。•起始信号:SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号。•终止信号:SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。起始信号和终止信号图解数据传送格式每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。如果一段时间内没有收到从机的应答信号,则自动认为从机已正确接收到数据。AT24C02的芯片地址AT24C02的芯片地址如图,1010为固定,A0,A1,A2正好与芯片的1,2,3引角对应,为当前电路中的地址选择线,三根线可选择8个芯片同时连接在电路中,当要与哪个芯片通信时传送相应的地址即可与该芯片建立连接,TX-1B实验板上三根地址线都为0。最后一位R/W为告诉从机下一字节数据是要读还是写,0为写入,1为读出。写过程时序图首先是起始信号,然后是目标设备的7位地址+0,确认目标设备存在,收到响应,接着是目标设备的字节地址,字节地址存在,则收到响应,然后发送一字节的数据,目标设备收到后则响应,一字节数据传输完毕,从机释放SDA总线,SDA线电平由低到高,传输结束。读过程时序图首先是起始信号,然后是目标设备的7位地址+0,确认目标设备存在,收到响应,接着是目标设备的字节地址,字节地址存在,则收到响应。然后重新开始,发送目标设备的字节地址+1,收到响应后读取目标地址的一字节数据,读取结束。SPI•SPI是串行外设接口(SerialPeripheralInterface)的缩写。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,MOSI、MISO、SCLK、CS。•SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,MOSI(主机发送,从机接收)、MISO(从机发送,主机接收)、SCLK(时钟)、CS(片选)。SPI的点对点传输在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。在多个从器件的系统中,每个从器件需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。SPI总线接口及时序SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设音时钟相位和极性应该一致。