今天发现手头的一个手持仪表有故障,明明所有记录已经清除,重新上电后记录就满了,并且所有记录一样。另外一台正常。
记录存在AT25256(使用硬件SPI2通讯)里,每条记录16字节,最先4字节组成32bits整形数据,表示记录的时间点,每次上电搜索整个记录存储区,确定记录条数。
开始以为AT25256坏了,换了个,故障依旧,最后上jlink,发现读出的数据错误,最后一位固定为0,最先是模式3(CPOL = SPI_CPOL_High,CPHA = SPI_CPHA_2Edge),然后改成模式0(CPOL = SPI_CPOL_Low,CPHA = SPI_CPHA_1Edge),仍旧不行,重新焊了块板子,烧上新程序,之前不行的AT25256数据读取正常,所以可以确认故障是由STM32F103RBT6引起的
而这个程序之前已经还几台机器山用过,一直正常,很是纳闷,怎么会最后一位固定为0,其他位正常。
不知道有其他人遇到没?
补充下:系统供电3.3V,这个供电范围AT25256的时钟可以达到10MHz,AT25256支持SPI模式0 和 3 |