BBB学习(九):BBB引脚功能互查表的用法
一、前言
前节介绍了BBB普通IO口的操作,同时也完成了程序对IO口输入状态的检测。实际上,BBB众多端口都是可以配置的,比如有的端口可以是普通IO口,同时它也可以是I2C接口。因此我们需要知道当前IO口是什么配置,同时如果需要配置我们要怎么配制才行,这就要用到BBB引脚功能互查表了。例如:
https://elinux.org/Beagleboard:Cape_Expansion_Headers
BBB扩展端口中可以作为数字IO口的有以下端口:
而如果用到EMMC或HDMI则是以下端口:
二、查看BBB相关端口配置
BBB端口状态:/sys/kernel/debug/pinctrl/44e10800.pinmux/pins
可以将上述路径设置成环境变量$PINS
,方法是:在/etc/profile
文件最后添加一行 export PINS=/sys/kernel/debug/pinctrl/44e10800.pinmux/pins
。重启或执行命令source /etc/profile
生效,可以通过echo $PINS cat $PINS
查看引脚状态
三、对照BBB端口功能表
https://github.com/derekmolloy/boneDeviceTree/tree/master/docs
该链接是BBB端口功能的对照表路径。如下图红框内是主要的配置说明:
引脚的配置用一个字节(即8个bit来表示),每一个位控制一个功能,如下图所示:
在PINS中可以看到相关引脚的配置,拿第一个为例:
pin0的地址为:0x44e10800,配置值为0x31,转化为二进制为:0011 0001,填入表格中对照如下:
Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
---|---|---|---|---|---|---|---|
slew Control | Receive Active | Pullup/pulldown | enable Pullup/down | Mux mode | mux mode | mux mode | |
0 | 0 | 0 | 1(pull up) | 1(enable) | 0 | 0 | 1 |
其中0x31中的3开启了引脚上拉功能,mux mode为001,可以知道该引脚的功能mode为1,此时查询引脚定义,根据其引脚地址,可引脚功能表中找到0x44e10800
由此可见,该引脚为P8_25,其引脚工作模式mode为1:
查表可知,mode1为:mmc1_dat0, 因此可判断该引脚默认是用来与eMMC通讯的。
四、总结
本节介绍了BBB引脚功能表用法,可以通过BBB相关pin相关文件判断当前引脚处于什么样的功能。对后面学习device tree时配置引脚状态也有一定的帮助。