历史上的今天
今天是:2025年12月15日(星期一)
2022年12月15日 | STM32的SPI外设片选只有一个,怎么破?
2022-12-15 来源:zhihu
之前用STM32的SPI需要控制很多外部芯片,可是一个SPI的外设只有一个片选,要实现独立片选一主多从,怎么实现呢?
SPI总线拓扑
一般地,SPI总线按照下图方式进行连接,一主多从。

如上图:
每个从设备都有独立的片选引脚,主机同一时间段内,与一个从设备进行通信,也即选中一个从设备。
MOSI/MISO/SCLK并联在一起
MISO须是三态门,当从设备未选中时,该脚须设置为高阻态,而不能是输出态,否则会影响总线!
对于MOSI/SCLK,虽然并联在一起,但是由于仅一个输出,多输入。
但是你看STM32的SPI外设,一个SPI仅有一个NSS信号,以STM32F407的SPI2为例:
那么要实现前面说的一主多从,怎么办呢?有朋友说,直接用GPIO去模拟不就可以了。
不错,SPI总线要用GPIO模拟还是很容易的,但是这样做波特率做不高,需要占用CPU时间,效率比较低!而用SPI外设控制器,底层bit流的收发由外设控制器实现,用GPIO模拟则需要CPU参与。
怎么破呢?
菊花链拓扑

这种方案,省引脚。但是要移位控制,相对独立片选效率还是低不少。
独立片选拓扑
SPI外设的MOSI、MISO、SCK还是照用不误,但是片选我们不用,设置成通用输出模式,再用其他的GPIO片选从芯片即可。
上代码看看:


初始化SPI外设


从而原来SPI的收发函数前后加上片选信号即可:




如此一来,一个SPI外设就可以控制多个从芯片了。你如果有兴趣,不妨照这个思路试试看。
上一篇:STM32通过PWM控制电机速度
下一篇:基于STM32的BLE智能灯泡
史海拾趣
|
LCD数字温湿度传感器/温湿度采集器Link-Max LM-410 LM-400不带显示屏的网络型温度湿度采集模块(自带传感器) LM-410带显示屏的网络型温度湿度采集模块(自带传感器) LM-420带显示屏的网络型温度湿度采集独立报警模块(自带传感器,可独立控制声光报警器) LM-400、LM-410、LM-420是一种新型的温度或 ...… 查看全部问答> |
|
1-4-3.并联开关电源储能电感的计算 与前面计算反转式串联开关电源中储能电感的数值方法基本相同,计算并联式开关电源储能电感也是从流过储能电感的电流为临界连续电流状态着手进行分析。并联式开关电源中的储能电感与反转式串联开关电源中的储能 ...… 查看全部问答> |
|
小弟在写个bsp,cpu的mips32的,用得是Tornado2.2在cacheALib.s的里写了几个关于cache的函数(如cache_reset),在cacheLib.c中使用IMPORT void cache_reset(void)申明后调用,但最后老是报错说该函数无法识别,基本可以保证不是cacheALib.s的问题 ...… 查看全部问答> |
|
有没有做过胎压计的朋友,在坛子上逛了很久都没找到相关信息。之前买的两个胎压计(如下图),右边的“大棒”是在一家买五金电动工具商店买的,商标上写着——汽车轮胎压力表882型(南京汽车附件厂制造)。似乎挺好用,但回来一试,尾巴(标尺)一冲 ...… 查看全部问答> |
|
我把单位的瑞泰创新ICETEK-F2812-A开发板弄丢了,有偿,好的坏的都行, 光板也行,顶账。联系QQ:1332430115,,qq加我好友时注明一下 谢谢… 查看全部问答> |
|
本帖最后由 eeacc 于 2014-6-14 09:53 编辑 在互补输出模式下怎么关闭B相输出,使之为高电平呢?我将A相置高后 EPwm1Regs.AQCSFRC.bit.CSFA = AQ_SET; 互补的B相依旧是低电平EPwm1Regs.AQCSFRC.bit.CSFB = ...… 查看全部问答> |
|
TI的ZigBee协议栈的定时器接口函数无法使用?定时器在协议栈无法使用? TI的大神们,我使用协议栈的定时器接口函数准备操作定时器,搞不懂了,就是不进中断,回调函数也没用编译TIMER=TRUE在SampleApp_Init()里面定义的了定时器的配置函数HalTimerConfig(HAL_TIMER_0,HAL_TIMER_MODE_CTC, HAL_TIMER_CHANNEL_A,HAL_TIM ...… 查看全部问答> |
|
本帖最后由 通宵敲代码 于 2016-1-24 11:11 编辑 系统平台:Ubuntu14.04 所需文件(以最新版本为准): ibus-googlepinyin-0.1.2-11.1.noarch.rpm sogoupinyin_2.0.0.0068_amd64.deb sogoupinyin_2.0.0.0068_i38 ...… 查看全部问答> |




