news 2026/4/20 11:21:23

树莓派Pico引脚不够用?巧用GPIO复用与隐藏测试点(TP1-TP6)扩展你的项目

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
树莓派Pico引脚不够用?巧用GPIO复用与隐藏测试点(TP1-TP6)扩展你的项目

树莓派Pico引脚不够用?巧用GPIO复用与隐藏测试点(TP1-TP6)扩展你的项目

当你的树莓派Pico项目变得越来越复杂,26个GPIO引脚可能突然显得捉襟见肘。别急着换开发板——Pico内部其实隐藏着更多可能性。本文将带你探索如何通过GPIO复用和那些常被忽视的测试点(TP1-TP6)来突破引脚限制,为你的项目解锁新维度。

1. GPIO复用:让每个引脚发挥多重作用

RP2040芯片的每个GPIO引脚都不只是简单的输入输出接口。通过Alternate Function(复用功能)配置,你可以让同一个引脚在不同时间扮演不同角色。

1.1 理解GPIO复用机制

RP2040的GPIO复用系统允许每个引脚被动态重映射到不同的内部外设。这意味着:

  • 一个引脚可以上午做UART通信,下午变成PWM输出
  • 同一组物理引脚可以按需切换为SPI或I2C接口
  • 数字引脚可以临时"变身"为模拟输入(仅限GPIO26-29)

复用配置主要通过gpio_set_function()函数实现。以下是C SDK中的典型设置流程:

#include "hardware/gpio.h" // 将GPIO0设置为SPI0 RX功能 gpio_set_function(0, GPIO_FUNC_SPI);

在MicroPython中更简单:

import machine spi = machine.SPI(0, sck=machine.Pin(2), mosi=machine.Pin(3), miso=machine.Pin(4)) # 即使这些引脚之前被用作其他用途,现在也会自动切换为SPI功能

1.2 复用实战:创建第二组SPI接口

虽然Pico官方文档只提到两组SPI(SPI0和SPI1),但通过复用我们可以"创造"出更多:

引脚默认SPI0功能复用为SPI1功能
GP2SPI0 SCKSPI1 SCK
GP3SPI0 TXSPI1 TX
GP4SPI0 RXSPI1 RX
GP5SPI0 CSnSPI1 CSn

注意:同时使用多组SPI时需注意时钟冲突问题,建议不同时激活

2. 隐藏的宝藏:测试点(TP1-TP6)深度解析

Pico底部那六个神秘的测试点(TP1-TP6)远不止用于工厂测试。它们提供了直接访问关键信号的途径,是硬件黑客的秘密武器。

2.1 测试点功能速查表

测试点主要功能安全使用建议
TP1专用USB地线连接USB设备时必接
TP2USB D-需与TP3配对使用
TP3USB D+需与TP2配对使用
TP4SMPS控制不建议外部使用
TP5LED控制输出电压受限
TP6BOOTSEL无需按钮即可烧录

2.2 实战应用:通过测试点扩展USB功能

想连接额外的USB设备但不想占用宝贵的GPIO?TP2和TP3就是答案:

  1. 准备四线电缆(包含D+, D-, GND和5V)
  2. 将TP2连接至设备的D-
  3. 将TP3连接至设备的D+
  4. TP1连接至设备地线
  5. 从VBUS(引脚40)获取5V电源

C SDK示例代码配置USB端口:

#include "pico/stdlib.h" #include "hardware/gpio.h" #include "tusb.h" void usb_task() { tud_task(); // 处理USB事件 if(tud_cdc_connected()) { uint8_t buf[64]; uint32_t count = tud_cdc_read(buf, sizeof(buf)); // 处理接收到的数据 } }

3. 高级技巧:不按按钮的固件烧录

厌倦了每次更新固件都要按住BOOTSEL按钮?TP6可以解放你的手指:

  1. 在电路中添加一个NPN三极管或MOSFET
  2. 将集电极/漏极连接至TP6
  3. 发射极/源极接地
  4. 通过任一GPIO控制基极/栅极

这样就能通过代码触发烧录模式了:

import machine import time boot_pin = machine.Pin(14, machine.Pin.OUT) # 假设GPIO14控制烧录电路 def enter_bootloader(): boot_pin.value(1) # 拉高触发三极管 time.sleep_ms(100) machine.reset() # 重启进入烧录模式

4. 电源管理:榨取每一毫瓦的性能

当引脚紧张时,合理管理电源可以释放出被占用的电源相关引脚:

  • GPIO23 (SMPS控制): 通常保持低电平(PFM模式)。设为高电平可强制PWM模式,降低纹波但增加功耗
  • GPIO24 (VBUS检测): 可用于检测USB连接状态,无需额外电路
  • GPIO29 (VSYS监测): 通过ADC读取系统电压,实现电池电量监测

电源模式优化示例:

// 切换电源模式 void set_power_mode(bool high_perf) { gpio_init(23); gpio_set_dir(23, GPIO_OUT); gpio_put(23, high_perf); // 高性能模式=1,省电模式=0 }

5. 极限挑战:当所有GPIO都用完时

即使复用和测试点都用上,有时还是需要更多接口。这时可以考虑:

  • 矩阵扫描技术: 用N个引脚控制N×M个按钮/LED
  • 移位寄存器: 如74HC595,3个GPIO扩展出8+个输出
  • I2C/SPI扩展芯片: MCP23017等GPIO扩展器
  • PIO程序: 用RP2040独有的可编程I/O实现定制接口

PIO示例:用单个引脚模拟WS2812B控制信号

import rp2 from machine import Pin @rp2.asm_pio(sideset_init=rp2.PIO.OUT_LOW, out_shiftdir=rp2.PIO.SHIFT_LEFT, autopull=True) def ws2812(): T1 = 2 T2 = 5 T3 = 3 wrap_target() label("bitloop") out(x, 1) .side(0) [T3 - 1] jmp(not_x, "do_zero") .side(1) [T1 - 1] jmp("bitloop") .side(1) [T2 - 1] label("do_zero") nop() .side(0) [T2 - 1] wrap() sm = rp2.StateMachine(0, ws2812, freq=8_000_000, sideset_base=Pin(15)) sm.active(1)

通过这些技巧,我的一个气象站项目成功在仅使用Pico的情况下,同时驱动了传感器阵列、OLED显示屏、SD卡存储和无线模块。关键是把UART1复用到了原本用于LED的GPIO25上,并通过TP6实现了无线固件更新。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 11:21:15

Superpowers — AI 编程技能框架详解

🤖 Superpowers — AI 编程技能框架 GitHub: obra/superpowers "AI 编程代理的完整方法论" — 让 AI 代理遵循系统化开发流程,而不是一上来就写代码。 核心理念 Superpowers 不是简单给 AI 装几个提示词,而是构建了一整套开发…

作者头像 李华
网站建设 2026/4/20 11:20:15

别再手动调参了!用YOLOv5s搞定二维码检测,我踩过的坑都帮你填好了

YOLOv5s二维码检测实战:从参数调优到工业级部署的完整指南 二维码检测看似简单,但在复杂场景下要实现高精度、低延迟的识别并非易事。去年我们团队接手了一个工业质检项目,需要在强反光、低对比度的金属表面实时定位微型二维码。最初尝试传统…

作者头像 李华
网站建设 2026/4/20 11:16:07

如何快速成为阿里云大模型ACP认证专家:完整实战指南

如何快速成为阿里云大模型ACP认证专家:完整实战指南 【免费下载链接】aliyun_acp_learning 项目地址: https://gitcode.com/alibabaclouddocs/aliyun_acp_learning 阿里云大模型ACP(Alibaba Cloud Certified LLM Engineer - Professional&#x…

作者头像 李华
网站建设 2026/4/20 11:14:57

终极Windows Defender移除指南:5步彻底释放你的系统性能

终极Windows Defender移除指南:5步彻底释放你的系统性能 【免费下载链接】windows-defender-remover A tool which is uses to remove Windows Defender in Windows 8.x, Windows 10 (every version) and Windows 11. 项目地址: https://gitcode.com/gh_mirrors/w…

作者头像 李华
网站建设 2026/4/20 11:14:22

嵌入式Linux驱动开发(4)——内核打印详解

嵌入式Linux驱动开发(4)——内核打印详解 仓库已经开源!所有教程,主线内核移植,跑新版本imx-linux/uboot都在这里!欢迎各位大佬观摩!喜欢的话点个⭐! 仓库地址:https://g…

作者头像 李华