Navigation

    全志在线开发者论坛

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • 在线文档
    • 社区主页

    全志开发板GPIO名命规范(全系列通用)

    MR Series
    3
    7
    3894
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • BedRock
      BedRock LV 6 last edited by

      今天想要使用哪吒的GPIO,查看原理图,其GPIO数字如图:
      501485b7-d2a8-42cb-8065-d5608445cba6-image.png
      使用芯片扩展出来的IO为 PP*。 在原理图上标注出来的 IO,为 GPIO* 这个序号,查看文档,要阿紫用户空间使用GPIO需要先将GPIO从内核空间映射出来(此处为 PinCtl 驱动所做的事情)

      经过一番询问,发现Tina的GPIO的空间中,其引脚是按照字母的GPIO的映射空间每组32个,所以按照这种说法,PC1 在硬件上是GPIO 21 但是在系统中应该是65 所以 应该是

      echo 65 > export
      

      此时就会多出来一个文件夹,gpio65.
      进入该文件夹就可以对该IO口进行操作。
      操作方式明天更新。。。。。照片开了实况上床上看不到。。。。。😂 😂 😂

      1 Reply Last reply Reply Quote Share 0
      • L
        LukeWong0903 LV 2 last edited by

        同想使用d1的gpio,期待老哥的分享👍 👍

        1 Reply Last reply Reply Quote Share 0
        • BedRock
          BedRock LV 6 last edited by

          9cbf8fa0-1174-4876-b9d6-0a189dc11da7-lADPD2BoRbUnnqbNA8DNBQA_1280_960.jpg

          上图就是GPIO 的常用操作

          1 Reply Last reply Reply Quote Share 0
          • BedRock
            BedRock LV 6 last edited by

            25de9826-0347-4056-980b-c499a050dc35-lADPD1zaxxBjznrNAtDNBQA_1280_720.jpg
            点个灯 😂 😂 😂

            1 Reply Last reply Reply Quote Share 2
            • BedRock
              BedRock LV 6 last edited by

              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);
                  }
              
              }
              
              1 Reply Last reply Reply Quote Share 0
              • M
                mzh111 LV 2 last edited by

                @bedrock 在 全志开发板GPIO名命规范(全系列通用) 中说:

                PC1 在硬件上是GPIO 21 但是在系统中应该是65 所以 应该是

                这怎么知道的?

                BedRock 1 Reply Last reply Reply Quote Share 0
                • BedRock
                  BedRock LV 6 @mzh111 last edited by

                  @mzh111 32*GPIO(x-A) + num
                  32 * 2 + 1 = 65

                  1 Reply Last reply Reply Quote Share 1
                  • 1 / 1
                  • First post
                    Last post

                  Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

                  行为准则 | 用户协议 | 隐私权政策