SPI 总线调试:两个易被忽略的供电与电平问题

SPI 总线是嵌入式开发里的常用通信方式,标准包含 SCK、MOSI、MISO、CS 四根信号线,支持一主多从架构,具备全双工、传输速度快、硬件电路简洁的特点,传感器、SD 卡、以太网芯片等外设大多会采用该总线通信。LuatOS 配套有成熟的 SPI 驱动库,同时附带 Flash、RC522 等实战案例,可用于功能调试与项目开发。。

6c48940adf5cbc9206cd1e6bdb190c2e.png

5bf4d097d0da97d8573879e1d91dd6d8.png

SPI作为总线协议,

单条 SPI 总线可外接多个设备,依靠独立 CS 片选引脚区分设备,拉低对应片选信号即可选中目标外设,能有效节约单片机 IO 口,不少开发板也用该方案同时挂载 SD 卡、CH390H 等器件。SPI 协议本身逻辑不难,但实际使用中存在不少容易出错的细节,这里整理了两个实操中高频遇到的问题,供参考。

坑一:你的CH390H不供电?其他外设别想干活

03 以太网 SD卡参考设计260424 430201.png

当CH390H未供电时:其MISO、MOSI、CLK三个信号在CH390H芯片内部为下拉状态,这时会将三个信号的电平拉低到非正常逻辑电平状态。

这个时候如果打开SPI总线上的其它外设:比如SD卡,会造成SD卡的读取失败,或者几率性失败或成功,原因就是——SPI信号的逻辑电平混乱所致。

举个例子:我们设置的IO电平为3.3V,实际此时的电平可能是2V左右,其逻辑高电平处于临界状态,进而造成通信异常。

解决办法:必须将给CH390H的供电打开。

这里建议大家在任何外设上SPI总线之前,第一件事是翻开它的数据手册,确认供电说明等信息。

下图是CH390H手册中相关描述的截图(红框标出下拉说明):

02 SPI隐形坑26042401.png

**坑二:你把SD卡槽的上拉LDO关了?SPI总线当场“摆烂” **

03 以太网 SD卡参考设计260424 430202.png

SPI总线接上拉电阻到LDO后,会出现异常。

比如Air780系列V1.4开发板:SD卡部分将SPI总线上拉高到SD_3V3,用于增加SPI总线的驱动能力。

问题来了:当其他同路SPI外设要使用时,SD卡的这路LDO必须要打开,否则会造成SPI通信不正常。

原因很简单:给每个外设供电的LDO,以LP5907MFX为例,其在关闭时,LDO电源输出管脚会有下拉电阻到地,进而造成SPI电平拉低——实测Air780EHM的电平本来设置为3.3V,结果被拉低到2.2V甚至2V以下,SPI通信自然就不正常了。

LP5907MFX手册截图如下:

02 LP5907MFX手册截图.png

所以记住一句话:当硬件设计中将SPI上拉到某一LDO时,一定要将该LDO打开,才可以保证SPI正常通信。

SPI 为嵌入式常用四线同步总线,支持一主多从、全双工通信,常挂载 SD 卡、CH390H 等外设。实际调试中存在两类典型故障:CH390H 未上电时内部下拉会拉低 SPI 信号电平,导致同总线其他外设通信异常;SD 卡侧 SPI 上拉所接 LDO 关闭后,LDO 内部放电电阻会拉低总线电平,造成通信失败。解决要点为确保 CH390H 正常供电、SPI 上拉对应的 LDO 必须开启,调试前应查阅器件手册确认供电与电平要求。

好了,今天先就聊到这儿。你在SPI调试中还遇到过哪些问题?欢迎评论区告诉我~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容