丨budboool · 2023年12月27日 · 广东

【飞凌 OK113i-C 全志T113-i开发板】GPIO的控制

我的第一个控制:LED点亮

前面搭建完了开发环境了,下面可以尝试别的简单方法,跑一下板载的外部资源,控制一个LED亮灭(通常称电灯实验)是一个比较常见的板载资源测试功能之一。下面来尝试一下控制板子上的下面这颗用户的LED灯。
从图中可以看出,D1这颗LED灯接在了PG11引脚上,通过R1电阻接到VCC电源进行限流,并使用CQA34N00这颗N沟道MOS管进行控制,而控制引脚PG11接了2K的电阻进行上拉。给出厂的板子上电,这颗LED保持常亮。
aebc1ac9-182a-4aa0-846e-e33a81af21c5-image.png

下面通过文件操作的方法控制一下这个LED灯
首先进行一下引脚编号的计算。
根据 #define PIN\_NO(port, line) (((port) - 'A') * 0x20 + (line))进行计算
其中 port 为 gpio 端口,line 为该 gpio 对应引脚,((port)-'A')代表 ASCII 码相减。
如这颗LED的引脚 PG11对应的 pin 引脚编号为IN\_NO('G',11)=(0x47-0x41)*0x20+11=(71-65)*32+11=107。
也就是说,这颗LED的引脚实际使用编号就为203.
然后登录一下板子的系统,通过如下命令查看文件GPIO,同时也进入到GPIO文件夹中,方便后续测试操作。
a82a4692-7353-4ed7-a2d2-1bd306179218-image.png

可以看到已经有了export和unexport

接下去使用
Echo 203 > /sys/class/gpio/export
进行引脚导出命令,就能看到多出了gpio203文件夹
f7175940-307e-4955-baf3-40e2357ff944-image.png

进入gpio203文件夹,看看内含文件
82776055-f2f4-4841-b5d8-5a1460046a42-image.png

其中,direction为gpio的输入输出方向配置,value则为输入输出的值了。可以配置前者为输出,后者为1和0分别控制led的亮和灭了。
使用
echo "out" > /sys/class/gpio/gpio203/direction
将引脚的方向设置为输出,并使用
cat /sys/class/gpio/gpio203/direction
查看上面的设置输出是否成功正确。
4235f70c-8d4a-4d6a-b11c-33cad2df756d-image.png

这时候板载的这颗LED状态就熄灭了,因为默认的value值从哪读取来看应该为0
4ea4948f-4c52-434f-8e45-1422d2424041-image.png

接下去就可以通过写value文件的内容为1和0,分别控制LED灯的亮和灭了。
a8ca9411-b2e3-42b7-a4d8-d95c46c15ac3-image.png

设备树那边也定义了一个T113-i核心板上的板载LED,这颗LED默认也就是作为Linux核心板的“心跳”功能使用的。

在sys/class下面
e712802a-eaff-4281-8e7a-2918412cd2a0-image.png

可以发现有一个heartbeat的文件夹,并可以发现其里面的如下的文件
438bef04-4d7f-429a-9574-4ac965dc6892-image.png

其中控制brightness文件内容即可控制这颗LED的亮灭状态了,也就是写1和0分别就可以控制其亮和灭的状态。
86e3f6a3-2463-47de-84b5-edee30db6ac2-image.png

852b2dd5-a61a-4489-9e0d-a39be7d73add-image.png

还可以从板子设备树的具体文件夹具体文件中的leds中找到对应的引脚定义,可以暗道使用引脚就是PG16,GPIO\_ACTIVE\_HIGH指定了其点亮的电平为高电平。
81e5d5a5-4085-40a1-8a0b-ccababe1d960-image.png

以上就是通过设备树中的gpio和leds来控制核心板和底板上的led的亮灭状态功能了。

6a4a6314-7925-4a64-8448-d15f8ab0d7c5-image.png

e1fc5155-31f8-4392-a6ff-e269fef62845-image.png

7f8f7cba-a22a-4995-9fa3-824b72177b15-image.png

确认可执行文件的权限并更新
4b31a9a1-1024-4734-a472-87f57c087198-image.png

然后通过sftp,传给开发板的home/my\_test路径下,并通过ls命令确认

f58d52ad-2c2d-40ed-b248-6bfd6c6cc30c-image.png

执行,输入对应的引脚编号就可以看到翻转三次了
773f3203-ae0c-461a-bd6b-4fc186fef7e9-image.png

其主要实现代码为
输入引脚编号
0913069c-c1f5-4a45-9046-afac2b498d80-image.png

Export引脚到文件
01c1683e-9b83-4f89-aef8-5102e57ce706-image.png

设置方向为out
c1aefabf-5ab8-4797-9043-a5b3d7388780-image.png

翻转三次
d4766b6f-788b-4adb-ace4-2dce5c1b6cde-image.png

最后还需要unexport
c964c36e-a517-425f-961f-64018007a500-image.png

推荐阅读
关注数
17
文章数
97
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息