STC51单片机实现无线下载,理论上别的支持串口下载的单片机,都支持此方案
需求分析
1、需要实现有TXD,RXD两根线来下载程序,因为STC51单片机只能通过串口下载,所以无线方案中,需要有串口输出功能,也就是说接收到无线信号后,要能发送到串口1
2、需要复位电路,也就是让单片机复位的东西,或者采用自定义下载,前导符方案下载等
3、最理想的下载方案,外面通过笔记本的或电脑,通过接入的无线或蓝牙或wifi,与51的设备连通,点击下载按钮,进度条后下载成功。能搜索到多个无线,想下哪个下哪个,还能显示搜到的名字,版本是否最新,多人同时下载,不会冲突
4、市面上的无线通信方案有好几种,NRF24L01,蓝牙,wifi
同时又有433Mh,2.4G等
5、价格,一定要便宜,每设备增加成本在5元左右可以接受
6、接口,最好只有VCC,GND,TXD,RXD这4个接口,这样可以插在下载口上进行扩展,不用改变现有的卡
触个分析:
NRF24L01无线方案:
此方案需要有单片机才能使用,因为它提供的是spi接口与单片机相连,不考虑
顺舟无线串口:应该也可以,只不过要用前导符下载程序,或者按键下载,因为只想重启单片机不能断电顺舟
实测下来,顺舟是不行的,测试的时候,开始调节频率,就得不到单片机的回应了,然后就超时了,
1.与用MAX232芯片无关,因为我电脑端插了USB-TTL也一样
2.用自己的程序,与用STC-ISP程序是一样的问题
3.两个顺舟模块,都改了even偶校验,也不行,但两个改校验的是可以相互通讯的
换有线连接,立马就下载了
分析原因:
因为顺舟不会因为有1个字节就立马发送,而是要等多一点数据,再1次发送多字节数据,那么就有个组包时间,
比如发送7F时,单片机收到7F,则重启进入下载模式,返回一串数据,ISP收到这串数据,发送调频包,此时会在调频包前面多发一些7F,导致失败
事实上,前面多发7F没有任何关系,而是发送FE的时间,间隔不能太长,比如我调成110ms定时发送,则不行,因为单片机那边有超时检测
事实上,我调成100ms,都不行,看来要调成小于100ms,比如调成50ms,则用我自己写的程序,插有线可以直接下载,但改成顺舟,则在发FE的时候
每个包一般发了7节字,但是要命的是,第一个FE包与第二个FE包,相隔400ms多,所以单片机那边超时了,目前这个问题无解
wifi:应该也可以,因为wifi输出的也可以是RX,TX信号,但wifi比蓝牙贵
实测下来不行,用的有人wifi模块215,我搭了一个环境,有人模块做为AP,电脑插无线网卡,连入这个wifi,然后打开网络调试助手以20ms的速度不停的发FF
但结果就是,每秒只有4个数据包发送到了串口,每个包有12~13个FF,问题就在于这个1秒钟最多只发4个包给串口,即使改了AT+UARTTE=20也不行
改UDP也不行,改UDP后,反而每秒只有1~3个包传到了串口中,看来有人wifi无解
用esp-12f试了一下,如果用TCP的透传模式,大概1秒钟也只能收到4个包到串口,但用UDP模式,则感觉是实时发送,就是不知道中间是否丢包,可以一试
但是,UDP通讯,实测下来,我开始了UDP模式的透传模式,电脑这边用网络调试助手20ms循环发送FF,但esp12f转发到串口的数据是400多ms发一长串数据,
9600与115200波特率都试了,不行,所以wifi实时下载无解
蓝牙:可以
网上有成功按例,有蓝牙模块的笔记本(联想Y系笔记本),HC-05蓝牙模块
先用USB转串口模块,与蓝牙模块相连,接入笔记本,笔记本与蓝牙配对成功,其中要输入密码1234,则多出一个COM28口
USB转串口的串口号是COM5,波特率38400,用AT指令改HC-05的参数,9600,8,E,1,也就是数据位8,停止位1,偶校验
然后HC-05连入单片机中,就可以实现蓝牙下载了,https://blog.csdn.net/czhnja/article/details/9748279