看b站江科大的视频,自己学习写软件spi程序的时候,在读取设备id的时候遇到了读取出来为0xFFFF的情况,反复检查很久也没找到问题所在。后来运行正点原子的HAL库程序源码,打印出来居然还是0xFFFF,发现可能是芯片的问题。于是看了寄存器版本的代码,运行的时候执行了两次读取设备id的函数,结果第二次就能够正确打印了。
所以我认为是NM25Q128芯片第一次接收指令集的时候不会做出响应,所以向芯片随便发送一个指令集(如0xFF),应该芯片就能正常响应了。
spi_start();//读取ID前向芯片发送一个FF指令
spi_swapByte(0xFF);
spi_stop();
nm25q128_readREMS(&MID, &DID);//正常读取ID
printf("MID = %x, DID = %x\r\n", MID, DID);
这一点我不知道是NM25Q128芯片的特性还是什么,反正江科大用的芯片不用先执行一个指令集再进行读取,正点原子的老师好像也没讲NM25Q128芯片的这点特性,坑了我整个半天。。