树莓派Raspberry Pi Pico开发板踩坑:重置后设备管理器各种不识别,未知设备/unknown device

大家好!作者潜伏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

生成海报
点赞 0

chizf

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

电脑不识别STM32的USB虚拟串口

电脑不识别STM32的USB虚拟串口 现象 板子和电脑联调的时候发现,USB线插入板子以后电脑不识别虚拟串口,通过禁用设备再启用,可以正常工作。也可以按一下复位键才能识别。 以前似乎没有这个问题&#

利用K210获取传感器数值

介绍 技术支持网站: Maixpy文档简介: MaixPy 文档简介 - Sipeed Wiki 01Studio社区: 01Studio社区 - Powered by Discuz! K21

树莓派Pico-Raspberry Pi Pico简介

PI pico 产品特性: Raspberry Pi Pico 是一款低成本,高性能的微控制器开发板,具有灵活数字接口。硬件上,采用 Raspberry Pi 官方自主研发的 RP204