SPI总线及其demo

SPI总线是微处理器和外设之间进行数据交互的常用串行总线接口。本文主要介绍了SPI的接口类型、数据传输(时钟极性、时钟相位)、读、写操作的具体代码,最后是一个完整的xpt2046实现ADC的代码实现及注意事项。

1 、接口简介

串行外设接口(SPI)是微控制器(MCU)和外围IC(如传感器、ADC、DAC、移位寄存器、SRAM等)之间使用较广泛的接口之一。SPI是一种同步、全双工、主从式接口。来自主机或者从机的数据在时钟上升沿或下降沿同步。主机和从机可以同时传输数据。SPI接口可以是三线式或者4线式。本文主要介绍4线式SPI接口。

图1 SPI总线:单一主机对单一从机模式

4线SPI总线有四个信号:

时钟(SPI CLK,SCLK)。

片选(CS)。

主机输出、从机输入(MOSI)。

主机输入、从机输出(MISO)。

产生时钟信号的器件称为主机(MCU)。主机和从机之间传输的数据与主机产生的时钟同步。SPI接口只能有一个主机,但可以有多个从机。

图2 SPI总线:单一主机对多从机模式(2个从机)

来自主机的片选信号用于选择从机。这通常是一个低电平有效的信号,拉高时,从机与主机断开连接。当使用多个从机时,主机需要为每个从机提供单独的片选信号。MOSI和MISO是数据线。MOSI将数据从主机发送到从机,MISO将数据从从机发送到主机,实现主机和从机的数据交互。

2、 数据传输

要开始SPI通信,主机通过使能CS信号选择从机,发送时钟信号。片选(CS)一般是低电平有效信号。因此,主机必须在该信号上发送逻辑“0”以选择从机。SPI是全双工通信接口,主机和从机可以分别通过MOSI和MISO线路发送和接收数据(数据交互)。在SPI通信期间,数据的发送(串行移出到MOSI/MISO)和接收(MISO/MOSI)可以同时进行。串行时钟沿同步数据的移位和采样。SPI接口允许用户灵活选择上升沿或者下降沿采样(读操作,输入)或者移位(写操作,输出)。读、写操作字节都是从最高位(MSB)开始的。

图3 SPI通信读、写的bit顺序

3 、时钟极性(clock polarity,CPOL)与时钟相位(clock phase,CPHA)

在SPI通信接口中,主机可以选择时钟极性和时钟相位。空闲状态就是片选(CS)无效时的状态。在空闲状态期间,CPOL位设置时钟信号(SCLK)的极性。

表1 CPOL极性规定

CPHA位选择时钟相位,规定主机采样数据时的时钟边沿,包括第一个跳变沿和第二个跳变沿。

表2 CPHA极性规定

根据CPOL位和CPHA位的不同组合,有四种SPI模式可用。

表3 CPOL位和CPHA位的不同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值