本帖最后由 无垠的广袤 于 2025-4-14 15:01 编辑
树莓派 PICO 2 测试
本文介绍了树莓派 PICO 2 的基本参数特点、原理图等,包括开发环境搭建、工程测试等流程。
介绍
树莓派官方于 2024 年 8 月 发布了 RP2350 微控制器,并同步发布了树莓派 Pico 2。这是树莓派的第二代微控制器板,基于 RP2350 设计的新型高性能、安全的微控制器。 凭借更高的内核时钟速度、两倍的内存、更强大的 ARM 内核、新的安全功能和升级的接口功能,Pico 2 提供了显著的性能和功能提升,同时保留了与 Pico 系列早期成员的硬件和软件兼容性。
特点RP2350 具有比 RP2040 复杂得多的设计 参数
– 双核 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 view Bottom view
管脚定义
原理图开发环境搭建
介绍了针对树莓派 PICO 2 的 MicroPython 安装流程。
Thonny IDE
运行 Thonny 软件,右下角选择 MicroPython (Raspberry Pi Pico) 解释器,并选择 Pico 对应的端口号。
工程测试
介绍了使用 MicroPython 对树莓派 Pico2 进行工程测试的主要流程,包括 Blink 和 PWM 呼吸灯的代码和效果展示。
闪灯
代码
- 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)
复制代码
Code- from 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)
复制代码
效果
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 2 的基本参数特点、原理图等,包括开发环境搭建、工程测试等流程,为后续深入开发和应用扩展作铺垫,也为相关产品的应用提供了参考。
|