查看: 452|回复: 4

[分享] 【FRDM-i.MX93评测】+ 使用libgpiod驱动LED灯

[复制链接]
  • TA的每日心情
    开心
    11 小时前
  • 签到天数: 1510 天

    连续签到: 12 天

    [LV.Master]伴坛终老

    152

    主题

    3191

    帖子

    31

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    8758
    最后登录
    2025-8-31
    发表于 2025-6-25 22:01:36 | 显示全部楼层 |阅读模式
    本帖最后由 TLLED 于 2025-6-25 22:00 编辑

    一、下载库
    下载地址:https://github.com/brgl/libgpiod/tree/v1.6.x
    e004.png

    二、安装库

    2.1、安装编译需要的软件包

    1. hui@hui-virtual-machine:~$ sudo apt-get update
    2. hui@hui-virtual-machine:~$ sudo apt-get upgrade

    3. hui@hui-virtual-machine:~$ sudo apt install pkg-config
    4. hui@hui-virtual-machine:~$ sudo apt-get install autoconf automake libtool
    5. hui@hui-virtual-machine:~$ sudo apt-get install autoconf-archive
    6. hui@hui-virtual-machine:~$ sudo apt-get install m4
    复制代码

    2.2、安装
    2.2.1、安装命令:

    1. hui@hui-virtual-machine:~/libgpiod$ ./autogen.sh --enable-tools=yes --prefix=${PWD}/build --host=aarch64-poky-linux
    复制代码

    安装报错1:
    e001.jpg


    执行:
    1. hui@hui-virtual-machine:~/libgpiod$ autoreconf -vi
    复制代码

    2.2.3、继续安装
    执行:

    1. hui@hui-virtual-machine:~/libgpiod$ ./configure --enable-tools=yes --prefix=${PWD}/build --host=aarch64-poky-linux
    复制代码


    安装报错2:
    e002.jpg

    修改confgure 文件

    1. hui@hui-virtual-machine:~/libgpiod$ vi configure
    复制代码
    屏蔽掉 AX_CXX_COMPILE_STDCXX_17(ext, mandatory)

    E003.jpg

    正常后,编译通过

    2.2.4、继续安装
    执行命令:

    1. hui@hui-virtual-machine:~/libgpiod$ make
    2. hui@hui-virtual-machine:~/libgpiod$ make install
    复制代码

    安装完成后,会在build文件下生成库文件
    e004.jpg



    后面编译使用此编译后的库文件。


    三、硬件部分


    3.1、LED硬件部分


    e005.png


    3.2、使用到开发板的端口
    e007.png


    3.3、手册中端口的定义
    e006.png


    四、程序部分


    4.1、gpio_tesc.c
    1. #include<stdio.h>
    2. #include<unistd.h>
    3. #include<gpiod.h>

    4. #define PIN_IO2_12   12   //D9 -- LD4
    5. #define PIN_IO2_21   21   //D8 -- LD3
    6. #define PIN_IO2_20   20   //D7 -- LD2
    7. #define PIN_IO2_19   19   //D6 -- LD1

    8. #define PIN_IO2_18   18   //D5 -- K4

    9. int main()
    10. {
    11.   uint8_t ds=1;
    12.   uint8_t dd=0;
    13.   struct gpiod_chip *gchip;
    14.   struct gpiod_line_info *glinein, *glineout;
    15.   struct gpiod_line_settings *gline_settings_in, *gline_settings_out;
    16.   struct gpiod_line_config   *gline_config_in, *gline_config_out;
    17.   struct gpiod_request_config *gline_request_config_in, *gline_request_config_out;
    18.   struct gpiod_line_request   *gline_request_in, *gline_request_out;
    19.   int offset_in[1] = {PIN_IO2_18};
    20.   int offset_out[3] = {PIN_IO2_21,PIN_IO2_20,PIN_IO2_19};
    21.   int value;

    22.   if ((gchip=gpiod_chip_open("/dev/gpiochip0")) == NULL)
    23.   {
    24.     perror("gpiod_chip_open");
    25.     return 1;
    26.   }
    27.   gline_settings_out = gpiod_line_settings_new();
    28.   if (gpiod_line_settings_set_direction(gline_settings_out, GPIOD_LINE_DIRECTION_OUTPUT) != 0)
    29.   {
    30.     perror("gpiod_line_settings_set_direction");
    31.   }
    32.   gline_config_out = gpiod_line_config_new();
    33.   gpiod_line_config_add_line_settings(gline_config_out, offset_out, 3, gline_settings_out);
    34.   gline_request_config_out = gpiod_request_config_new();
    35.   gline_request_out = gpiod_chip_request_lines(gchip, gline_request_config_out, gline_config_out);

    36.   gpiod_line_request_set_value(gline_request_out, PIN_IO2_12, 1);
    37.   gpiod_line_request_set_value(gline_request_out, PIN_IO2_21, 1);
    38.   gpiod_line_request_set_value(gline_request_out, PIN_IO2_20, 1);

    39.   for (int i = 0; i < 100; i++)
    40.   {
    41.       gpiod_line_request_set_value(gline_request_out, PIN_IO2_21, 1);
    42.       gpiod_line_request_set_value(gline_request_out, PIN_IO2_20, 1);
    43.       gpiod_line_request_set_value(gline_request_out, PIN_IO2_19, 0);
    44.       usleep(200000);
    45.       gpiod_line_request_set_value(gline_request_out, PIN_IO2_21, 1);
    46.       gpiod_line_request_set_value(gline_request_out, PIN_IO2_20, 0);
    47.       gpiod_line_request_set_value(gline_request_out, PIN_IO2_19, 1);
    48.       usleep(200000);
    49.       gpiod_line_request_set_value(gline_request_out, PIN_IO2_21, 0);
    50.       gpiod_line_request_set_value(gline_request_out, PIN_IO2_20, 1);
    51.       gpiod_line_request_set_value(gline_request_out, PIN_IO2_19, 1);
    52.       usleep(200000);
    53.       gpiod_line_request_set_value(gline_request_out, PIN_IO2_21, 1);
    54.       gpiod_line_request_set_value(gline_request_out, PIN_IO2_20, 1);
    55.       gpiod_line_request_set_value(gline_request_out, PIN_IO2_19, 1);
    56.       usleep(200000);
    57.       printf("gpio out test!\n");
    58.   }
    59.   gpiod_chip_close(gchip);
    60.   return 0;
    61. }
    复制代码


    4.2、编译程序

    执行编译命令:
    1. hui@hui-virtual-machine:~/gpio_test$ $CC gpio_test.c -o gpio_test -I /home/hui/libgpiod/build/include  -L /home/hui/libgpiod/build/lib -lgpiod
    复制代码


    编译完成后,生成的文件
    e008.png


    4.3、复制文件到开发板
    e009.png

    五、程序运行


    开发板系统中已经有libgpiod库,只复制应用程序运行。
    运行命令:./gpio_test
    e010.png


    点亮LED灯
    led.gif

    哎...今天够累的,签到来了~
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2025-2-5 17:05
  • 签到天数: 206 天

    连续签到: 1 天

    [LV.7]常住居民III

    28

    主题

    1814

    帖子

    2

    金牌会员

    Rank: 6Rank: 6

    积分
    5926
    最后登录
    2025-6-26
    发表于 2025-6-26 15:09:36 | 显示全部楼层
    这个看着不错啊
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2025-6-20 08:51
  • 签到天数: 340 天

    连续签到: 1 天

    [LV.8]以坛为家I

    0

    主题

    417

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1251
    最后登录
    2025-6-26
    发表于 2025-6-26 15:19:29 | 显示全部楼层
    谢谢啦
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2025-1-21 10:02
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    15

    主题

    3630

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2965
    最后登录
    2025-8-31
    发表于 2025-6-27 09:33:24 | 显示全部楼层
    这个扩展板不错啊
    早上开心
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-8-21 08:24
  • 签到天数: 155 天

    连续签到: 1 天

    [LV.7]常住居民III

    0

    主题

    685

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1208
    最后登录
    2025-8-27
    发表于 2025-6-30 13:58:31 | 显示全部楼层
    学习了
    哎...今天够累的,签到来了~
    回复

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-8-31 20:09 , Processed in 0.093080 second(s), 24 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表