大家好!作者潜伏C站多年,第一次写文章,不求别的,觉得有用的话点个赞吧,也是对作者最大的鼓励,谢谢大家!有疑问的可以留言或者私信,作者会定期回复。
一.背景交待
作者工作之余喜欢用MicroPython玩单片机编程,鼓捣一些电子DIY。几月前RPi Pico发布后,作者在淘宝买了一块尝鲜,不贵就20+软妹币,在目前的市场行情下比STM32开发板略便宜,和ESP32相当。跟着教程成功点了灯,再试了PWM, ADC, RTC, UART, SPI等等,发现别的都挺好,就是不能做多线程(作者这一想法直接导致了后面的踩坑事件),至少WeAct Studio的STM32F411开发板是可以玩多任务的。
当然Pico也有不少优点:
1.做工优良,比起其他山寨的开发板漂亮不是一点半点,还有邮票孔工艺支持整片贴装;
2.自带2MFlash存储器,可以完成本地的log文件记录,也不用额外花钱买Flash芯片,还要自己动手焊接;
3.较高的主频133MHz;
4.多达16路PWM,30个IO,4路ADC等等;
5.最重要的是无论烧录MicroPython固件还是随后的编写程序都极其简单直接。
作者最近正在开发一个简单的测试工装,使用两路ADC分别监控和记录电压和电流的变化,log文件读写功能正好能排上用场。写起程序来也极其简单,参考MicroPython官网的教程即可。但是在尝试多线程的时候踩了一个大坑,下面细细说来。
二.问题描述
本来用一个大的For循环加延时和两条ADC.read()指令然后写文件操作到Flash就已经可以完成采样和log功能。后来作者尝试使用_thread类的新建线程,调试运行后就停不下来,不论怎么重连开发板也进不到Thonny开发环境的文件系统里。作者无奈决定重置Pico开发板,即按着BOOTSEL键再插USB口进入bootloader模式,见下图。
这时会弹出127M(实际没这么大)的U盘,里面有两个说明性质的html文件和txt文件。拖入MicroPython的.uf2文件(下载链接见文章后半部分),自动重启后,进入normal模式后设备管理器死活不识别开发板。悲剧了!于是到处搜教程找解决办法,中文的英文的教程和论坛看了不下20篇,前前后后搞了好几天终于搞定,发现这块的中文资料太少,为了避免后来人再次踩坑,作者决定记录下来解决办法。
设备管理器不识别开发板,作者第一反应USB驱动是不是不对,到处下驱动,Board_CDC、 COM_serial、Atmel驱动然后手动安装都没有用。又下了驱动精灵也不管用,论坛上有说用Zadig安装USB驱动,一试还试出新问题了。有人说要在Zadig 2.5版本上将RP2 boot(interface0)的驱动安装成USB Serial (CDC),作者老老实实做了,软件弹窗警告会修改系统文件,作者作死点了继续,安装成功后旧问题没解决,更惨的是再也调不出U盘,在上一层问题没解决的情况下叠加了一层问题。这下Pico彻底变砖头了!
三.解决办法
作者不服气,继续搜索英文论坛,找到一篇文章提到:如果你在Zadig里搞坏了东西应该怎么恢复,原文点这里,感谢这位有心的作者。其实很简单,只要按着BOOTSEL按键再插USB口进入bootloader模式,然后在设备管理器里找到RP2 boot(interface0)的那一项,然后彻底卸载掉,重新拔插就会自动安装正确的驱动。也许这是常规操作,反正作者当时想不到。这就又回到了上一层问题:normal模式下设备管理器不识别开发板。
作者继续找解决办法,以为还是驱动问题,设备管理器不识别可不就是驱动问题吗?作者还试了各种在设备管理器里手动安装过时驱动的办法,都是铩羽而归。一次不经意间作者看到MicroPython论坛里几个大佬版主在解答新手提出的main函数停不下来怎么重置Pico的问题时,发现版主已经准备了一个.uf2文件(文件包点这里,再次感谢),拖到U盘就可以直接清除存储器的程序。抱着试试看的想法,作者把文件下载下来,解压,再拖入U盘,重启后居然可以识别了。。。这久违的Pi Pico Serial Port(COM#)。
接着再次进入bootloader模式,拖入最新的MicroPython.uf2文件(文件点这里),重启进入normal模式,设备管理器正常识别,用thonny连接一切正常。谢天谢地!
四.写在后面
经过这次踩坑,作者也有一点点思考。
1.找解决方法时不能着急,抓着一根救命稻草就抓着不放,也不看适用条件,说不定会误入歧途。看完前因后果,合适了再试,慢点才更快。
2.解决问题不能光看现象的表面,比如设备管理器不识别开发板,不一定是驱动问题,会不会是前面的异常操作(main程序停不下来)导致的?
3.玩开源软硬件,生态很重要,缺乏相关资料,遇到问题也是毫无头绪。这也提醒我们开发者要多分享经验心得,不要总觉得没必要,或者懒得写。动动键盘写出来,既总结了自己的经验,加深理解,又帮助了别人,何乐而不为呢?
最后附上MicroPython论坛链接,人生苦短,我用python! MicroPython Forum - Forum
版权声明:本文为CSDN博主「chizf」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chizf/article/details/122516458
暂无评论