STM32
登录
直播中
王桂兰
7年用户
1162经验值
私信
关注
[问答]
如何去实现有线IAP用户程序升级呢
开启该帖子的消息推送
IAP
串口通信
单片机
如何去实现有线IAP用户程序升级呢?有哪些注意事项呢?
回帖
(1)
唐红菊
2021-12-17 10:57:09
如果你没有时间,想吃 “快餐” ,请直接移步至文末。
在上一篇博文中,我介绍了我有线IAP用户程序升级的一些心得,有线升级并不是我的目的,无线才是,所以就有了这篇文章。这篇文章介绍的也是在实现单片机有线升级的基础上,实现无线升级的一些心得和建议。
我对IAP的理解
常用的单片机程序下载方式有三种,即
ISP(In System Programing,在系统编程)
ICP(In Circuit Programing,在电路编程)
IAP(In applicating Programing,在应用编程)
个人理解是传统的ISP和ICP的程序烧录方式可以看作是开发商(芯片制造商)在一块给定的区域(flash)建造
一座
全新的房子,并放一个人在屋子里,人负责执行具体的功能;
IAP下载的方式像是先用传统的方式在一块给定区域建造
两座
房子(A、B),每个房子分配一个人(a、b),其中一个人a负责把b请进B房间,而b则负责执行就的功能,且
a、b在同一时间只能有一个人活动
。当然,因为房屋的总体使用面积固定,所以IAP建造的房子面积(flash空间)相较于ISP和ICP较小。
无线模块的选用
传输协议
关于程序由电脑无线传输到单片机:因为我想要实现的程序的无线下载,所以就必须要考虑无线传输时候因为周围嘈杂的无线电环境导致的程序接收与发送不一致。在无线模块与单片机的通信方面,我使用的是串口通信,串口通信本身对字节级具有校验能力,但在字节间的校验就无能为力,查阅资料最后决定使用Ymodem通信协议。
无线模块
重点来了!!!
在程序由电脑到无线模块的传输过程,我最初选用的是NRF24L01,但很快就碰到了问题。首先是NRF24L01的驱动编写问题,这块无线模块很便宜,能耗也很低,但它本身每次只能实现32字节的数据传输,想要实现NRF24L01的文件级无线传输,不仅需要对NRF24L01进行底层的驱动编程,还得为它专门编写一套适合传输协议。最终选用的HC-05蓝牙模块。
这款模块具有下面的特点:
优点:
模块可以通过串口,借助AT指令直接配置无线模块,配置完后按照给定方式连接单片机或CH340后,可以实现无线透传,相比于使用杜邦线连接的串口传输,它帮忙省掉了杜邦线,实现了近距离的无线传输。
自带蓝牙模块间的通信协议,传输数据的大小没有限制,完美避开了NRF24L01模块的32字节的大坑。
使用AT指令配置后,已做出的掉电配置不更改,单片机上电后不需要再给无线模块发送配置指令,节省代码空间。
缺点:
较NRF24L01贵
更加耗电,所以不能通过st-link对单片机和模块直接供电,别问我为什么知道,问就是我的st-link废了,目前的分析原因是st-link负载功率过大
距离限制,HC-05的参考通信距离是空旷环境下的10米,HC-08的距离会比较长,参考通信距离是空旷环境下的80米,但更贵
避坑指南(总结)
避坑总结(含上述提到的和未提到的):
实现无线功能,建议使用像HC-05这类直接使用AT指令的无线模块,不建议使用NRF24L01;
如果使用HC-05,不要使用st-link直接对单片机和HC-05直接供电,否则st-link会挂掉,十几块钱和等待到货的几天时间没了;
建议使用类似与Ymodem的传输协议,在保证接收正确的前提下,还可以试下逐帧下载,节省ram
如果想要实现无线下载功能,可以使用OTA(over the air)作为其中的关键字,会有意向不到的收获。
如果你没有时间,想吃 “快餐” ,请直接移步至文末。
在上一篇博文中,我介绍了我有线IAP用户程序升级的一些心得,有线升级并不是我的目的,无线才是,所以就有了这篇文章。这篇文章介绍的也是在实现单片机有线升级的基础上,实现无线升级的一些心得和建议。
我对IAP的理解
常用的单片机程序下载方式有三种,即
ISP(In System Programing,在系统编程)
ICP(In Circuit Programing,在电路编程)
IAP(In applicating Programing,在应用编程)
个人理解是传统的ISP和ICP的程序烧录方式可以看作是开发商(芯片制造商)在一块给定的区域(flash)建造
一座
全新的房子,并放一个人在屋子里,人负责执行具体的功能;
IAP下载的方式像是先用传统的方式在一块给定区域建造
两座
房子(A、B),每个房子分配一个人(a、b),其中一个人a负责把b请进B房间,而b则负责执行就的功能,且
a、b在同一时间只能有一个人活动
。当然,因为房屋的总体使用面积固定,所以IAP建造的房子面积(flash空间)相较于ISP和ICP较小。
无线模块的选用
传输协议
关于程序由电脑无线传输到单片机:因为我想要实现的程序的无线下载,所以就必须要考虑无线传输时候因为周围嘈杂的无线电环境导致的程序接收与发送不一致。在无线模块与单片机的通信方面,我使用的是串口通信,串口通信本身对字节级具有校验能力,但在字节间的校验就无能为力,查阅资料最后决定使用Ymodem通信协议。
无线模块
重点来了!!!
在程序由电脑到无线模块的传输过程,我最初选用的是NRF24L01,但很快就碰到了问题。首先是NRF24L01的驱动编写问题,这块无线模块很便宜,能耗也很低,但它本身每次只能实现32字节的数据传输,想要实现NRF24L01的文件级无线传输,不仅需要对NRF24L01进行底层的驱动编程,还得为它专门编写一套适合传输协议。最终选用的HC-05蓝牙模块。
这款模块具有下面的特点:
优点:
模块可以通过串口,借助AT指令直接配置无线模块,配置完后按照给定方式连接单片机或CH340后,可以实现无线透传,相比于使用杜邦线连接的串口传输,它帮忙省掉了杜邦线,实现了近距离的无线传输。
自带蓝牙模块间的通信协议,传输数据的大小没有限制,完美避开了NRF24L01模块的32字节的大坑。
使用AT指令配置后,已做出的掉电配置不更改,单片机上电后不需要再给无线模块发送配置指令,节省代码空间。
缺点:
较NRF24L01贵
更加耗电,所以不能通过st-link对单片机和模块直接供电,别问我为什么知道,问就是我的st-link废了,目前的分析原因是st-link负载功率过大
距离限制,HC-05的参考通信距离是空旷环境下的10米,HC-08的距离会比较长,参考通信距离是空旷环境下的80米,但更贵
避坑指南(总结)
避坑总结(含上述提到的和未提到的):
实现无线功能,建议使用像HC-05这类直接使用AT指令的无线模块,不建议使用NRF24L01;
如果使用HC-05,不要使用st-link直接对单片机和HC-05直接供电,否则st-link会挂掉,十几块钱和等待到货的几天时间没了;
建议使用类似与Ymodem的传输协议,在保证接收正确的前提下,还可以试下逐帧下载,节省ram
如果想要实现无线下载功能,可以使用OTA(over the air)作为其中的关键字,会有意向不到的收获。
举报
更多回帖
rotate(-90deg);
回复
相关问答
IAP
串口通信
单片机
怎样
去
实现
STM32
IAP
升级
的设计
呢
2022-01-27
1079
怎样
去
修改STM32
IAP
升级
的
程序
呢
2021-11-02
1052
如何
去
实现
APP
程序
以及进行
IAP
升级
呢
2021-12-13
3167
如何
去
实现
STM32
IAP
升级
的设计
呢
2021-11-25
589
如何
去
实现
stm32的
IAP
在线
升级
呢
2021-11-29
973
STM8
IAP
升级
流程是怎样的?如何
去
实现
呢
2022-01-27
992
如何通过USB
升级
代码
去
实现
程序
的下载更新功能
呢
2021-11-12
1329
如何
去
实现
STM32f103c8t6的
IAP
在线
升级
呢
2021-12-14
1040
怎样
去
实现
IAP
功能的逻辑与
程序
的编写
呢
2022-01-18
1135
如何
去
实现
一种基于蓝牙的STM32
IAP
在线
升级
呢
2021-11-26
1895
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分