STM32学习记录-10-1-SPI通信(软件)

1 SPI通信

SPI(Serial Peripheral Interface)是由Motorola公司开发的一种通用数据总线

四根通信线:SCK串行时钟线(Serial Clock/SCLK/CLK/CK)、MOSI主机输出从机输入(Master Output Slave Input/DO)、MISO主机输入从机输出(Master Input Slave Output/DI)、SS从机选择(Slave Select/NSS/CS)

同步,全双工

支持总线挂载多设备(一主多从)

2 硬件电路

所有SPI设备的SCK、MOSI、MISO分别连在一起

主机另外引出多条SS控制线,分别接到各从机的SS引脚

输出引脚配置为推挽输出,输入引脚配置为浮空或上拉输入

3 移位示意图

移位寄存器的时钟源由主机提供,叫波特率发生器,同时时钟也通过SCK引脚进行输出。波特率寄存器时钟上升沿所有移位寄存器向左移动移位,移出去的位放到引脚上,时钟下降沿时引脚上的位采样输入到移位寄存器的最低位。

4 SPI时序基本单元

(1)起始条件:SS从高电平切换到低电平

终止条件:SS从低电平切换到高电平

(2)交换一个字节(模式0)

CPOL时钟极性=0:空闲状态时,SCK为低电平

CPHA时钟相位=0:SCK第一个边沿移入数据,第二个边沿移出数据

在SCK第一个边沿之前就要移出数据(即在第0个边沿移出,在第1个边沿移入)。SS下降沿开始时序,在SCK还未变化时立刻触发移位输出,在SCK上升沿就能采样数据,之后SCK下降沿移出下一个数据,在下一个上升沿移入…在第8个上升沿时整个字节交换完成,在最后一个SCK下降沿时MOSI可以置回默认电平,MISO也会变化一次(为下一个字节的B7),不需要的话SS上升沿之后从机MISO置回高阻态。

(3)交换一个字节(模式1)

CPOL=0:空闲状态时,SCK为低电平

CPHA=1:SCK第一个边沿移出数据,第二个边沿移入数据

SS从机选择,通信开始前SS为高电平,通信过程中SS始终保持低电平,通信结束SS恢复高电平。MISO主机输入从机输出,在空闲时位于中间呈高阻态,SS下降沿之后从机的MISO被允许开启输出,SS上升沿后从机的MISO置回高阻态。SCK上升沿MOSI和MISO主机和从机同时移出数据,时钟运行产生下降沿此时主机和从机同时移入数据进行数据采样…传输完所有数据后SS置高电平,在SS的上升沿MOSI还能再变化一次将MOSI置一个默认的高电平或低电平,MISO从机必须置回高阻态(如果主机MISO为上拉输入则MOSI电平默认高电平,MISO为浮空输入则电平不确定)。

(4)交换一个字节(模式2)

CPOL=1:空闲状态时,SCK为高电平

CPHA=0:SCK第一个边沿移入数据,第二个边沿移出数据

(5)交换一个字节(模式3)

CPOL=1:空闲状态时,SCK为高电平

CPHA=1:SCK第一个边沿移出数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值