历史上的今天
返回首页

历史上的今天

今天是:2025年12月16日(星期二)

正在发生

2022年12月16日 | 单片机spi通信接口什么意思,spi接口干什么用的?

2022-12-16 来源:zhihu

讲真,以前做开发的时候最怕就是调spi和iic。

因为公司没有逻辑分析仪,调起来全凭经验,一出问题找都找不到,只能仔细看代码盲调,看是不是哪个时序有问题。

说到这里,可能刚初学的小伙伴会问:单片机spi通信是什么鬼?spi接口是干什么用的?

一、单片机spi通信是什么鬼?

单片机是一个可编程的微控制器,和spi通信其实是两个独立的东西。

只不过我们用单片机可以去实现spi通信而已,但是实现spi通信不一定非要单片机。

我们人和人之间沟通,要靠说话,并且两个人语言要一样,比如说都用普通话。

那芯片和芯片沟通,它们又不会说话,怎么传递信息呢?

就是通过通信总线,通信总线有很多种,比如IIC、SPI、USART、CAN,它们的区别就像普通话、英语、韩语、俄语,都是用来传递信息用的,只是传递方式不同

但传递信息,有一个前提,就是语言要相同,也就是通信方式要相同。

所以说,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根线的。

所以,这种协议要从本质上去理解它们,不需要死记硬背要接几个引脚,你学废了吗?

更多单片机开发实战干货尽在无际单片机编程。


推荐阅读

史海拾趣

AOS公司的发展小趣事

AOS公司的创业历程始于1874年,由C.J.史密斯在威斯康星州密尔沃基市开设的一家生产婴儿车配件的小店起步。随着工业革命的步伐,史密斯敏锐地察觉到工业化带来的巨大变革,开始转型生产汽车车架,并于1902年成功制造了第一个汽车车架。这一创新不仅为AOS公司带来了初步的成功,也奠定了其在机械制造领域的地位。

Conditioning Semiconductor Devices Corp公司的发展小趣事

随着全球环保意识的提高,半导体行业也面临着环保和可持续发展的挑战。CSDC积极响应这一趋势,将环保理念融入公司的生产和运营中。通过采用环保材料和工艺,减少生产过程中的污染排放,CSDC不仅降低了对环境的影响,还提升了企业的社会形象。同时,公司还积极参与环保公益活动,推动半导体行业的绿色发展。

这些故事展示了半导体设备公司可能经历的一些关键发展阶段和面临的挑战。虽然这些故事是虚构的,但它们基于半导体行业的现实背景和趋势进行构建,具有一定的参考价值。

CANDD公司的发展小趣事

在快速发展的过程中,CANDD公司始终注重企业文化的建设。公司倡导创新、协作、诚信和担当的核心价值观,鼓励员工勇于创新、敢于担当。同时,公司还注重员工的培训和成长,为员工提供了广阔的职业发展空间。这些举措不仅激发了员工的工作热情,还为公司培养了一批忠诚、有能力的员工队伍。在企业文化的引领下,CANDD公司不断向前发展,成为了电子行业的佼佼者。

这些故事虽然基于虚构的CANDD公司,但它们所反映的电子行业发展趋势和企业管理理念是真实存在的。通过这些故事,我们可以更好地理解电子行业的发展历程和未来趋势。

DAYA公司的发展小趣事

大雅智能,一家以智能厨电产品为主的电子科技公司,自创立之初就致力于技术研发和创新。在电子行业竞争激烈的今天,大雅智能凭借其独特的智能控制技术,成功打造了一系列具有市场竞争力的产品。从最初的智能电饭煲到如今的智能厨房生态系统,大雅智能通过技术创新,不断满足消费者对智能生活的追求,逐渐在电子行业中崭露头角。

Custom Mmic Design Services Inc公司的发展小趣事

为了进一步拓展国际市场,CMDS积极寻求与国外企业的合作。通过与国际知名电子企业建立战略合作关系,CMDS不仅获得了先进的技术支持和市场资源,还成功将其产品打入国际市场。同时,公司还积极参加国际展会和交流活动,与全球同行建立了广泛的联系和合作网络。这些国际合作不仅为CMDS带来了更多的商业机会,也提升了其在国际市场上的知名度和影响力。

DATEL Inc公司的发展小趣事

进入21世纪,随着电子医疗的兴起,DATEL Inc.看到了新的发展机遇。公司开始研发适用于医疗领域的数据采集产品,如医用传感器、生命体征监测仪等。通过与医疗机构紧密合作,DATEL Inc.成功推出了一系列高性能、高可靠性的医疗数据采集产品,为医疗行业的数字化转型做出了重要贡献。

问答坊 | AI 解惑

请问工控用的M27C4002和X28HC64是属于哪个板块的?

请问工控用的M27C4002和X28HC64是属于哪个板块的? 我要重点研究这两个程序芯片 多谢!!…

查看全部问答>

AD采集的数据在12232上显示?

AD采集的数据在12232上显示 ,看看我的源程序#include<reg52.h>#include<intrins.h>#include<stdio.h>#define uchar unsigned char#define uint unsigned intsbit led1=P2^3;  //led端口定义sbit led2=P2^4;sbit led3=P2^5;s ...…

查看全部问答>

求助:关于断点寄存器的问题

大家好,请问有没有哪位使用过断点寄存器,如何对其进行初始化呢,我使用的是s12的freescale的芯片。 有类似的经验均可。 想通过设置断点寄存器,实现断点的设置,可是试验没有成功,不知如何进行,请大家帮忙! 谢谢!…

查看全部问答>

EVC 里winbase.h文件发给我 谢谢

我的winbase.h文件让我写错了 改不回去了 谁安装了EVC 麻烦把这个文件粘贴给我呗 谢谢大家了 邮箱:zhaofei_33101@163.com 文件路径C:\\Program Files\\Windows CE Tools\\wce420\\POCKET PC 2003\\Include\\Armv4 winbase.h …

查看全部问答>

请问个win下PCI驱动开发的问题,我该补什么?

现在公司准备做Win下的PCI设备的驱动, 以前从未接触过这样的项目, 老大让我先收集资料, 请问我该补哪方面的钙? 就是那种很普通的数据采集卡,AD转换卡 硬件平台:普通PC. 软件平台:win xp,2k ps: 我只做过dos+工控机平台的板卡程序,,就是那种 ...…

查看全部问答>

安装驱动程序

windows下,安装一种网络卡的驱动程序(用自己写的程序来安装驱动程序) 现在的情况是这样的,在机器上插上网络卡,安装驱动程序,操作系统识别上网卡设备,一切OK,没有问题 那么有没有这种可能,先不在机器上插卡,先直接安装驱动程序,然后插 ...…

查看全部问答>

高通6085CDMA2000上网卡研究

本工作室提供EVDO无线上网卡方案的开发,有意合作的请联系qq:764918953…

查看全部问答>

请教串口设备主动发送的数据如何获取。。我是新手

我第一次接触串口开发,很多不明白的地方。 现在手头有一设备,类似读卡器,是USB口的,装完驱动后会生成一对应的COM口。 刷卡的时候,这个外界设备会向连着的主机程序发送一串ASCII字符,我该如何获得这些数据呢? 我用超级终端链接这个COM口, ...…

查看全部问答>

自写boot出现问题

如题:我用飞思卡尔的MCF51jm128VHD单片机,自己做了一段boot将用户程序升级到单片机中,但是升级后程序运行速度变慢了,这是怎么回事?有高手可以帮忙吗,感激不尽…

查看全部问答>

stm32f407 fsmc 驱动 320×240点tft 偶尔闪烁

基本上,标题都说了问题。 补充一下背景 程序上了 rtx——不过是封装好的,我不用动; 板上倒没啥特别的东西 就是有两路 磁保继电器驱动,但是和 主电源是隔离的。 而且也试了磁保继电器动作时,也没发现屏幕会闪。 但是在做实验的房间 ...…

查看全部问答>