打印
[APM32F0]

实际应用SPI数据错误案例分享

[复制链接]
639|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
     近期碰到实际应用中客户一个SPI小问题,可以分享下,实际设计中可以适当注意。
     应用背景:客户在应用中存在BOOT+APP架构,在跑APP时没有遇到问题,当APP跳转到BOOT时,概率性存在读取SPI外设失败,且概率非常不稳定,无法准确统计,通过修改相位和极性,发现只有在BOOT中使用模式3,APP中使用模式3才能将出错概率降低(由于样本有限,只是感受上降低了)。
     分析:
     1).抓包SPI数据,
       在使用SPI 模式0情况下,通讯会出现电平无法拉高情况,修改成模式3后,可以正常通讯。
  • SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;  ----极性是低电平的话,很难改变电平。SPI_CPHA_2Edge MISO很难拉低;  SPI_CPHA_1Edge  MISO很难拉高
  • SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;   MISO 拉低/拉高正常

     具体如下图一紫线(MISO),电压在1.32V,在模式0情况下,MCU无法识别到高电平。
            如下图二紫线(MISO),电压在3.3V,在模式3情况下,MCU可以识别到高电平。
         
     2)复现场景确认。
     在极限条件下,如低温情况,该现象可以稳定出现,因此,怀疑与抗干扰能力有关系,在增加外接干扰情况下,更易复现。
     3)删减代码测试。
     不断删减客户代码同步用低温进行压力测试时,发现当删除完某个传感器驱动代码后,不再复现改现象,多次验证后,能验证跟该传感器驱动有关系。
    4)查看原理图。
     在跟客户研发确认完后,同步查验了客户原理图,该SPI外挂了两个外设,而CS片选管脚是通过MCU两个GPIO来控制,这两个GPIO均无加上拉,存在一定概率,两个外设同时打开,同时在MISO管脚上输出电频,出现MISO管脚电平异常情况。结合来看:
      4.1 在跳转boot时,MCU管脚重新复位处于浮空状态,也无稳定电平更容易出现;
      4.2 低温情况下,外挂设备也容易出现低压低于1.5V情况(已同步抓波形验证),论证了更容易复现异常的原因;
      4.3 模式0可以而模式3不行,大概率是由于模式0下,外设无法正确识别通信协议,直接丢包,从而躲过了异常情况。


总结,在实际应用当中,当涉及到SPI外挂多个外设时,一定要在每个CS管脚上都要加上拉电阻,以确保产品在恶劣情况下,依然能稳健运行。
      



使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:极海半导体
简介:珠海极海半导体有限公司是一家致力于开发工业级/车规级微控制器、模拟与混合信号IC及系统级芯片的集成电路设计型企业。极海团队拥有20年集成电路设计经验和嵌入式系统开发能力,可为客户提供核心可靠的芯片产品及方案,实现准确感应、安全传输和实时控制,助力客户在智慧家居、高端消费电子、工业控制、汽车电子、智慧能源以及通信设施等领域的拓展创新。

5

主题

8

帖子

0

粉丝