00 - Pico 扩展板外设功能例程总览
本章节介绍 Pico-G1 扩展板上各种外设功能的应用示例。这些示例演示了如何使用扩展板上的硬件模块,包括显示设备、传感器、执行器等常用外设。每个示例都提供了完整的硬件接线说明、软件实现代码和详细的部署运行指南,帮助开发者快速掌握外设编程技巧。
1 扩展板概述
Pico-G1 扩展板为开发板提供了丰富的外设接口,包括但不限于:
- 显示设备:OLED 屏幕(I2C)、TFT 屏幕(SPI)
- 传感器:MPU6050 陀螺仪、MQ 气体传感器、SHT20 温湿度传感器、超声波测距模块、SPO2 血氧传感器
- 执行器:蜂鸣器、电机、舵机
- 其他:GPS 模块、ADC 采集
这些外设覆盖了嵌入式系统开发中最常用的功能模块,非常适合学习嵌入式编程和物联网应用开发。
2 应用示例列表
| 序号 | 应用名称 | 功能描述 | 通信接口 | 链接 |
|---|---|---|---|---|
| 1 | OLED 显示 | SSD1306 128×64 OLED 显示文字信息 | I2C | 详细文档 |
| 2 | TFT 显示 | ST7789 240×240 TFT 彩屏显示 | SPI | 详细文档 |
| 3 | MPU6050 陀螺仪 | 六轴姿态传感器数据采集显示 | I2C | 详细文档 |
| 4 | ADC 采集 | 模拟信号采集与显示 | ADC | 详细文档 |
| 5 | 蜂鸣器 | 无源蜂鸣器频率控制 | GPIO | 详细文档 |
| 6 | MQ 气体传感器 | 空气质量监测 | ADC | 详细文档 |
| 7 | GPS 定位 | GPS 数据解析与位置显示 | UART | 详细文档 |
| 8 | SHT20 温湿度 | 环境温湿度监测 | I2C | 详细文档 |
| 9 | 超声波测距 | 距离测量与RGB倒车雷达显示 | GPIO | 详细文档 |
| 10 | SPO2 血氧 | 心率血氧监测 | I2C | 详细文档 |
| 11 | 电机控制 | 直流电机 PWM 调速 | GPIO | 详细文档 |
| 12 | 舵机控制 | 舵机角度精确控制 | GPIO | 详细文档 |
3 硬件平台特性
3.1 主控芯片
- 芯片型号:GK7602V11A(SDK 内部代号
xm7206v11a,架构xmorca) - CPU 架构:ARM Cortex-A7
- 操作系统:Linux(支持
/dev/gpiochip、/dev/i2c-*、/dev/spidev.*等标准设备节点)
3.2 GPIO 特性
- 支持标准 GPIO 字符设备接口
- 支持通过
/dev/mem直接访问 IOCFG 寄存器进行引脚复用配置 - 提供蜂鸣器、电机、舵机等数字量控制
3.3 通信接口
- I2C:支持 I2C0、I2C2、I2C3(对应
/dev/i2c-0、/dev/i2c-2、/dev/i2c-3) - SPI:支持多个 SPI 控制器(对应
/dev/spidev.*.*) - UART:支持多个串口控制器(对应
/dev/ttyS*) - ADC:支持模拟信号采集(12 位精度)
4 开发环境准备
4.1 前置条件
- SDK 环境:按照 开发环境搭建 搭建交叉编译环境
- 硬件连接:确保扩展板正确连接到 Pico-G1 开发板
- 串口连接:通过串口或 SSH 能够访问板端 Linux 系统
4.2 工具链设置
# 设置交叉编译工具链路径
export PATH=$PATH:<SDK>/tools/linux/toolchains/arm-gcc12.2.0-linux-uclibceabi/bin
# 验证工具链
arm-linux-gcc --version4.3 通用编译流程
所有示例都采用统一的 Makefile 结构:
# 进入示例目录
cd <SDK>/source/app/<示例名称>
# 编译
make
# 清理
make clean
# 部署到板端
scp <可执行文件> root@<板端IP>:/usr/bin/
# 运行
ssh root@<板端IP} '/usr/bin/<可执行文件>'5 代码架构设计
5.1 HAL 层封装
每个示例都采用硬件抽象层(HAL)设计模式,将底层硬件操作封装在独立的 HAL 模块中:
gpio_hal.c/h:GPIO 字符设备操作封装i2c_hal.c/h:I2C 设备读写封装spi_hal.c/h:SPI 设备读写封装uart_hal.c/h:UART 串口通信封装
这种设计使得应用代码更加清晰,便于移植到其他平台。
5.2 驱动层实现
针对具体外设芯片,提供独立的驱动模块:
ssd1306.c/h:OLED 屏幕驱动st7789.c/h:TFT 屏幕驱动mpu6050.c/h:MPU6050 传感器驱动sht20.c/h:SHT20 温湿度传感器驱动- 等等...
5.3 应用层代码
每个示例的 main.c 文件演示了完整的应用流程,包括:
- 硬件初始化
- 引脚复用配置(如需要)
- 外设初始化
- 主循环处理
- 资源清理
6 学习路径建议
6.1 初学者路径
建议按照以下顺序学习,由简入繁:
- 蜂鸣器 → 学习 GPIO 基础控制
- OLED 显示 → 学习 I2C 通信和显示驱动
- MPU6050 → 学习 I2C 传感器数据读取
- TFT 显示 → 学习 SPI 高速通信
6.2 进阶路径
掌握基础后,可以学习更复杂的应用:
- GPS 定位 → 学习 UART 串口通信和 NMEA 协议解析
- 超声波测距 → 学习 GPIO 时序控制
- 电机控制 → 学习 PWM 输出和执行器控制
- 舵机控制 → 学习 PWM 精确控制
- 综合应用 → 结合多个传感器和执行器实现完整系统
7 调试技巧
7.1 硬件调试
- 设备节点检查:
ls -l /dev/i2c-*、ls -l /dev/spidev.*.*等 - 引脚复用验证:通过启动日志或
/dev/mem工具检查引脚配置 - I2C 设备探测:使用
i2cdetect或板载工具探测从设备地址
7.2 软件调试
- 日志输出:添加
printf调试信息 - 返回值检查:每个系统调用都检查返回值
- 逐步测试:先测试硬件连接,再测试驱动功能,最后测试应用逻辑
8 常见问题
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 设备节点不存在 | 内核驱动未加载或设备树配置错误 | 检查内核配置和设备树 DTS |
| I2C/SPI 通信失败 | 引脚复用错误或接线问题 | 使用 i2cdetect 等工具验证硬件连接 |
| 程序运行无响应 | 死锁或死循环 | 添加调试信息,检查循环逻辑 |
| 编译错误 | 工具链路径错误或头文件缺失 | 重新设置 PATH,检查 SDK 完整性 |
9 参考资源
9.1 相关文档
9.2 代码位置
所有示例代码位于 SDK 的 source/app/ 目录:
<SDK>/source/app/
├── 01_oled_display/ # OLED 显示
├── 02_TFT_display/ # TFT 显示
├── 03_mpu6050_display/ # MPU6050 陀螺仪
├── 04_adc_display/ # ADC 采集
├── 05_buzzer/ # 蜂鸣器
├── 06_MQ_Sensor/ # MQ 气体传感器
├── 07_gps_display/ # GPS 定位
├── 08_sht20_display/ # SHT20 温湿度
├── 09_sonic_display/ # 超声波测距
├── 10_spo2_sensor/ # SPO2 血氧
├── 11_motor/ # 电机控制
└── 12_servo_ctrl/ # 舵机控制10 下一步
选择一个感兴趣的示例开始学习!推荐从 蜂鸣器 或 OLED 显示 开始,这些示例相对简单,可以帮助您熟悉整个开发流程。
提示:每个示例都提供了完整的 README 文档,包含硬件接线、编译部署和运行参数的详细说明,遇到问题时首先查看对应目录下的 README.md 文件。
