在实际的工程项目中,有时候会碰到两款差异不大的产品,设计的时候共用一款PCB,软件也共用一套软件。这个时候,我们可以开辟一个IO口,用于侦测实际应用的是哪款产品。
如上图所示,假如我们开发的是A和B两款产品,在A产品PCB中,R101空贴,那么IO口读取到的是高电平,那么可以通过IO口的读取状态(高)判断是A产品;在B产品PCB中,R16和R101都要贴,那么IO口读取的就是低电平,可以以此判断产品是B产品。
问题:在开发中,主MCU与外部器件进行SPI通讯,在判断是A或者B产品的时候,利用主MCU往从器件寄存器写入0xff数值,然后在读取从器件的寄存器是否是0xff数值,以此判断从器件是否接入。但是在应用中发现,在常温时候,从器件悬空,SPI通讯管脚都处于悬空状态,读取到的是0x00,在低温状态下,读取的数值变为0xff,导致了软件的误判!所以,应用此种方式判断从器件是否接入是不安全的,正确的做法应该同文章开头讲述的那样。