尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

双Type-C直插式RP2350开发板:USB外设原型设计新思路

双Type-C直插式RP2350开发板:USB外设原型设计新思路 有一次我在桌面上调一个“USB快捷指令板”的原型。板子是常见的树莓派Pico开发板固件已经能让它枚举成一个USB键盘但桌面上还拖着一根Type-C线。这根线一会儿压住传感器线一会儿被键盘推来推去。我当时想如果板子本身就是一个USB公头可以直接插进电脑的USB口那么整个原型会清爽很多。后来看到微雪 RP2350-USB-CM 迷你开发板板子采用双Type-C设计一个是公头一个是母座用的芯片是树莓派RP2350双核微控制器。第一眼感觉是这块板子把“开发板”和“USB设备”这两件事合并了。如果你也想做一个USB形态的嵌入式原型或者正在纠结要不要买这种直插式开发板这篇内容应该可以帮到你。这篇文章想讲清楚三件事这种板子的真实价值在哪里上手需要配置什么以及双Type-C口在使用上有哪些容易踩的坑。换句话说真正的重点不是“它多了几个Type-C口”而是“这块板子的物理形态如何改变你的工作流”。1. 双Type-C直插先解决的是“开发板该放在哪”的问题传统开发板为什么总让人有点凌乱因为绝大多数开发板把USB口设计成“插座”形态你必须通过一根线才能连接电脑。这种设计在桌面调试时没问题但在做USB外设原型时就很尴尬你明明在做一个能插进电脑的U盘/键盘但开发板本身却要拖一条线才能实现“USB设备”的身份。原型做完后也没有办法直接放进外壳里。1.1 传统开发板的“USB线焦虑”线缆的影响MicroUSB/Type-C线本身有长度、重量和方向容易晃动。连接器寿命反复插拔线缆板载USB座和线两端都有损坏风险。空间布局在面包板上加传感器、显示屏、舵机时线缆占据了本来就不大的桌面空间。产品验证困难要把USB设备放进外壳、或固定到设备内部时拖着一根线的开发板很难模拟真实使用场景。所以一块板子如果有Type-C公头可以直接插进电脑或充电头就等于把“连接线”这一层取消掉了。对于USB HID、USB CDC、USB MSC这类“USB外设”应用这种形态尤其合适。板子插在机器上重心在接口附近反而不容易松动。1.2 母座的意义扩展、供电、串联但不能想当然双Type-C设计里公头解决“插入主机”母座解决“继续接线”。母座至少能带来三种可能性外接供电公头插入电脑时电流有限如果你做电机、舵机、高功率外设可以用高功率电源从母座供电。串接线缆需要把板子放在设备内部同时又要引出一个USB口到外壳时母座可以连接延长线。USB外设扩展如果硬件设计支持母座也可以连接U盘、USB键盘等设备让RP2350充当USB Host。这里必须泼一盆冷水母座到底能不能作为USB Host口取决于芯片USB控制器、板级设计以及固件里是否实现了Host栈。很多情况下母座只是把另一个Type-C口的VBUS、GND、D/D-导到芯片或某个转接电路中并不表示一定支持U盘读写。在买板子之前一定要看原理图确认两条Type-C口的电源和数据引脚分别连接到哪里。这块板的双Type-C设计最大的价值是物理形态不是自动获得USB Host能力。两个口都能插不代表两个口都能当主机的口用。2. 聊RP2350之前先分清“官方芯片”“开发板”“生态”三件事很多朋友第一次看到“RP2350-USB-CM”会下意识认为它是树莓派官方开发板。其实更准确地说芯片来自树莓派开发板是由微雪设计制造的第三方板。沿用Pico SDK和MicroPython生态但板级引脚、电源设计、Type-C口定义由开发板厂商决定。2.1 这块板子的芯片底子为什么值得关注RP2350是树莓派在RP2040之后推出的双核微控制器。相比RP2040它在几个方向上做了明显升级双核双架构每个核都可以运行Arm Cortex-M33也可以切换到RISC-V。官方固件和SDK层面你可以把程序编成RISC-V版本也可以编成Arm版本这在学习不同指令集时很有价值。更丰富的安全特性支持安全启动、不可变ROM启动和相关校验。如果你的产品在意固件被修改或反读这个特性会省很多事。更大的片上SRAM相比RP2040RP2350的SRAM通常更大做USB包缓冲、音频DSP、复杂状态机算法时更从容。PIO和高性能外设可编程IO让非标准协议可以比较灵活地在引脚上实现例如WS2812灯带、特定传感器时序、甚至模拟一些低速总线。这些能力让RP2350不是“老树莓派Pico换皮”而是更适合做需要“性能、安全、灵活性”的原型和产品验证。2.2 值得看重的是生态而不是单纯参数选择RP2350开发板的一个关键原因是软件生态成熟。Raspberry Pi Pico SDK、MicroPython、Arduino、CircuitPython、OpenOCD、TinyUSB等工具都已经比较完善。对新手来说这意味着网上能找到大量教程踩坑后也容易搜索到答案。用MicroPython时几行代码就能操作GPIO、PWM、I2C、SPI。用C SDK时可以通过TinyUSB快速实现USB HID、CDC、MSC等设备类型。用Arduino时也能获得类似RP2040/RP2350的包支持。现代嵌入式开发芯片性能只是起点开发体验和社区资源往往更重要。特别是做USB相关应用时TinyUSB这种现成协议栈能让很多底层细节被封装掉。2.3 但芯片能力不等于板子能力需要注意RP2350本身能力较强但这块板子具体引出了哪些引脚、有没有板载Flash、晶振频率、LED引脚、Type-C口如何布线都由微雪这一级决定。你在MicroPython里写machine.Pin(25)能不能点亮LED必须看这块板的原理图而不是默认和官方Pico一致。拿到板子第一件事不是写代码而是打开原理图和引脚图做一张“引脚映射表”。3. 上手前先攻克一个关键问题两个Type-C口到底怎么连的双Type-C是这块板最显眼的特征也是最容易产生误解的地方。如果你不搞清两个口的电源、数据和方向后面很可能会出现“插上电脑没反应”“烧录失败”“外设没供电”等问题。3.1 Type-C接口的引脚不需要记全但要理解几类Type-C接口为什么和以前MicroUSB不同是因为它引入了一个可正反插的连接器结构。常见的Type-C引脚很简单但一定要分清VBUS电源正极通常5V。GND电源地。D / D-USB 2.0数据线。CC1 / CC2配置通道用于方向识别和供电协商。SBU边带使用通常用在音频、扩展显示等场景普通USB开发板用不到。屏蔽和外壳地结构件有时需要和信号地分开处理。有些卖家的Type-C连接器标注“16脚”并不是缺功能而是省略了部分非必需引脚。比如只实现USB 2.0和电源时不需要完整的24引脚排列核心还是VBUS、GND、D/D-、CC1/CC2。3.2 供电方向和数据方向是两套逻辑在双Type-C开发板上最容易混淆的是“电源”和“数据”。你可以把公头插在电脑上电脑提供5V给板子但同时母座也可能连接了一个外部电源。如果两个口都接上且VBUS没有做隔离就可能出现两个5V电源同时向板子供电的“电源打架”问题虽然大多数情况不会烧但会带来不稳定。数据方向也一样。公头通常连到主机板子作为USB Device这是正常的。母座如果被用来接外部USB设备就需要板子拥有USB Host能力并且固件里实现了Host栈如果只是接一根串口线或充电线那它连的可能不是USB数据引脚。所以拿到板子后的第一项任务是查清楚公头的VBUS、D、D-、GND、CC连接到芯片哪些引脚或电源网络。母座的VBUS、D、D-、GND、CC连接到芯片哪些引脚或电源网络。两个口的VBUS是否是同一个电源域中间有没有二极管、MOS管或负载开关。如果两个口的D/D-都连到同一组芯片USB引脚那么它们不能同时被两个USB主机使用。3.3 固件角色USB Device 还是 USB Host在RP2350开发板上最主流的USB角色是USB Device也就是把板子做成键盘、鼠标、串口、U盘等外设。官方SDK和MicroPython对Device模式支持比较成熟。如果需要让母座作为USB Host去读取U盘、连接USB键盘鼠标那就需要固件里有Host协议栈。这时你不能只看硬件有没有Type-C口还要确认芯片USB控制器是否支持Host模式板级D/D-走线是否连接到芯片可用的USB Host引脚固件是否实现了Mass Storage、HID Host等类VBUS供电是否足够电流上限是多少。这里最容易踩的坑是买了双Type-C板子以为母座能直接读U盘。实际上如果你没有提前看原理图和固件例程很大几率会落空。4. 从空板到第一份固件最小可运行流程不管这块板子硬件多精致第一步永远是“让它跑一个最简单的程序”。这里以RP2350常见流程为例具体目录和参数以微雪官方资料为准。4.1 准备哪些东西一块RP2350-USB-CM开发板一台电脑最好有USB-A或USB-C口一根能传输数据的Type-C线如果公头直插电脑就不需要线但母座测试时需要MicroPython固件或Raspberry Pi Pico SDK一个有串口或USB烧录功能的软件比如Thonny、picotool或uf2拖拽。4.2 进入BOOTSEL模式烧录UF2RP2350系列和Pico类似一般有一个BOOT按钮。具体操作按住板上的BOOT键。把Type-C公头插入电脑USB口。电脑上出现一个名为RP2350或RPI-RP2的U盘。将下载好的UF2固件文件拖进该U盘。等待自动重启U盘消失板子开始运行固件。如果在电脑上没有看到U盘不要急着换线。先检查是不是进了错误模式或者看看设备管理器里是否出现未知设备。4.3 用MicroPython点亮板载LED以MicroPython为例安装完固件后你可以通过REPL输入以下代码from machine import Pin, Timer led Pin(25, Pin.OUT) # 具体引脚号以原理图为准 def toggle(t): led.toggle() timer Timer() timer.init(freq2, modeTimer.PERIODIC, callbacktoggle)这段代码只是让某个GPIO按2Hz翻转。如果你发现LED不亮说明引脚号不对或者板载LED并没有接在GPIO25。请改成原理图上标记的LED引脚。4.4 用C SDK实现一个USB虚拟串口如果只点亮LED还不足以验证这块板子的“USB属性”。可以用Raspberry Pi Pico SDK加TinyUSB做一个CDC串口程序。常见结构大致是#include bsp/board.h #include tusb.h int main(void) { board_init(); tusb_init(); while (1) { tud_task(); } }配合例程里的usb_descriptors.c配置成CDC设备后板子插入电脑会生成一个COM口。用串口工具发送数据RP2350可以在cdc_task里接收并打印。这一步的意义在于它验证的不只是MCU能不能跑而是USB口、D/D-走线、电源、BOOTSEL、UF2和调试链路整体是否正常。4.5 烧录后如何判断成功设备管理器里出现新的COM口串口工具打开COM口后能看到打印信息重新上电后程序能自动运行如果还连接着调试器可以通过OpenOCD读取芯片ID。如果烧录成功后板子整个变成未知设备通常先怀疑固件里的USB描述符配置再看供电有没有问题。5. 一个稍微完整的例子USB小键盘加舵机反馈当一块开发板能稳定烧录和枚举后就可以做一些更接近真实场景的实验。这里有一个典型的组合USB HID小键盘 舵机反馈。它能同时用上USB Device能力、GPIO和PWM也最能看出直插式开发板在桌面场景中的优点。5.1 场景
返回列表