同步操作将从 will-li/STM32G030_BOOT 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
经过反复考量,nRF24L01不适合做透传模块。因为我始终无法解决半双工如何正确分包的问题。研究了它的动态负载长度功能,发现它无法分包。比如你想发送“你好”,这串字符串的HEX码是C4 E3 BA C3
,但是在接收端收到的是
C4
E3
BA
C3
它按照每个HEX被分包了,这点我无法接收。
如果仅仅做Bootloader是可行的,Yomdem协议正好是一问一答,可以用半双工实现。不过在Bootloader之前,有用串口做的一些简易菜单选项,这个就很难通过nRF24L01实现了。
基于STM32G030和NRF24L01模块实现远程升级OTA的功能。 Bootloader协议打算采用Ymodem协议。
主芯片采用STM32G030F6P6,与NRF24L01模块的通讯方式采用硬件SPI,原理图如下:
把整体任务分解主要是以下四步:
在Doc文件夹中有SecureCRT这个工具,需要用它作为上位机来发送Ymodem协议的文件。
1.连接后输入回车键。出现以下界面(我用的芯片是STM32G030F6P6不过这里的字符串我没改,程序是移植的官方的IAP例程,所以显示的是F10X):
2.按照提示,输入1之后,单片机会一直发送字符“C”等待Bin文件传输。
3.使用Yomdem发送需要的文件,Bin文件我已经生成了,在RC-2G4_SEND_APP文件下。
3.等待传输完成。
4.按下3跳转到APP程序
这里就跳转到NRF24L01的发送程序了。我代码里是循环在发送0x00~0xff。
这儿的中文显示乱码了,因为我的程序的字符编码方式GBK。而这个上位机是不支持这个汉字编码的。所以这里的中文会乱码。(可能支持UTF-8编码,不过我没尝试过,忽略中文乱码这点)
至此为止,BootLoader就全部完成了。
基于这个简单的例程,我们应该就可以设计出自己的BootLoader程序了。
最开始制作的时候我是像设计三个程序区,一个备份区,一个APP区,一个BootLoader区。如果发生升级失败,可以把备份区的代码烧录到APP区,而不会导致升级失败就卡死。
不过最后完成的时候,STM32G030F6P6这个单片机,他的Flash空间就只有32KB。我制作了BootLoader程序之后,就用掉了14kb。所以剩下的空间不够划分成两个程序区了。所以这个想法就作为未来展望。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。