在产品中用到大容量DataFlashAT45DB161B,读其PDF得知,硬件接口为SPI,有设备ID字可读,以前用在51单片机系统中,换了1个新的机型,在为此芯片移植驱动时,每次都先写个SPI读写函数,发读取ID命令,并读取芯片返回的ID字,检查其5,4,3位内容是否与PDF中相符
Status Register Format Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 RDY/BUSY COMP 1 0 1 X X X
如果读取到全0或全1,则可能是硬件不正常。如果这个ID读正常了,上面的函数就测试一下就搞定了。 在产品升级到32位ARM时,问题出来了,读取这ID值就是不正常,硬件用示波器检查了N遍,软件联调了几百次,毫无进展,网上这种应用没有介绍,ARM评估板也没有Demo,怎么办呢,最后把做所有硬件工程师请到一块,大家各抒已见,搞头脑风暴法,有人提议比比ARM与51单片机上电后的状态有何不同,嘿,还真给说中了。, 经过仔细比较,51单片机上电后为高电平,ARM上电时为低电平,AT45DB161B也有两种SPI模式,正是上电状态决定了芯片进入了不同的模式,老的驱动当然不对了,重新修正了一下时序,开机一试,哈哈,ID值出来了,上层的一切全OK。 有些问题,别人给您个解决问题的思路,你自已很快就能解决了,而不应要求别人非得帮你编代码,调程序。
|