女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何通過GPIO驅動配置實現控制i.MX8芯片引腳電平變化

CHANBAEK ? 來源:飛車俠 ? 作者:Pual Lin ? 2023-12-04 11:41 ? 次閱讀

本文我們要講的是如何通過 GPIO 驅動配置實現控制 i.MX8 芯片引腳電平變化。

硬件平臺:i.MX8QMMEK EVM Board

軟件環境:i.MX-P9.0.0_2.1.0-AUTO-GA

我們這里使用的是通過 DTS 文件來進行設備硬件資源的申請及分配,用戶可以在 fsl-imx8qm-mek.dtsi 文件下操作 DTS,文件所在目錄:kernel_imxarcharm64bootdtsfreescale,定義 myled節點 設備如下:

myled {  
        compatible = "fsl,myled";  
        pinctrl-names = "default";  
        pinctrl-0 = < &pinctrl_gpio_keys >;  
    };

使用的引腳編號為 GPIO4_22,引腳功能定義 pinctrl_gpio_keys 如下:

pinctrl_gpio_keys: myled{  
            fsl,pins = <  
              SC_P_QSPI1A_DQS_LSIO_GPIO4_IO22     0x00000021 
             >;  
        };

以上便完成 DTS 配置,接下來需要編寫驅動代碼 myled.c ,首先建立好驅動代碼框架:

  1. 構建 platform_driver 結構體及定義 compatible
static const struct of_device_id myled_ids[] = {  




    { .compatible = "fsl,myled", },  
    { },  
};  




static struct platform_driver myled_driver={  
    .probe  = myled_probe,  
    .remove = myled_remove,  
    .driver = {  
        .name  = "myled",  
        .of_match_table = myled_ids,  
    }  
};
  1. 注冊平臺驅動
static int __init myled_init(void)  
{  
    /*2. 注冊平臺驅動*/  
    platform_driver_register(&myled_driver);  
    return 0;  
}
  1. 注銷平臺驅動
static void __exit myled_exit(void)  
{  
    /*3. 注銷平臺驅動*/  
    platform_driver_unregister(&myled_driver);    
}
  1. 定義 probe 函數
static  int myled_probe(struct platform_device *pdev)  
{  
    int ret;  
    ret = gpio_request(USER_LED, "LED");//第一個參數,為要申請的引腳,第二個為你要定義的名字  
    if (ret)   
    {  
        printk("[pual] gpio_request error %s - %d -- n",__func__,__LINE__);  
        return ret;  
    }  
    gpio_direction_output(USER_LED, 1);  
    gpio_set_value(USER_LED, 1);  
    major = register_chrdev(0,"myled",&myled_drv_fops);  


    //創建設備信息,執行后會出現 /sys/class/myled  
    myled_class = class_create(THIS_MODULE, "myled");  


    //創建設備節點,就是根據上面的設備信息來的  
    myled_class_devs = device_create(myled_class, NULL, MKDEV(major, 0), NULL, "myled"); /* /dev/myled */  


    return 0;     
}
  1. 定義 ioctl 函數
static long myled_drv_ioctl(struct file *file, unsigned int cmd, unsigned long arg)  
{     
    printk("gpio_ioctln");  
    switch(cmd) {  
        case 1:  
            if(arg == 0)  
            {  
                gpio_set_value(USER_LED, 0);  
                printk("led is offn");  
                break;  
            }else  
                {  
                        gpio_set_value(USER_LED, 1);  
                            printk("led is onn");  
                            break;  
                }  
        default:  
                return -EINVAL;  
    }  
    return 0;  
}
  1. 設定引腳編號
#define USER_LED      374       /*GPIO LED  GPIO4_22*/

以上便完成 GPIO 驅動代碼,通過應用程序便可以調用 ioctl 函數控制引腳電平變換。

注意:

i.MX8 GPIO 引腳編號設定與其他芯片會有所不同,總共有八組 GPIO,GPIO0~GPIO6,如下圖所示:

圖片

它們所對應的編號分別為:

圖片

