spi升级功能注意事项:
1、整体方案:通过spi将数据写入到stm32f103的flash中,并将完成标志写入rtc的备份域。
Bootloader检测到写入标志将flash的新固件读取写入到原来运行地址。
2、难点a:spi通信不正常,spi需要由主机端先发,从机后接收。需要重载spi.
难点b:spi接收和发送的第一个字节不对,且数据会往后移一位,这个要在程序里做配适。
难点3: flash的读写,读flash可以用memcpy读flash内容。写flash要解锁上锁否则无法写入。
难点4:bin文件的意义及flash的格式, bin文件就是要写入flash的内容,和flash的内容一一对应。可以通过jflash软件读取bin文件得知bin的内容并对比写入flash的内容,检查上是否写入正确。读写8位和32位数要考虑地址偏移不同。
难点5:flash写入错误:半字和字的区别导致写入出现问题。
难点6: M4板iap升级bug 是因为中断错误引起,原来的代码里先禁中断后开启中断导致在固件升级时采集电压数据使得spi通讯异常,进而发送方收不到应答固件升级失败。解决办法就是关掉spi采集数据的中断。在接收方观察到接收的数据是采集的数据,以0x21开头所以是中断没关。结果如图所示,iap正常。
难点7:双机spi通信不成功的原因在于spi接收数据有问题,查看keil里的寄存器可以获得错误信息,是OVR 溢出错误,需要根据降低频率减少接收的数据,但是实际通过加大发送频率获得成功,可能与时序有关。