spi(serial peripheral interface)总线系统是一种同步串行外设接口,可以是mcu与各种外围设备以串行方式进行通信以交换信息,该接口一般使用4条线:串行时钟线(sclk)、主入从出数据线(miso)、主出从入数据线(mosi)和低电平有效的从机选择线(ss);其主要特点包括:可以同时发出和接收船型数据;可以作为主机或从机工作;发送结束中断标志;写冲突保护和总线竞争保护。
spi总线架构示意图:
spi是一个环形总线结构,有ss、sck、sdi、sdo组成,在主设备和从设备之间进行双向传输,实现发送和接收数据,最高速率可达5mbps。由ss信号来选定主设备通信的从设备,在某时间点内主设备和从设备之间可以实现点对点通信,不需要进行寻址操作。spi共有4种工作模式,sp0、sp1、sp2、sp3,其中比较常用的是sp0、sp3。为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行设置。
如果时钟极性cpol=0,则串行同步时钟的空闲状态为低电平;如果时钟极性cpol=1,则串行同步时钟的空闲状态为高电平。
如果时钟相位cpha=0,则在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果时钟相位cpha=1,则在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。spi主模块和与之通信的外设时钟相位和极性应该一致。
spi总线4中工作模式的sck示意:
spi主要工作时序是在sck的控制下,两个双向移位寄存器进行数据交换。
假设下面的8位寄存器装的是待发送的数据1010 1010,上升沿发送,下降沿接收,高位先发送。那么第一个上升沿来的时候数据将会是sdo=1,寄存器=0101 010x;下降沿到来的时候,sdi上的电平将锁存到寄存器中去,那么这时寄存器=0101 010sdi,这样在8个时钟脉冲以后,两个寄存器的内容相互交换一次,从而完成了一个spi时序。
硬件spi方式:
(1)写一个字节:
spi_writebyte(u8 data)
{
while(spi_i2s_getflagstatus(spi1,spi_i2s_flag_txe)==reset);//等待发送缓冲区为空
spi_i2s_senddata(spi1,data);
while(spi_i2s_getflagstatus(spi1,spi_i2s_flag_rxne)==reset);//等待接收到一个字节数据
spi_i2s_receivedata(spi1);
}
(2)读一个字节:
spi_readbyte(u8 data)
{
while(spi_i2s_getflagstatus(spi1,spi_i2s_flag_txe)==reset);//等待发送缓冲区为空
spi_i2s_senddata(spi1,data);
while(spi_i2s_getflagstatus(spi1,spi_i2s_flag_rxne)==reset);//等待接收到一个字节数据
return spi_i2s_receivedata(spi1);
}
解析:当不使用fifo时,只有一个中断,接收和发送共用一个,因为发送和接收是同时完成的:例如主机上升沿发送下降沿接收,那么从机就是上升沿接收下降沿发送,所以一串时钟之后,主机发送完了数据,从机也发送完了数据。
软件spi:
软件spi方式和硬件spi方式的区别:
1.硬件spi效率高些,编写程序时只需把要发送的数据写到寄存器中,硬件自动进行发送;软件spi需要根据时序实现时钟拉高拉低,串行数据输出等。
2.硬件spi必须要求处理器支持该功能;而软件spi不需要特定要求,一般的io口就可以使用
3.硬件spi传输速度可以达到3mbps,软件spi传输速度一般700k左右。
总结:在使用spi时,根据实际情况选择使用硬件spi,还是软件spi,注意在使用时确保时序的准确性。
10年内物联网智能装置数量将超过120亿
配电网智能一体化保护控制成套设备
拉绳位移传感器SPD-4-3数据采集系统
局部放电测试的测试原理介绍
友尚集团推出SAMSUNG低功耗的Multimedia Rich全方位Cortex Table
串行通信SPI总线的详解分析
华为百度积极发力智能电动汽车
光纤激光器的原理及特性
区块链和供应链如何联手解决问题
24进制计数器
由max8720组成的降压式dc/dc电路
美国哥伦比亚大学开发出新型的低功耗光束转向技术
三星对于智能手机的拍照也低下了头
ARM内核目标系统中的代码运行时间测试方法
直流电机控制电路的工作原理
浅谈时分复用音频接口:TDM 和音频转换器TDM接口
FCC认证 | KDB484596 D01数据引用规则新要求发布
OpenHarmony创建和运行HelloWorld
电蜂分享如何更好的存放高压连接器插头
工业4.0加速实现“数物相合”,可视化工厂节省时效高达85%