日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

can使能上拉 gpio_IMX6ULL 的 GPIO 操作方法

發(fā)布時(shí)間:2023/12/10 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 can使能上拉 gpio_IMX6ULL 的 GPIO 操作方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

來(lái)源:百問網(wǎng)

作者:韋東山

本文字?jǐn)?shù):1652,閱讀時(shí)長(zhǎng):4分鐘

  • CCM: Clock Controller Module (時(shí)鐘控制模塊)
  • IOMUXC : IOMUX Controller,IO 復(fù)用控制器
  • GPIO: General-purpose input/output,通用的輸入輸出口

1、IMX6ULL 的 GPIO 模塊結(jié)構(gòu)

參考資料:芯片手冊(cè)《Chapter 28: General Purpose Input/Output (GPIO)》

有 5 組 GPIO(GPIO1~GPIO5),每組引腳最多有 32 個(gè),但是可能實(shí)際上并沒有那么多。

  • GPIO1 有 32 個(gè)引腳:GPIO1_IO0~GPIO1_IO31;
  • GPIO2 有 22 個(gè)引腳:GPIO2_IO0~GPIO2_IO21;
  • GPIO3 有 29 個(gè)引腳:GPIO3_IO0~GPIO3_IO28;
  • GPIO4 有 29 個(gè)引腳:GPIO4_IO0~GPIO4_IO28;
  • GPIO5 有 12 個(gè)引腳:GPIO5_IO0~GPIO5_IO11;

GPIO 的控制涉及 4 大模塊:CCM、IOMUXC、GPIO 模塊本身,框圖如下:

2、CCM 用于設(shè)置是否向 GPIO 模塊提供時(shí)鐘

參考資料:芯片手冊(cè)《Chapter 18: Clock Controller Module (CCM)》

GPIOx 要用 CCM_CCGRy 寄存器中的 2 位來(lái)決定該組 GPIO 是否使能。哪組 GPIO 用哪個(gè) CCM_CCGR 寄 存器來(lái)設(shè)置,請(qǐng)看上圖紅框部分。

CCM_CCGR 寄存器中某 2 位的取值含義如下:

① 00:該 GPIO 模塊全程被關(guān)閉

② 01:該 GPIO 模塊在 CPU run mode 情況下是使能的;在 WAIT 或 STOP 模式下,關(guān)閉

③ 10:保留

④ 11:該 GPIO 模塊全程使能

GPIO2 時(shí)鐘控制:

GPIO1、GPIO5 時(shí)鐘控制:

GPIO3 時(shí)鐘控制:

GPIO4 時(shí)鐘控制:

3、IOMUXC:引腳的模式(Mode、功能)

參考資料:芯片手冊(cè)《Chapter 32: IOMUX Controller (IOMUXC)》。

對(duì)于某個(gè)/某組引腳,IOMUXC 中有 2 個(gè)寄存器用來(lái)設(shè)置它:

① 選擇功能:

IOMUXC_SW_MUX_CTL_PAD_ :Mux pad xxx,選擇某個(gè) pad 的功能

IOMUXC_SW_MUX_CTL_GRP_:Mux grp xxx,選擇某組引腳的功能

某個(gè)引腳,或是某組預(yù)設(shè)的引腳,都有 8 個(gè)可選的模式(alternate (ALT) MUX_MODE)。

比如:

② 設(shè)置上下拉電阻等參數(shù):

IOMUXC_SW_PAD_CTL_PAD_:pad pad xxx,設(shè)置某個(gè) pad 的參數(shù)

IOMUXC_SW_PAD_CTL_GRP_:pad grp xxx,設(shè)置某組引腳的參數(shù)

比如:

4、GPIO 模塊內(nèi)部

我們暫時(shí)只需要關(guān)心 3 個(gè)寄存器:

① GPIOx_GDIR:設(shè)置引腳方向,每位對(duì)應(yīng)一個(gè)引腳,1-output,0-input

② GPIOx_DR:設(shè)置輸出引腳的電平,每位對(duì)應(yīng)一個(gè)引腳,1-高電平,0-低電平

怎么編程

5、讀 GPIO

翻譯一下:

① 設(shè)置 CCM_CCGRx 寄存器中某位使能對(duì)應(yīng)的 GPIO 模塊 // 默認(rèn)是使能的,上圖省略了

② 設(shè)置 IOMUX 來(lái)選擇引腳用于 GPIO

③ 設(shè)置 GPIOx_GDIR 中某位為 0,把該引腳設(shè)置為輸入功能

④ 讀 GPIOx_DR 或 GPIOx_PSR 得到某位的值(讀 GPIOx_DR 返回的是 GPIOx_PSR 的值)

6、寫 GPIO

翻譯一下:

① 設(shè)置 CCM_CCGRx 寄存器中某位使能對(duì)應(yīng)的 GPIO 模塊 // 默認(rèn)是使能的,上圖省略了

② 設(shè)置 IOMUX 來(lái)選擇引腳用于 GPIO

③ 設(shè)置 GPIOx_GDIR 中某位為 1,把該引腳設(shè)置為輸出功能

④ 寫 GPIOx_DR 某位的值

需要注意的是,你可以設(shè)置該引腳的 loopback 功能,這樣就可以從 GPIOx_PSR 中讀到引腳的有實(shí) 電平;你從 GPIOx_DR 中讀回的只是上次設(shè)置的值,它并不能反應(yīng)引腳的真實(shí)電平,比如可能因?yàn)橛布?故障導(dǎo)致該引腳跟地短路了,你通過設(shè)置 GPIOx_DR 讓它輸出高電平并不會(huì)起效果。

「新品首發(fā)」STM32MP157開發(fā)板火爆預(yù)售!首批僅300套

點(diǎn)擊“了解更多”相關(guān)章節(jié)

總結(jié)

以上是生活随笔為你收集整理的can使能上拉 gpio_IMX6ULL 的 GPIO 操作方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。