个人网站建设可行性分析报告,提升学历的十大好处是什么,网页设计意图怎么写,金华seo排名嵌入式开发中#xff0c;常见的外设通信接口/协议有SPI#xff0c;I2C#xff0c;UART三种#xff0c;本文先分三个部分对SPI#xff0c;I2C#xff0c;UART进行介绍#xff0c;最后对这三种协议进行比较。
1 SPI
1.1 SPI的简介
SPI#xff08;Serial Peripheral …嵌入式开发中常见的外设通信接口/协议有SPII2CUART三种本文先分三个部分对SPII2CUART进行介绍最后对这三种协议进行比较。
1 SPI
1.1 SPI的简介
SPISerial Peripheral Interface串行外围设备接口。SPI是一种高速的全双工的同步的通信总线。SPI没有定义速度限制一般的实现通常能达到甚至超过10 Mbps已知的有的器件SPI已达到50Mbps。
1.2 SPI接口的引脚
MOSIMaster Out Slave In主设备数据输出从设备数据输入MISOMaster In Slave Out主设备数据输入从设备数据输出SCLKSerial Clock时钟信号由主设备产生主从设备共用CS/SSSlave Select从设备使能信号由主设备控制低电平有效
1.3 SPI的工作原理
SPI通过移位寄存器实现数据的交换每经历一个时钟脉冲主设备和从设备同时发送或接收一位数据如上升沿发送数据下降沿接收数据。发送数据时将移位寄存器中的数据左移一位最高位发送出去接收数据时将数据补充到移位寄存器的最后一位当完成指定位数的数据发送或接收后移位寄存器将数据存放到缓冲器中等待读取
1.4 SPI的四种工作方式
为了和外设进行数据交换需要根据外设工作要求设置SPI的时钟极性CPOL和时钟相位CPHA。CPOL和CPHA决定数据发送和接收的时序注意数据总是先发送后接收的。
CPOL时钟极性选择 CPOL 0 SPI总线空闲为低电平 CPOL 1 SPI总线空闲为高电平CPHA时钟相位选择 CPHA 0 无相位延时 CPHA 1 1/2个周期的相位延时
下表为SPI的四种工作模式选择
工作模式CPOL 0CPOL 1CPHA 0上升沿发送数据下降沿接收数据下降沿发送数据上升沿接收数据CPHA 1下降沿发送数据上升沿接收数据上升沿发送数据下降沿接收数据
下图为四种工作模式的时序图 ?
2 I2C
2.1 I2C的简介
??I2CInter Integrated Circuit内部集成电路。I2C是一种低速的半双工的同步的通信总线。IIC 数据传输速率有标准模式100 kbps、快速模式400 kbps和高速模式3.4 Mbps。
2.2 I2C接口的引脚
SDA数据线SCL时钟线
2.3 I2C的工作原理
开始信号SCL为高电平时SDA由高电平向低电平跳变开始传送数据结束信号SCL为高电平时SDA由低电平向高电平跳变结束传送数据 数据传输SCL为高电平时若SDA保持稳定那么SDA传输一位数据数据改变SCL为低电平时SDA线改变想要传输的一位数据应答信号接收数据的IC在接收到数据后向发送数据的IC发出特定的低电平脉冲表示已经收到数据发送数据的IC在发送数据后等待接收数据的IC发出应答信号根据实际情况做出是否继续传递信号的判断注意只有应答信号是从设备发送其他信号都是主设备发送
2.4 I2C的通信过程
Master发送STARTMaster发送数据等待ACKSlave发送ACKMaster发送STOP
?
3 UART
3.1 UART的简介 ??UARTUniversal Asynchronous Receiver/Transmitter)通用异步收发传输器。UART是一种低速的全双工的异步的通信总线。UART的数据传输速率有9600bps115200bps等等。
3.2 UART接口的引脚
VCC供电端若两设备独立供电则不需要连接TX发送数据端要接对面设备的RXRX接收数据端要接对面设备的TXGND保证两设备共地必须要接
3.3 UART的传输格式
空闲位当总线处于空闲状态时信号线的状态为高电平起始位发送一个低电平信号表示开始传输数据数据位可以是5~8位的数据一般都是8位。先发送最低位最后发送最高位。I2C和SPI先发送最高位最后发送最低位奇偶校验位数据位传送完成后要进行奇偶校验。分为无校验奇校验偶校验 ?- 无校验no parity ?- 奇校验odd parity如果数据位中’1’的数目是偶数则校验位为’1’如果’1’的数目是奇数校验位为’0’ ?- 偶校验even parity如果数据为中’1’的数目是偶数则校验位为’0’如果为奇数校验位为’1’。停止位数据的结束标志。可以是1位、1.5位、2位的高电平。
下图为UART数据传输格式 4 SPI、I2C、UART的区别与联系
SPI、I2C、UART都是常见的通信协议目前主流的芯片都内置了这些通讯协议的控制器。同样各种传感器、蓝牙模块、WIFI模块也都兼容这三种通信方式的一种或几种。我们可以根据外设拥有的通信方式和几种通信方式的特点选择合适的通信方式。
4.1 使用场景
I2CSPI主要是CPU与其他芯片如Flash等的通信方式UART主要是CPU与CPU之间的通信方式
4.2 传输速度
同步低速情况下使用I2C合适如果速度快一些则一般都要使用SPI异步使用UART传统的传输速度一般在115200bps或以下
4.3 硬件开销
SPI有4根线可以挂多个从设备但是在挂多个从设备时主设备端还需要做一个n选1的译码器用于选择将要访问的从设备因此主设备上的管脚需求比较多SPI总线在只有一个从设备时只要用到SCKSDOSDI这三根线此时选择SPI比I2C总线占优I2C有2根线可以挂多个从设备对从设备的选择直接依靠协议完成无需增加物理连线一般情况下当一块电路板上有多个从设备时往往选用I2C而非SPI因为SPI增加了额外硬件开销以及电路板走线