2067|6

3233

帖子

0

TA的资源

五彩晶圆(中级)

楼主
 

【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导出,但不能输出正常操作的电压。经过一系列的测试,我也没测试出来是硬件的的问题还是软件的问题,请问其他的测评网友知道怎么回事吗?

最新回复

目前已找到问题,将 R31 这颗电阻移除了就好了。 R31会使 PG6/7/8/9 这几个GPIO被强制设置成JTAG功能。后续产品出货这个电阻统一会移除。[attach]678280[/attach]   详情 回复 发表于 2023-2-23 10:51
点赞 关注
 
 

回复
举报

2

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

PIN38(gpio234)无法export导出,可以按照以下步骤排查

sudo apt-get install gpiod # 安装gpiod
gpioinfo # 查询gpio状态

gpio234 系统内核中作为红外输入 IR_RX 占用了。

 

4个IO的我们也复现同样的问题,正在测试确认是软件还是硬件问题

 

 

点评

我也安装了gpiod,也发现你说的问题了。我用万用表测量其他IO阻抗,不像是硬件问题,像是软件的问题。  详情 回复 发表于 2023-1-11 18:32
 
 
 

回复

3233

帖子

0

TA的资源

五彩晶圆(中级)

板凳
 
BIGTREETECH 发表于 2023-1-11 16:43 PIN38(gpio234)无法export导出,可以按照以下步骤排查 sudo apt-get install gpiod # 安装gpiod gpioin ...

我也安装了gpiod,也发现你说的问题了。我用万用表测量其他IO阻抗,不像是硬件问题,像是软件的问题。

 
 
 

回复

3233

帖子

0

TA的资源

五彩晶圆(中级)

4
 

gpio234 被红外占用了。我用devmem直接操作H616的寄存器是可以控制gpio234输出值的,确定硬件没有毛病,

但是剩下的那4个IO,我用devmem直接操作寄存器也无法控制输出值,暂时没测出来怎么回事。

 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

5
 

目前已找到问题,将 R31 这颗电阻移除了就好了。 R31会使 PG6/7/8/9 这几个GPIO被强制设置成JTAG功能。后续产品出货这个电阻统一会移除。

点评

谢谢回复,我看一下电路和datasheet,学习了。  详情 回复 发表于 2023-2-23 11:04
 
 
 

回复

3233

帖子

0

TA的资源

五彩晶圆(中级)

6
 
BIGTREETECH 发表于 2023-2-23 10:51 目前已找到问题,将 R31 这颗电阻移除了就好了。 R31会使 PG6/7/8/9 这几个GPIO被强制设置成JTAG功能。后续 ...

谢谢回复,我看一下电路和datasheet,学习了。

 
 
 

回复

3233

帖子

0

TA的资源

五彩晶圆(中级)

7
 

R31 这颗电阻连接的是H616的JTAG_SEL管脚,如果连接会强制将这几个IO口为JTAG功能,就不能使用GPIO功能了 。终于明白了。结贴。

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表