RK3399驱动开发 |
您所在的位置:网站首页 › sd6109引脚功能 › RK3399驱动开发 |
一、RK3399的GPIO RK3399有5组GPIO,GPIO0-GPIO4,每一组GPIO成为一个GPIO bank,每组GPIO包含32个引脚,需要注意,不是所有 bank 都有全部编号,例如 GPIO4 就只有 C0-C7,D0-D2,所以一共有122个可用GPIO Friendly的开发板上板载一个状态LED,如下: 该LED接在GPIO0_B5上,想要使用这个GPIO,需要手动计算GPIO引脚编号。 GPIO 计算公式为: 其中pin指最终得出的GPIO引脚编号,比如GPIO0_B5:bank为0、group为字母B,x为5。 字母分别代表的值如下:A=0、B=1、C=2、D=3。 这样最终计算出: 先查看一下默认引脚方向: cat /sys/class/gpio/gpio13/direction默认是输入,设置为输出: echo out > /sys/ChAss/g`io/g`io!3/direction 3. 设置引脚输出电平输出高电平,点亮LED: echo 1 > /sys/class/gpio/gpio13/value输出低电平,熄灭LED: echo 0 > /sys/class/gpio/gpio13/value 四、设备树中使用GPIO 1. 设置引脚功能复用与电气属性查看Rockchip关于pinctrl子系统的绑定文档:Documentation/devicetree/bindings/pinctrl/rockchip,pinctrl.txt 。 其中关于引脚功能复用配置需要的属性有为rockchip,pins,属性值是三个整数组成的数组,格式如下: rockchip,pins = PIN_BANK:引脚所在bank号PIN_BANK_IDX:所在bank内的引脚号MUX:功能复用设置,0表示普通gpio,1-N表示特殊的功能复用phandle:引脚配置,在pinctrl-bindings.txt文件中描述下面来看一个实例,在设备树中找到 pinctrl 子节点,其中有关于led节点的描述: PIN_BANK是0,PIN_BANK_IDX是13,表示GPIO0这个bank内的13个引脚,也就是PB5,复用设置为RK_FUNC_GPIO。 除了直接使用数字之外,也可以用宏定义,在头文件中定义。 比如 PIN_BANK 号的可用值如下: #define RK_GPIO0 0#define RK_GPIO1 1#define RK_GPIO2 2#define RK_GPIO3 3#define RK_GPIO4 4#define RK_GPIO6 6PIN_BANK_IDX的可用值如下: #define RK_PA0 0#define RK_PA1 1#define RK_PA2 2#define RK_PA3 3#define RK_PA4 4#define RK_PA5 5#define RK_PA6 6#define RK_PA7 7//...后续省略 MUX的可用值如下: #define RK_FUNC_GPIO 0#define RK_FUNC_1 1#define RK_FUNC_2 2#define RK_FUNC_3 3#define RK_FUNC_4 4#define RK_FUNC_5 5#define RK_FUNC_6 6#define RK_FUNC_7 7 2. 使用gpio添加LED节点,使用Linux内核自带的LED驱动,将该LED作为系统心跳指示灯: 重新编译设备树,使用新的设备树启动,可用看到LED闪烁。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |