SPI bus

SPI(串行外设接口)属于全双工同步串行总线,有四条线----MISO(主入从出),MOSI(主出从入),SCK(同步时钟),CS(片选)。SPI只能有一个主设备,时钟只能由主设备产生,数据流传输速率比I2C高。

SPI设备之间通信其实是在同步时钟下两个双向的移位寄存器的数据交换。

SPI根据时钟极性(CPOL)和时钟相位(CPHA)不同有4中工作模式:

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

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

CPHA=0:第一个时钟边沿数据被采样,(采样前需要准备好数据);而在第二个时钟边沿数据开始准备好

CPHA=1:第二个时钟边沿数据被采样;而在第一个时钟边沿数据开始准备好

组合在一起就有四种模式,譬如CPOL=1,CPHA=1:SCK空闲时为高电平,下降沿准备数据,上升沿采样

SPI可以选择MSB(高位先发送)或者LSB(低位先发送)

CS为低时选中外设

时序如图:


下图是用逻辑分析仪抓取的波形,主机发送0x10


当然也可以使用软件来模拟,考虑到I/O翻转等,速度比硬件SPI控制器要低

下面是使用I/O口简单模拟的CPOL=1,CPHA=1模式读取SD卡的DBR时的时序截图,上升沿采样


下图是IO模拟SPI向SD卡发送CMD1命令和返回值0x01


模拟SPI时初始化MISO为输入,CS,MOSI,SCK为输出配置。一般读取数据是发送0xff来产生时钟的循环移位得到的,所以软件模拟读函数上可以拉高MOSI(相当于发送0xff)。

具体参看STM8的IAR工程:点击打开链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值