spi全称是串行外设接口(serial peripheral interface),是由motorola提出的一种全双工(全双工指可以同时(瞬时)进行信号的双向传输(a→b且b→a))同步串行通信接口,通信波特率可以高达5mbps,但具体速度大小取决于spi硬件。
spi总线只需四条线就可以完成mcu与各种外围器件的通讯。
1)mosi(sdi )–master数据输出,slave数据输入;
2)miso (sdo)– master数据输入,slave数据输出;
3)sclk– 时钟信号,由master产生;
4)/cs– slave使能信号,由master控制。
spi通信就是采用这样的主从模式(master-slave)架构,一般为一个master和多个slave的应用模式。切记,谁为主,谁提供sclk时钟信号。
spi通讯就需要这四根线。其中,cs是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时,对此芯片的操作才有效。这就允许在同一总线上连接多个spi设备成为可能。接下来再负责通讯的3根线就可以了。
spi也是串行通讯协议,也就是说数据是一位一位的传输的。这就是sclk时钟线存在的原因,由sclk提供时钟脉冲,sdi,sdo则基于此脉冲完成数据传输。操作时序很简单,如下:
看见时序图了,就知道怎么通讯了。spi接口在master控制下产生的从器件使能信号和时钟信号,两个双向移位寄存器按位传输进行数据交换,传输数据高位在前,低位在后(msb first)。在sck的下降沿上数据改变,上升沿一位数据被存入移位寄存器。
换个说法,spi是一个环形总线结构,主要是在sck的控制下,两个双向移位寄存器进行数据交换。对于主机来说,上升沿发送、下降沿接收、高位先发送。
上升沿到来的时候,sdi上的电平将被发送到从设备的寄存器中。从m_sbuff寄存器的7位,发送到s_sbuff寄存器的0位;
下降沿到来的时候,sd噢上的电平将被接收到主设备的寄存器中。从s_sbuff寄存器的7位,发送到m_sbuff寄存器的0位;
一个完整的传送周期是16位,即两个字节,因为,首先主机要发送命令过去,然后从机根据主机的命令准备数据,主机在下一个8位时钟周期才把数据读回来。
spi总线比iic总线传输数据省事。之前用过的iic通讯,又有起始位,又有停止位的。spi比较豪爽,对于主机来说,有上升沿就写一位,有下降沿就读一位。因为这样,spi能够不等8位数据都传完就停止。没有了主机发出的sclk脉冲,就不再有数据交换了。需要注意的是:我们的主设备能够控制时钟,因为我们的spi通信并不像uart或者iic通信那样有专门的通信周期,有专门的通信起始信号,有专门的通信结束信号;所以我们的spi协议能够通过控制时钟信号线,当没有数据交流的时候我们的时钟线要么是保持高电平要么是保持低电平。
光纤基本参数及其测量方法知识
利用3D打印的太阳能电动车来穿越南极洲
Farad capacitor法拉电容优点及缺点
中国铁塔公司与比亚迪、沃特玛等16家企业 签订回收动力电池合作协议
采用真空夹具系统纸箱码垛的机器人
【硬见小百科】SPI总线是什么?
灯泡投影和激光投影一样吗?为什么说激光投影仪才是未来的趋势?
手机电池充电技巧
锡膏为什么特别容易变干?
大疆教育机器人机甲大师新品,将于3月9日线上发布
电子灌封胶的使用需要注意什么
PCB全自动字符两机连印生产线
谷歌新专利曝光 可用手势控制汽车
富士康中国恢复生产超预期,担忧疫情范围扩散影响电子供应链
虚拟拍摄的原理、应用及优劣势分析
感应电机是异步电机吗_感应电机与永磁同步电机的区别
OpenHarmony 3.1 Release发布 OpenHarmony3.1 Release特性开发样例概述
一款中国研制的自动驾驶飞行器参加试飞
PLC程序设计常见的编程方法
一加3T评测:“高配版”的真旗舰 升级有哪些?