前面完成了對 i.MX8 GPIO 設備驅動的介紹,后續將會分享更多關于 i.MX8 系列的開發內容。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 芯片
    +關注

    關注

    459

    文章

    52169

    瀏覽量

    436098
  • 電平
    +關注

    關注

    5

    文章

    367

    瀏覽量

    40411
  • 引腳
    +關注

    關注

    16

    文章

    1555

    瀏覽量

    52342
  • GPIO
    +關注

    關注

    16

    文章

    1271

    瀏覽量

    53568
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    i.MX6ULL 驅動開發7—按鍵輸入捕獲與GPIO輸入配置與高低電平讀取

    本篇主要介紹了i.MX6ULL的按鍵檢測的使用,主要的知識點是設備樹的修改,以及GPIO的輸入配置與高低電平的讀取。
    的頭像 發表于 05-24 09:11 ?6765次閱讀
    <b class='flag-5'>i.MX</b>6ULL <b class='flag-5'>驅動</b>開發7—按鍵輸入捕獲與<b class='flag-5'>GPIO</b>輸入<b class='flag-5'>配置</b>與高低<b class='flag-5'>電平</b>讀取

    imx8 gpio 上拉下拉配置

    imx8 gpio 上拉下拉配置,目的:通過 GPIO 驅動
    發表于 07-22 08:02

    怎樣通過GPIO驅動配置實現控制imx8芯片引腳電平變化

    imx8GPIO引腳編號設定與其他芯片有哪些不同?怎樣通過GPIO驅動
    發表于 08-04 06:16

    如何將對i.MX8芯片的支持添加到rustBoot?

    我想為rustBoot添加對 i.MX8 芯片的支持,我希望你能在以下問題中為我指出正確的方向。關于i.MX8 容器格式的文檔很少。我在哪里可以找到有關“容器布局”的詳細信息,即哪些字節表示什么以及
    發表于 03-30 07:48

    i.MX8以太網無法配置靜態IP如何解決?

    我在 i.MX8 pluse evk 上用 android 13 測試以太網功能。我發現了一個關于靜態ip的問題。更改以太網配置對話框后,我無法配置靜態 IP。你能解決這個問題嗎?
    發表于 03-30 06:51

    i.MX8 SPI CS引腳不工作是怎么回事?

    我在 Variscite i.MX8 迷你 SoM 上運行 Debian。我已經用邏輯分析儀驗證了除 CS 之外的所有 SPI 信號都在工作。無論我做什么,CS 總是很低。我嘗試通過命令行寫入
    發表于 03-31 06:38

    i.MX8 Mini的參考手冊框圖中為什么找不到SCU?

    對應的i.MX8設備。所以我認為這是 i.MX8 系列的一般特征。在 i.MX8 Mini 的參考手冊框圖中,我找不到 SCU。我假設此設備沒有 SCU 是否正確?我如何設置設備以實現
    發表于 04-19 10:39

    如何在i.mx8 EVK中使用LIN通信?

    i.mx8 EVK 中使用 LIN 通信
    發表于 04-20 07:20

    無法在i.MX8文檔中找到有關DP引腳的任何信息,求分享

    我正在使用 MCIMX8M-EVK,我需要使用顯示端口 (DP)。i.MX8 處理器通過接口 HDMI 顯示接口支持 DP。 我的第一個問題是關于這個界面。我無法在 i.MX8 文檔
    發表于 05-30 06:18

    i.mx8系列是在哪里制造的?

    我沒有看到 i.mx8 處理器的原產國。據我了解,恩智浦在全球擁有一系列FAB。因此想知道是否有人可以分享 i.mx8 處理器的制造地點?
    發表于 06-01 07:22

    NXP i.MX8系列性能比較

    的、極高的可擴展性。多個應用可利用一個系統設計,從而顯著節省系統成本。?i.MX 8Xi.MX 8X系列擴展了i.MX 8系列的可伸縮性,包
    的頭像 發表于 07-01 18:52 ?3.6w次閱讀
    NXP <b class='flag-5'>i.MX8</b>系列性能比較

    淺談NXP i.MX8系列應用處理器

    NXP i.MX系列應用處理器是基于32和64位ARM技術,提供多核解決方案,適用于多媒體和顯示應用,具有高性能和低功耗、可擴展、安全可靠等特點。i.MX系列家族成員包括i.MX28系列、i.
    發表于 04-02 09:59 ?5965次閱讀
    淺談NXP <b class='flag-5'>i.MX8</b>系列應用處理器

    i.MX8 Android Automotive12 修改開機 logo

    i.MX8 的 Android Automotive12 BSP 版本中,默認的是 NXP 的開機 LOGO 顯示,如果我們想要更改顯示自己的 logo,該如何配置?本篇文件給大家介紹如何更改 i.MX8 Android A
    的頭像 發表于 09-04 16:42 ?1913次閱讀
    <b class='flag-5'>i.MX8</b> Android Automotive12 修改開機 logo

    恩智浦i.MX8處理器的集成電源設計

    電子發燒友網站提供《恩智浦i.MX8處理器的集成電源設計.pdf》資料免費下載
    發表于 09-18 14:25 ?0次下載
    恩智浦<b class='flag-5'>i.MX8</b>處理器的集成電源設計

    面向NXP i.MX8處理器的電源解決方案

    電子發燒友網站提供《面向NXP i.MX8處理器的電源解決方案.pdf》資料免費下載
    發表于 12-24 15:53 ?0次下載
    面向NXP <b class='flag-5'>i.MX8</b>處理器的電源解決方案