本章节介绍 Pico-G1 扩展板上各种外设功能的应用示例。这些示例演示了如何使用扩展板上的硬件模块,包括显示设备、传感器、执行器等常用外设。每个示例都提供了完整的硬件接线说明、软件实现代码和详细的部署运行指南,帮助开发者快速掌握外设编程技巧。
Pico-G1 扩展板为开发板提供了丰富的外设接口,包括但不限于:
这些外设覆盖了嵌入式系统开发中最常用的功能模块,非常适合学习嵌入式编程和物联网应用开发。
| 序号 | 应用名称 | 功能描述 | 通信接口 | 链接 |
|---|---|---|---|---|
| 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 | 详细文档 |
xm7206v11a,架构 xmorca)/dev/gpiochip、/dev/i2c-*、/dev/spidev.* 等标准设备节点)/dev/mem 直接访问 IOCFG 寄存器进行引脚复用配置/dev/i2c-0、/dev/i2c-2、/dev/i2c-3)/dev/spidev.*.*)/dev/ttyS*)# 设置交叉编译工具链路径
export PATH=$PATH:<SDK>/tools/linux/toolchains/arm-gcc12.2.0-linux-uclibceabi/bin
# 验证工具链
arm-linux-gcc --version
所有示例都采用统一的 Makefile 结构:
# 进入示例目录
cd <SDK>/source/app/<示例名称>
# 编译
make
# 清理
make clean
# 部署到板端
scp <可执行文件> root@<板端IP>:/usr/bin/
# 运行
ssh root@<板端IP} '/usr/bin/<可执行文件>'
每个示例都采用硬件抽象层(HAL)设计模式,将底层硬件操作封装在独立的 HAL 模块中:
gpio_hal.c/h:GPIO 字符设备操作封装i2c_hal.c/h:I2C 设备读写封装spi_hal.c/h:SPI 设备读写封装uart_hal.c/h:UART 串口通信封装这种设计使得应用代码更加清晰,便于移植到其他平台。
针对具体外设芯片,提供独立的驱动模块:
ssd1306.c/h:OLED 屏幕驱动st7789.c/h:TFT 屏幕驱动mpu6050.c/h:MPU6050 传感器驱动sht20.c/h:SHT20 温湿度传感器驱动每个示例的 main.c 文件演示了完整的应用流程,包括:
建议按照以下顺序学习,由简入繁:
掌握基础后,可以学习更复杂的应用:
ls -l /dev/i2c-*、ls -l /dev/spidev.*.* 等/dev/mem 工具检查引脚配置i2cdetect 或板载工具探测从设备地址printf 调试信息| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 设备节点不存在 | 内核驱动未加载或设备树配置错误 | 检查内核配置和设备树 DTS |
| I2C/SPI 通信失败 | 引脚复用错误或接线问题 | 使用 i2cdetect 等工具验证硬件连接 |
| 程序运行无响应 | 死锁或死循环 | 添加调试信息,检查循环逻辑 |
| 编译错误 | 工具链路径错误或头文件缺失 | 重新设置 PATH,检查 SDK 完整性 |
所有示例代码位于 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/ # 舵机控制
选择一个感兴趣的示例开始学习!推荐从 蜂鸣器 或 OLED 显示 开始,这些示例相对简单,可以帮助您熟悉整个开发流程。
提示:每个示例都提供了完整的 README 文档,包含硬件接线、编译部署和运行参数的详细说明,遇到问题时首先查看对应目录下的 README.md 文件。