树莓派 PICO 2 简介、MicroPython程序测试
本帖最后由 无垠的广袤 于 2025-4-14 15:01 编辑树莓派 PICO 2 测试
本文介绍了树莓派 PICO 2 的基本参数特点、原理图等,包括开发环境搭建、工程测试等流程。
介绍
树莓派官方于 2024 年 8 月 发布了 RP2350 微控制器,并同步发布了树莓派 Pico 2。这是树莓派的第二代微控制器板,基于 RP2350 设计的新型高性能、安全的微控制器。凭借更高的内核时钟速度、两倍的内存、更强大的 ARM 内核、新的安全功能和升级的接口功能,Pico 2 提供了显著的性能和功能提升,同时保留了与 Pico 系列早期成员的硬件和软件兼容性。
特点RP2350 具有比 RP2040 复杂得多的设计
[*]– 两个 150MHz Arm Cortex-M33 内核,支持浮点和 DSP
[*]– 内置 520KB SRAM
[*]– 围绕 Arm TrustZone for Cortex-M 构建的综合安全架构
[*]– 内置开关模式电源和低静态电流 LDO
[*]– 12 个升级的 PIO 状态机
[*]– 用于高速数据传输的新型 HSTX 外设
[*]– 支持外部 QSPI PSRAM
参数
[*]– 双核 Arm Cortex-M33 或双核 Hazard3 处理器 @ 150MHz
[*]– 520 KB 片上 SRAM
[*]– 软件和硬件与树莓派 Pico 1 代兼容
[*]– 通过 USB 使用大容量存储进行拖放式编程
[*]– 齿形模块允许直接焊接到载板上
[*]– 强大且完整记录的安全功能
[*]– 受保护的 OTP 存储,用于可选的启动解密密钥
[*]– 基于 Arm 或 RISC-V 安全/权限级别的全局总线过滤
[*]– 外设、GPIO 和 DMA 通道可单独分配给安全域
[*]– 故障注入攻击的硬件缓解措施
[*]– 硬件 SHA-256 加速器
[*]– 2 × UART
[*]– 2 × SPI控制器
[*]– 2 × I2C 控制器
[*]– 24 × PWM 通道
[*]– 4 个 ADC 通道
[*]– 1 × USB 1.1 控制器和 PHY,支持主机和设备
[*]– 12 × PIO 状态机
[*]– 开源 C/C++ SDK,MicroPython 支持
[*]– 工作温度 -20°C 至 +85°C
[*]– 支持的输入电压 1.8–5.5V DC
官方称 RP2350 与 RP2040 在软件和硬件上都是向前兼容的(RP2350 兼容 RP2040 的软件和硬件),这可能意味着针对 RP2040 设计的外设模块,仍然可以直接在 RP2350 上使用。
实物
Top viewBottom view
管脚定义
原理图开发环境搭建
介绍了针对树莓派 PICO 2 的 MicroPython 安装流程。
Thonny IDE
电脑需安装最新版 Python 软件;下载并安装 Thonny IDE ;运行 Thonny 软件,右下角选择 MicroPython (Raspberry Pi Pico) 解释器,并选择 Pico 对应的端口号。
[*]下载 MicroPython 的 UF2 文件;
[*]按住 Pico 开发板上的 BOOTSEL 按钮,给 Pico 上电连接电脑,松开 BOOTSEL 按钮;
[*]Pico 会被识别为大容量存储设备;
[*]将下载的 MicroPython 固件 UF2 文件拖入 RPI-RP2 卷内,之后 Pico 自动重启,MicroPython 开始运行
参考:树莓派 Pico 中文站, 微雪
工程测试
介绍了使用 MicroPython 对树莓派 Pico2 进行工程测试的主要流程,包括 Blink 和 PWM 呼吸灯的代码和效果展示。
官方例程:raspberrypi/pico-micropython-examples
闪灯
代码from machine import Pin
from utime import sleep
import utime
led = Pin(25, Pin.OUT)
if __name__ == '__main__':
while True:
# led点亮
led.value(1)
utime.sleep_ms(100)
# led熄灭
led.value(0)
utime.sleep_ms(100)
定时器from machine import Pin, Timer
led = Pin("LED", Pin.OUT)
tim = Timer()
def tick(timer):
global led
led.toggle()
tim.init(freq=2.5, mode=Timer.PERIODIC, callback=tick)
效果呼吸灯
代码import utime
from machine import Pin,PWM
PWM_PulseWidth=0
pwm_LED=PWM(Pin(25))
pwm_LED.freq(500)
while True:
while PWM_PulseWidth<65535:
PWM_PulseWidth=PWM_PulseWidth+50
utime.sleep_ms(1) #延时1ms
pwm_LED.duty_u16(PWM_PulseWidth)
while PWM_PulseWidth>0:
PWM_PulseWidth=PWM_PulseWidth-50
utime.sleep_ms(1)
pwm_LED.duty_u16(PWM_PulseWidth)
参考:raspberry-pi-pico pwm
Codefrom machine import Pin, Timer, PWM
import utime
led = PWM(Pin(25))
# 设置频率值
led.freq(1000)
led_value = 0
# led以5%增长/减少的速度变化亮度
led_space = 5
if __name__ == '__main__':
while True:
led_value += led_space
if led_value >= 100:
led_value = 100
led_space = -5
elif led_value <= 0:
led_value = 0
led_space = 5
# 设置占空比,需在0-65535之间
led.duty_u16(int(led_value * 500))
utime.sleep_ms(100)
参考:树莓派 Pico MicroPython 开发指南
效果
UART
代码from machine import UART, Pin
import time
uart1 = UART(1, baudrate=115200, tx=Pin(8), rx=Pin(9)) #设置串口1和波特率,TX--8,RX--9
uart0 = UART(0, baudrate=115200, tx=Pin(0), rx=Pin(1)) #设置串口0和波特率,TX--0,RX--1
txData = b'hello world\n\r'
uart1.write(txData)
time.sleep(0.1)
rxData = bytes()
while uart0.any() > 0:
rxData += uart0.read(1)
print(rxData.decode('utf-8'))
硬件连接
GPIO8 -> GPIO1
GPIO9 -> GPIO0
效果参考:树莓派官方文档 raspberry-pi-pico-python-sdk-2
ADC
代码import machine
import utime
sensor_temp = machine.ADC(4)
conversion_factor = 3.3 / (65535)
while True:
reading = sensor_temp.read_u16() * conversion_factor
# The temperature sensor measures the Vbe voltage of a biased bipolar diode, connected to the fifth ADC channel
# Typically, Vbe = 0.706V at 27 degrees C, with a slope of -1.721mV (0.001721) per degree.
temperature = 27 - (reading - 0.706)/0.001721
print(temperature)
utime.sleep(2)
效果参考:pico-micropython-examples/adc/temperature.py
总结
本文介绍了树莓派 PICO 2 的基本参数特点、原理图等,包括开发环境搭建、工程测试等流程,为后续深入开发和应用扩展作铺垫,也为相关产品的应用提供了参考。
感谢分享!好内容
页:
[1]