单片机的SPI通信
SPI是一种常见的设备通用通信协议。它有一个独特优势就是可以无中断传输数据,可以连续地发送或接收任意数量的位。而在I2C和UART中,数据以数据包的形式发送,有着限定位数。在SPI设备中,设备分为主机与从机系统。主机是控制设备(通常是微控制器),而从机(通常是传感器,显示器或存储芯片)从主机那获取指令。
一套SPI通讯共包含四种信号线:MOSI (Master Output/Slave Input) – 信号线,主机输出,从机输入。MISO (Master Input/Slave Output) – 信号线,主机输入,从机输出。SCLK (Clock) – 时钟信号。SS/CS (Slave Select/Chip Select) – 片选信号。
SPI协议特点
实际上,从机的数量受系统负载电容的限制,它会降低主机在电压电平之间准确切换的能力。
工作原理
时钟信号
每个时钟周期传输一位数据,因此数据传输的速度取决于时钟信号的频率。时钟信号由于是主机配置生成的,因此SPI通信始终由主机启动。
设备共享时钟信号的任何通信协议都称为同步。SPI是一种同步通信协议,还有一些异步通信不使用时钟信号。例如在UART通信中,双方都设置为预先配置的波特率,该波特率决定了数据传输的速度和时序。
片选信号
主机通过拉低从机的CS/SS来使能通信。 在空闲/非传输状态下,片选线保持高电平。在主机上可以存在多个CS/SS引脚,允许主机与多个不同的从机进行通讯。
如果主机只有一个片选引脚可用,则可以通过以下方式连接这些从器件:
MOSI和MISO
主机通过MOSI以串行方式将数据发送给从机,从机也可以通过MISO将数据发送给主机,两者可以同时进行。所以理论上,SPI是一种全双工的通讯协议。
传输步骤
1. 主机输出时钟信号
2. 主机拉低SS / CS引脚,激活从机
3. 主机通过MOSI将数据发送给从机
4. 如果需要响应,则从机通过MISO将数据返回给主机
使用SPI有一些优点和缺点,如果在不同的通信协议之间进行选择,则应根据项目要求进行充分考量。
优劣
优点
SPI通讯无起始位和停止位,因此数据可以连续流传输而不会中断;没有像I2C这样的复杂的从站寻址系统,数据传输速率比I2C更高(几乎快两倍)。独立的MISO和MOSI线路,可以同时发送和接收数据。
缺点
SPI使用四根线(I2C和UART使用两根线),没有信号接收成功的确认(I2C拥有此功能),没有任何形式的错误检查(如UART中的奇偶校验位等)。
页:
[1]