基于linux泰山派Blink

准备工作:
材料:
工具:
泰山派介绍




泰山派是一块基于Rockchip RK3566芯片的Linux开发板,由立创电子推出。这款开发板旨在为开发者和爱好者提供一个软硬结合的平台,用于实现各种创新想法和技术探索。以下是泰山派的主要特点:
- 尺寸小巧:泰山派设计紧凑,尺寸仅为70mm x 45mm,比名片还小,方便携带和使用。
- 丰富接口:开发板配备了多种接口,包括Type-C电源输入、EDP显示接口、WIFI/BT模块、MIPI CSI摄像头接口、TF卡槽、40Pin GPIO扩展口、其他接口和触摸点等,满足多样化的应用需求。
- 硬件参数:
- 主控:采用Rockchip RK3566主控,支持OpenCL 1.1/2.0, Vulkan 1.1标准,主频高达1.8GHz;
- 内存:EMMC 8/16/32/64/128GB;
- 存储:支持USB Type_C输入,5V3A输入;GH1.2J电压子板,5V~18V,2A输出;micro USB电源输入,5V~18V,2A输入;Micro HDMI高清输出,1080P@60Hz,4K@60Hz;
- 显示接口:EDP原生串行接口,2560 X1600@60Hz;
- 网络通信接口:MIPI CSIS串行接口,1080P@60fps;
- 其他通信接口或模块:USB2.0接口,Type-C 5V电源;
- TF卡槽:Debug调试端口;
- 40Pin GPIO扩展口:最高支持40Pin扩展功能,兼容树莓派Raspberry Pi;
- 39Pin高速数字信号扩展口:兼容Raspberry Pi Pico;
- 其他接口或模块:3.5mm音频插孔,麦克风输入,SMA天线接口,SIM卡,eMMC,mini PCIe智;
- 指纹识别:RK3566整机指纹识别;
- 扩展:Recovery恢复模式;
- 三色LED:RGB三色LED指示灯。
- 支持多屏显示及触摸:泰山派支持4K HDMI、1080p EDP、1080p MIPI三种显示方式,同时支持触摸操作。
- AI加速:泰山派内含的NPU支持AI神经网络模型部署,可快速实现人脸识别、动物识别、文字识别等功能,让设备更加智能化。
- 无线连接:泰山派板载WiFi/蓝牙模块,确保稳定性和兼容性,全方位满足各类应用需求。
泰山派开发板不仅具备强大的性能,而且体积小巧,易于携带和使用,非常适合个人开发者和小型团队进行产品原型设计和测试。
GPIO接口

泰山派开发板提供了丰富的GPIO接口和其他高速接口,这些接口允许用户连接各种外部设备和传感器,从而实现更多的功能和应用。下面是泰山派开发板GPIO接口的一些关键特性:
GPIO接口
泰山派开发板兼容经典40PIN扩展接口,提供了丰富的GPIO引脚,包括GPIO、SPI、I2C、UART和PWM等。这些引脚被组织成两列表格,每列表示一个方向的引脚分配。每个引脚都有对应的复用功能,例如3.3V、5V、GND、I2C_SDA_M0、I2C_SCL_M0、SPI_MOSI_M1、SPI_MISO_M1、SPI_CLK_M1等等。这些引脚可以用来连接各种传感器、执行器或其他外围设备,以实现特定的功能。
高速接口
除了GPIO接口,泰山派还提供了众多高速接口,包括100/1000M以太网、USB2.0/3.0、MINI PCIE、SATA、GPS、耳机和GPIO接口等。这些接口可以帮助用户连接高速设备,如网络适配器、硬盘驱动器、GPS接收器等。
应用实例
为了帮助用户更好地理解这些接口的用途,图片中展示了几个应用实例,包括:
- 使用GPIO接口连接的按钮、传感器和显示器等设备;
- 使用高速接口连接的以太网、USB、SATA和耳机等设备。
这些例子说明了泰山派开发板的多功能性和灵活性,使用户可以根据自己的需求自由定制和扩展电路板的功能。
ADB控制

通过adb执行命令来控制这三颗灯,先看一下三个灯的节点其中rgb-led-b对应蓝灯,rgb-led-g对应绿灯,rgb-led-r对应红灯
进入rgb-led-x可查看相关属性,这里以rgb-led-b为例其他相同
brightness
: 这个属性用于控制 LED 的亮度。可以通过读写该文件来设置 LED 的亮度水平。device
: 这个属性表示与 LED 相关的设备路径。invert
:这个属性表示 LED 的极性翻转。当该值为 0 时,LED 的行为符合正常的预期。当该值为 1 时,LED 的行为与预期相反。max_brightness
: 这个属性表示 LED 可接受的最大亮度值。亮度值在 0 到max_brightness
之间。power
:这个属性表示 LED 的电源状态。它可以是 “on” 表示开启,或者 “off” 表示关闭。subsystem
:这个属性表示该 LED 设备所属的子系统。trigger
:这个属性表示 LED 的触发器。它定义了 LED 的行为模式,如闪烁、呼吸灯等。你可以通过写入不同的触发器名称来改变 LED 的行为。我这里列出一些常用触发方式:
- none
:禁用触发器,LED 保持灭。
- default-on
:默认开启触发器,LED 在开机时保持常亮。
- heartbeat
:心跳触发器,LED 呼吸灯效果,类似于心跳的闪烁。
- timer
:计时器触发器,LED 在特定时间间隔内闪烁。
uevent
:这个属性包含有关 LED 设备的事件信息- 当然你也可以通过cat trigger来查看他支持哪些模式
none
: 禁用触发器,LED 保持灭。rfkill-any
: 在任何 RFKill 状态变化时触发,例如 Wi-Fi 或蓝牙开关状态改变。rfkill-none
: 在 RFKill 禁用状态下触发。test_ac-online
: 在电源适配器插入时触发。test_battery-charging-or-full
: 在电池充电或达到充满状态时触发。test_battery-charging
: 在电池充电时触发。test_battery-full
: 在电池达到充满状态时触发。test_battery-charging-blink-full-solid
: 在电池充电时闪烁直到充满,然后保持常亮。test_usb-online
: 在 USB 设备插入时触发。mmc0
,mmc1
,mmc2
:在对应的 MMC 设备操作时触发。timer
:根据设定的时间间隔触发。[heartbeat]
:心跳触发器,LED 呼吸灯效果。backlight
: 背光触发器,通常用于控制显示屏的背光 LED。default-on
: 默认开启触发器,在开机时保持常亮。rfkill0
,rfkill1
,rfkill2
: 在对应的 RFKill 设备状态变化时触发。- 关闭所有灯
- 所有灯常亮
- 心跳
- 定时闪烁
自己可以动手试试,比如rfkill-an
会在你关闭蓝牙时候被点亮等等。
SSH控制GPIO

以下是使用文档中使用Shell控制GPIO的输出
- 使用root权限
- 将引脚号 15 导出为 GPIO 引脚,使其可以被访问和控制。
- 将引脚号 15 的方向设置为输出模式,即设置为输出引脚。
- 将引脚号 15 的值设置为 1,即将引脚设置为高电平。
- 将引脚号 15 的值设置为 0,即将引脚置设置为低电平。
- 将引脚号 15 解除导出,即取消对引脚号 15 的 GPIO 控制权。
其中引脚ID是根据控制器(GPIO0),端口(B),索引序号(7)确定的
使用ls /sys/class/gpio可以看见有gpiochip0 gpiochip32 gpiochip64 gpiochip96 gpiochip128分别对应GPIO0-GPIO4
引脚ID的计算公式为:
控制器号32 + 端口号8 + 索引序号*1
所以GPIO0_B7为:32 x 0 + 1 x 8 + 7 x 1 = 15
C语言控制GPIO

编译配置

我是使用ubuntu虚拟机编译后使用scp上传到泰山派执行
ubuntu中下载交叉编译工具可以使用sudo apt install gcc-arm-linux-gnueabihf
安装完成后使用
命令交叉编译
注意这里有的要加上-static
我刚开始编译时没有使用-static,结果上传到泰山派上执行的时候报错No such file or directory
上网查说是由于交叉编译器的差异,不同的交叉编译器链接的动态库内容相同但是路径不同,所以会提示找不到文件
所以使用静态链接编译
在ubuntu上使用gcc来编译后上传到泰山派运行会提示无法执行二进制文件,所以需要使用交叉编译器
交叉编译器

直接从 Ubuntu apt 获得
还有一个 aarch64 版本:











