完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
通常,我们会通过 python 脚本,从 PC 端,通过串口给 esp32 芯片或者模块下载固件程序。
通过 esptool (https://github.com/espressif/esptool) 脚本,我们可以很方便的实现。 但有时,我们也希望能通过其他单片机的串口,给 esp32/esp8266 进行固件更新。(前提是外部单片机能够控制esp32 进入串口下载模式)。 完整的串口通信协议可以参考这里(https://github.com/espressif/esptool/w ... -Protocol) 为了方便调试,我们可以通过运行 esptool,来查看上位机与esp32之间的通信过程。 首先,esp32的串口通信协议基于 SLIP (Serial Line Internet Protocol)。任何一个数据包以0xC0开始,以0xC0结尾。数据包内容中的0xC0替换为0xDB 0xDC。数据包内容中的0xDB替换为0xDB 0xDD. 在运行esptool的同时,在命令中添加 --trace 参数,即可查看通信过程中的串口数据。 以读取flash id的过程为例: Code: Select all python esptool.py -b 115200 -p /dev/cu.SLAB_USBtoUART --trace --no-stub flash_id 从输出的 log 中,我们可以看到串口通信的具体内容。 Code: Select all TRACE +0.000 command op=0x09 data len=16 wait_response=1 timeout=3.000 data=1c20006040000080ffffffff00000000 TRACE +0.000 Write 26 bytes: c000091000000000 001c200060400000 | .......... .`@.. 80ffffffff000000 00c0 | .......... TRACE +0.004 Read 1 bytes: c0 TRACE +0.000 Read 13 bytes: 01090400c840160000000000c0 TRACE +0.000 Received full packet: 01090400c840160000000000 上面的log 中,串口向 esp32 发送26字节十六进制序列 c000091000000000001c20006040000080ffffffff00000000c0 esp32 向串口返回13字节十六进制序列 c001090400c840160000000000c0 |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
1106 浏览 1 评论
574浏览 6评论
477浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
460浏览 5评论
461浏览 4评论
435浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 09:48 , Processed in 0.755008 second(s), Total 73, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号