【BIGTREETECH CB1】GPIO测试遇到问题
[复制链接]
BIGTREETECH CB1开发板有和树莓派一样排列的GPIO接口。GPIO接口的电压为3.3V。
这里我将测试使用sysfs方式控制GPIO
sysfs控制GPIO
sysfs控制GPIO的方式主要基于内核提供的GPIO控制接口文件。也就是通过读写/sys/class/gpio目录下的文件的方式来控制对应的gpio接口。
这是我自己整理的BIGTREETECH CB1开发板40PIN引脚图。
gpio目录和文件功能
1,控制GPIO的目录位于/sys/class/gpio
2,/sys/class/gpio/export文件用于通知系统需要导出控制的GPIO引脚编号。
3,/sys/class/gpio/unexport 用于通知系统取消导出。
4,/sys/class/gpio/gpiochipX目录保存系统中GPIO寄存器的信息。
5,向/sys/class/gpio/export写入此编号生成对应目录,如果没有出现相应的目录,说明此引脚不可导出。
6,direction文件定义输入输入方向in或out。
7,value文件是端口的数值,为0或1,gpio输出对应的0V或3.3V电压。
操作顺序:
1.导出 /sys/class/gpio# echo 44 > export
2.设置方向 /sys/class/gpio/gpio44# echo out > direction
3.查看方向 /sys/class/gpio/gpio44# cat direction
4.设置输出 /sys/class/gpio/gpio44# echo 1 > value
5.查看输出值 /sys/class/gpio/gpio44# cat value
6.取消导出 /sys/class/gpio# echo 44 > unexport
将gpio文件夹下所有的文件都设定为可读写
sudo chmod -R 777 /sys/class/gpio
导出端口
sudo chmod -R 777 /sys/class/gpio
cd /sys/class/gpio
echo 71 > export
echo 78 > export
echo 76 > export
echo 74 > export
echo 231 > export
echo 232 > export
echo 230 > export
echo 198 > export
echo 70 > export
echo 79 > export
echo 77 > export
echo 75 > export
echo 73 > export
echo 200 > export
echo 199 > export
echo 201 > export
echo 72 > export
设置输出方向为out,又得用chmod设置权限
sudo chmod -R 777 /sys/class/gpio/gpio71
sudo chmod -R 777 /sys/class/gpio/gpio78
sudo chmod -R 777 /sys/class/gpio/gpio76
sudo chmod -R 777 /sys/class/gpio/gpio74
sudo chmod -R 777 /sys/class/gpio/gpio231
sudo chmod -R 777 /sys/class/gpio/gpio232
sudo chmod -R 777 /sys/class/gpio/gpio230
sudo chmod -R 777 /sys/class/gpio/gpio198
sudo chmod -R 777 /sys/class/gpio/gpio70
sudo chmod -R 777 /sys/class/gpio/gpio79
sudo chmod -R 777 /sys/class/gpio/gpio77
sudo chmod -R 777 /sys/class/gpio/gpio75
sudo chmod -R 777 /sys/class/gpio/gpio73
sudo chmod -R 777 /sys/class/gpio/gpio200
sudo chmod -R 777 /sys/class/gpio/gpio199
sudo chmod -R 777 /sys/class/gpio/gpio201
sudo chmod -R 777 /sys/class/gpio/gpio72
cd /sys/class/gpio
echo out > ./gpio71/direction
echo out > ./gpio78/direction
echo out > ./gpio76/direction
echo out > ./gpio74/direction
echo out > ./gpio231/direction
echo out > ./gpio232/direction
echo out > ./gpio230/direction
echo out > ./gpio198/direction
echo out > ./gpio70/direction
echo out > ./gpio79/direction
echo out > ./gpio77/direction
echo out > ./gpio75/direction
echo out > ./gpio73/direction
echo out > ./gpio200/direction
echo out > ./gpio199/direction
echo out > ./gpio201/direction
echo out > ./gpio72/direction
设置gpio输出3.3V电压
cd /sys/class/gpio
echo 1 > ./gpio71/value
echo 1 > ./gpio78/value
echo 1 > ./gpio76/value
echo 1 > ./gpio74/value
echo 1 > ./gpio231/value
echo 1 > ./gpio232/value
echo 1 > ./gpio230/value
echo 1 > ./gpio198/value
echo 1 > ./gpio70/value
echo 1 > ./gpio79/value
echo 1 > ./gpio77/value
echo 1 > ./gpio75/value
echo 1 > ./gpio73/value
echo 1 > ./gpio200/value
echo 1 > ./gpio199/value
echo 1 > ./gpio201/value
echo 1 > ./gpio72/value
然后用万用表测量各个管脚电压,大部分为3.3V。
设置gpio输出0V
cd /sys/class/gpio
echo 0 > ./gpio71/value
echo 0 > ./gpio78/value
echo 0 > ./gpio76/value
echo 0 > ./gpio74/value
echo 0 > ./gpio231/value
echo 0 > ./gpio232/value
echo 0 > ./gpio230/value
echo 0 > ./gpio198/value
echo 0 > ./gpio70/value
echo 0 > ./gpio79/value
echo 0 > ./gpio77/value
echo 0 > ./gpio75/value
echo 0 > ./gpio73/value
echo 0 > ./gpio200/value
echo 0 > ./gpio199/value
echo 0 > ./gpio201/value
echo 0 > ./gpio72/value
然后用万用表测量各个管脚电压,大部分为0V。
取消导出
cd /sys/class/gpio
echo 71 > unexport
echo 78 > unexport
echo 76 > unexport
echo 74 > unexport
echo 231 > unexport
echo 232 > unexport
echo 230 > unexport
echo 198 > unexport
echo 70 > unexport
echo 79 > unexport
echo 77 > unexport
echo 75 > unexport
echo 73 > unexport
echo 200 > unexport
echo 199 > unexport
echo 201 > unexport
echo 72 > unexport
发现问题:
PIN38(gpio234)无法export导出
查看gpio能导出的范围
导出所有能导出的gpio进行测试,也没测试出来
发现问题:PIN38(gpio234)无法export导出,经过2次万用表记录各个管脚电压,发现有13个引脚正常输出,但是PIN28(gpio199),PIN31(gpio198),PIN32(gpio201)一直是0.5V左右PIN26(gpio200)一直是3.3V,这4个IO可以export导出,但不能输出正常操作的电压。经过一系列的测试,我也没测试出来是硬件的的问题还是软件的问题,请问其他的测评网友知道怎么回事吗?
|