外设适配 "CAM-CRV1126S2U/CAM-C1109S2U" 保留了丰富的拓展接口,其中包括"以太网"、 "USB"、"串口"、"GPIO"、"I2C"、"I2S"、"SPI"、"SDIO"等等, 基本上满足客 户的所有拓展需求。本章主要讲述几个闸机可能用到的简单外设。 继电器 继电器本质是操作" GPIO" ,这里介绍如何在系统中操作" GPIO"。 查看接口定义选中需要操控的 GPIO ,如 GPIO3_D6 计算 GPIO 编号 # GPIO3_D6 3 x 32 + 3 x 8 + 6 = 126 # 公式 GPIO(X)_(Y)(Z) # 其中变量 Y :A = 0,B = 1,C = 2,D = 3 X x 32 + Y x 8 + Z 注册 GPIO echo 126 > /sys/class/gpio/export # 需要确认该 GPIO 没有被占用没有被初始化其他功能 # 如 GPIO3_D6 同时也是 I2S_m0 口,需要在内核中关闭 I2S vim sdk/kernel/arch/arm/boot/dts/rv1109-firefly-ai-cam.dts (rv1126-firefly-ai-cam.dts) # 在末尾添加以下代码 &i2s0 { status = "disabled"; }; # 编译并且升级内核 设置 GPIO 为输出模式 echo out > /sys/class/gpio/gpio126/direction 设置 GPIO 输出高电平/低电平 echo 1 > /sys/class/gpio/gpio126/value # 高 echo 0 > /sys/class/gpio/gpio126/value # 低 LED 灯 选择GPIO口,修改内核设备树,添加自定义LED灯设备节点。 vim sdk/kernel/arch/arm/boot/dts/rv1109-firefly-ai-cam.dts (rv1126-firefly-ai-cam.dts) # 参考如下配置添加 LED 节点。 leds { compatible = "gpio-leds"; user_led: user { label = "firefly:yellow:user"; linux,default-trigger = "ir-user-click"; default-state = "off"; gpios = <&gpio3 RK_PD6 GPIO_ACTIVE_HIGH>; pinctrl-names = "default"; pinctrl-0 = <&led_user>; }; }; # pinctrl 需要添加 GPIO 复用控制 led_user: led-user { rockchip,pins = <3 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>; }; # 修改完成后编译升级内核 控制 LED echo 1 > /sys/class/leds/firefly:yellow:user/brightness # 亮 echo 0 > /sys/class/leds/firefly:yellow:user/brightness # 灭