全志开发板GPIO名命规范(全系列通用)
-
今天想要使用哪吒的GPIO,查看原理图,其GPIO数字如图:
使用芯片扩展出来的IO为 PP*。 在原理图上标注出来的 IO,为 GPIO* 这个序号,查看文档,要阿紫用户空间使用GPIO需要先将GPIO从内核空间映射出来(此处为 PinCtl 驱动所做的事情)经过一番询问,发现Tina的GPIO的空间中,其引脚是按照字母的GPIO的映射空间每组32个,所以按照这种说法,PC1 在硬件上是GPIO 21 但是在系统中应该是65 所以 应该是
echo 65 > export
此时就会多出来一个文件夹,gpio65.
进入该文件夹就可以对该IO口进行操作。
操作方式明天更新。。。。。照片开了实况上床上看不到。。。。。 -
同想使用d1的gpio,期待老哥的分享
-
上图就是GPIO 的常用操作
-
点个灯 -
emmmm.... 还没有关注D1本身的IO是否可以用目前先,用扩展IO做了一个测试。
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int main(int argc ,char *argv[]){ char value; int export_fd, direction_fd, gpiovalue_fd; if(access("/sys/class/gpio/gpio2023/value",F_OK)) { printf("GPIO value not find creat it \n "); export_fd = open("/sys/class/gpio/export", O_WRONLY); if(-1 == export_fd) { printf("[%s]:[%d] open gpio export file error\r\n", __FUNCTION__, __LINE__); exit(1); } if(-1 == write(export_fd, "2022", 4)) { printf("write file operation error\r\n"); exit(1); } close(export_fd); //sleep(2000); direction_fd = open("/sys/class/gpio/gpio2022/direction", O_WRONLY); if(-1 == direction_fd) { printf("[%s]:[%d] open gpio direction file error\r\n", __FUNCTION__, __LINE__); exit(1); } if(-1 == write(direction_fd, "out", sizeof("out"))) { printf("[%s]:[%d] write operation direction error\r\n", __FUNCTION__, __LINE__); close(direction_fd); exit(1); } close(direction_fd); printf("[%s]:[%d] debug information print\r\n", __FUNCTION__, __LINE__); } else { gpiovalue_fd = open("/sys/class/gpio/gpio2022/value", O_RDWR); //RDWR if(-1 == gpiovalue_fd) { printf("[%s]:[%d]: open value file error\r\n", __FUNCTION__, __LINE__); exit(1); } printf("file open success! \n"); while(1) { if(-1 == write(gpiovalue_fd, "1", 1)) { printf("[%s]:[%d] write operation direction error\r\n", __FUNCTION__, __LINE__); close(gpiovalue_fd); exit(1); } usleep(500000); //write(gpiovalue_fd, "1", sizeof("1")); //write(gpiovalue_fd, "0", sizeof("0")); if(-1 == write(gpiovalue_fd, "0", 1)) { printf("[%s]:[%d] write operation direction error\r\n", __FUNCTION__, __LINE__); close(gpiovalue_fd); exit(1); } usleep(500000); // system("echo 1 > /sys/class/gpio/gpio2022/value"); // usleep(500000); // system("echo 0 > /sys/class/gpio/gpio2022/value"); // usleep(500000); } close(gpiovalue_fd); } }
-
-
@mzh111 32*GPIO(x-A) + num
32 * 2 + 1 = 65
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号