单片机是一个可编程的微控制器,和spi通信其实是两个独立的东西。
只不过我们用单片机可以去实现spi通信而已,但是实现spi通信不一定非要单片机。
我们人和人之间沟通,要靠说话,并且两个人语言要一样,比如说都用普通话。
那芯片和芯片沟通,它们又不会说话,怎么传递信息呢?
就是通过通信总线,通信总线有很多种,比如iic、spi、usart、can,它们的区别就像普通话、英语、韩语、俄语,都是用来传递信息用的,只是传递方式不同。
但传递信息,有一个前提,就是语言要相同,也就是通信方式要相同。
所以说,spi是一种通信方式,是用来传递信息的。
不同的通信方式,传递信息的方式不同。
spi是一种全双工、高速的、同步的通信总线。
简单来说,就是你们两个可以同时快速地说话,你能把你要说的告诉对方,同时也能听到对方说什么,这就是全双工。
还有一种叫半双工,就是你们同时只能有一个人说,另一个听,说完了,另外一个才能说。
很明显,全双工传递信息的效率更高吧。
同步的意思我给你们两个对话设定个条件,比如说我说开始你们才可以对话,我说停止就都不能说话。
我们人和人传递信息一般是靠耳朵和嘴巴对吧?
spi通信传递信息是通过接口,来看下图:
spi通信协议:单片机spi通信接口什么意思,spi接口干什么用的?
spi接口有4根线,分别是cs、sclk、mosi、miso。
sclk是同步信号,一般由主控来控制。
既然是通信,自然是需要有个”对象”,如上图a和b。
a是spi master,也就是主控,比如说单片机,一般就是主控的角色,主控来负责发送sclk同步信号通知spi slave是否需要进行数据通信。
b是spi slave,也就是从机,比如说flash芯片。
cs代表片选信号,为什么要用片选呢?
因为一个spi master可以跟不同的spi slave进行通信。
spi master就是通过cs来控制,具体跟哪个spi slave通讯,控制cs为低电平就代表选中该spi slave。
如果说只跟一个从设备通讯,也可以直接把cs串联电阻接地,省的每次都去控制它。
mosi英文全称是master output slave input,这个一般接主控器件数据输出引脚,从机器件数据输入引脚。
miso英文全称是slave input master output,这个一般接主控器件数据输入引脚,从机器件数据输出引脚。
除此以外,还有一种特殊的用法,就是只用sclk和mosi这两个引脚的spi通信。
比如说我们无际单片机编程实战项目课程里有个oled屏的应用。
片选引脚cs我直接硬件接地了,因为只有一个从设备。
我们主要是控制oled屏去显示内容,并不需要从oled读取数据,所以miso也不需要。
这种情况是可以只用2根线的。