
SPI 凭借高速、全双工、拓扑灵活的特点成为嵌入式领域的主流通信总线单总线搭配独立片选即可挂载多个外设也是合宙模组常用的硬件方案。依托 LuatOS 成熟的驱动支持SPI 相关应用开发门槛大幅降低。不过在长期项目支持中我们发现两处高频问题足以让整条 SPI 总线无法正常工作下面逐一拆解。坑一你的CH390H不供电其他外设别想干活****坑一你的CH390H不供电其他外设别想干活当CH390H未供电时其MISO、MOSI、CLK三个信号在CH390H芯片内部为下拉状态这时会将三个信号的电平拉低到非正常逻辑电平状态。这个时候如果打开SPI总线上的其它外设比如SD卡会造成SD卡的读取失败或者几率性失败或成功原因就是——SPI信号的逻辑电平混乱所致。举个例子我们设置的IO电平为3.3V实际此时的电平可能是2V左右其逻辑高电平处于临界状态进而造成通信异常。解决办法必须将给CH390H的供电打开。这里建议大家在任何外设上SPI总线之前第一件事是翻开它的数据手册确认供电说明等信息。下图是CH390H手册中相关描述的截图红框标出下拉说明**坑二**你把SD卡槽的上拉LDO关了SPI总线当场“摆烂”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手册截图如下所以记住一句话当硬件设计中将SPI上拉到某一LDO时**一定要将该LDO打开**才可以保证SPI正常通信。相关资料下载SPI核心库最新API文档https://docs.openluat.com/osapi/core/spi/开发板使用手册/参考设计https://docs.openluat.com/air780ehv/product/shouce/好了今天先就聊到这儿。