[IMX] 02.GPIO 寄存器

目錄

手冊對應章節

1.GPIO 復用(引腳功能選擇)- IOMUXC_SW_MUX_CTL_PAD_xxx

2.GPIO 電氣特性 - IOMUXC_SW_PAD_CTL_PAD_xxx

3.GPIO 數據與控制寄存器

3.1.數據 - DR

3.2.輸入/輸出選擇 - GDIR

3.3.狀態 - PSR

3.4.中斷觸發控制 - ICR

3.5.中斷使能 - IMR

3.6.中斷狀態 - ISR

3.7.邊沿中斷 - EDGE_SEL


手冊對應章節

// GPIO:28 General Purpose Input/Output (GPIO)
// IOMUX:32 IOMUX Controller (IOMUXC)

IMX 提供了多個 GPIO 組,每個 GPIO 組包含多個 GPIO 接口(IO0~IOx),這些接口用于連接 Ethernet、SPI 等

IO 接口可以用于不同的模塊,但其數量有限,因此不可避免的需要進行 IO 復用,即多個設備通過 PAD 連接在一個 IO 接口上,IMX 通過 IOMUXC(IOMUX Controller)控制 GPIO 復用

1.GPIO 復用(引腳功能選擇)- IOMUXC_SW_MUX_CTL_PAD_xxx

以 GPIO1 組中的 IO03 為例:

IOMUXC_SW_MUX_CTL_PAD_GPIO1_IO03 寄存器控制 GPIO1_IO03 引腳的功能復用:

該寄存器包含兩個字段,其功能如下:

  • SION[4]:Software Input On,強制引腳功能為 GPIO1_IO03(可通過軟件設置,忽略該引腳的功能復用):

    • 1:使能,引腳功能強制為 GPIO1_IO03,從而忽略 MUX_MODE 配置的功能復用;

    • 0:禁用,引腳功能由 MUX_MODE 字段定義;

  • MUX_MODE[3:0]:MUX Mode Select,設置引腳功能:

    • 0b0000:ALT0,i2c1 模塊的 I2C1_SDA 引腳;

    • 0b0001:ALT1,gpt1 模塊的 GPT1_COMPARE3 引腳;

    • 0b0010:ALT2,usb 模塊的 USB_OTG2_OC 引腳;

    • 0b0100:ALT4,usdhc1 模塊的 USDHC1_CD_B 引腳;

    • 0b0101:ALT5,gpio1 模塊的 GPIO1_IO03 引腳;

    • 0b0110:ALT6,ccm 模塊的 CCM_DI0_EXT_CLK 引腳;

    • 0b0111:ALT7,src 模塊的 SRC_TESTER_ACK 引腳;

    • 0b1000:ALT8,uart1 模塊的 UART1_RX 引腳;

注意:當 SION 位置 1 后,引腳功能會被強行設置為 GPIO1_IO03,此時通過 MUX_MODE 設置引腳功能無效

2.GPIO 電氣特性 - IOMUXC_SW_PAD_CTL_PAD_xxx

IOMUXC_SW_PAD_CTL_PAD_xxx 寄存器控制引腳的電氣特性,以 IOMUXC_SW_PAD_CTL_PAD_GPIO1_IO03 為例:

寄存器中各字段的含義如下:

  • HYS[16]:Hyst. Enable,使能遲滯比較器,當 IO 作為輸入功能時有效,用于設置輸入接收器的施密特觸發器是否使能,如果需要對輸入波形進行整形可以使能此位:

    • 1:HYS_0_Hysteresis_Disabled,禁用施密特觸發器;

    • 0:HYS_1_Hysteresis_Enabled,使能施密特觸發器;

  • PUS[15:14]:Pull Up / Down Config,上拉/下拉電阻設置:

    • 00:PUS_0_100K_Ohm_Pull_Down,100K 下拉;

    • 01:PUS_1_47K_Ohm_Pull_Up,47K 上拉;

    • 10:PUS_2_100K_Ohm_Pull_Up,100K 上拉;

    • 11:PUS_3_22K_Ohm_Pull_Up,22K 下拉;

  • PUE[13]:Pull / Keep Select,上拉/下拉 or 狀態保持器,當 IO 作為輸入時,用于設置 IO 使用上拉/下拉還是狀態保持器控制引腳:

    • 0:PUE_0_Keeper,狀態保持器;

    • 1:PUE_1_Pull,上拉/下拉;

    • 注意:狀態保持器在 IO 作為輸入時有效,當外部電路斷電后此 IO 口可以保持住以前的狀態;

  • PKE[12]:Pull / Keep Enable,是否使能狀態保持器:

    • 0:PKE_0_Pull_Keeper_Disabled,禁用;

    • 1:PKE_1_Pull_Keeper_Enabled,使能;

    • 狀態保持器的作用是持續輸出設定的電平,而非脈沖信號,例如,引腳配置輸出高電平,同時使用了狀態保持器,觸發引腳輸出后,引腳將持續輸出高電平,而非一個高電平脈沖;

  • ODE[11]:Open Drain Enable,開漏輸出使能:

    • 0:ODE_0_Open_Drain_Disabled,禁用開漏輸出;

    • 1:ODE_1_Open_Drain_Enabled,使能開漏輸出;

  • SPEED[7:6]:Speed,設置 IO 口的速率:

    • 00:SPEED_0_low_50MHz_,低速率 50MHz;

    • 01:SPEED_1_medium_100MHz_,中等速率 100MHz;

    • 10:SPEED_2_medium_100MHz_,中等速率 100MHz;

    • 11:SPEED_3_max_200MHz_,高速率 200MHz;

  • DSE[5:3]:Drive Strength,設置 IO 口的驅動能力:

    • 000:DSE_0_output_driver_disabled_,禁用輸出驅動;

    • 001:DSE_1_R0_260_Ohm___3_3V__150_Ohm_1_8V__240_Ohm_for_DDR_,3.3V 下 R0 是 260Ω,R0,1.8V 時 R0 為 150Ω,接 DDR 時 R0 為 240Ω;

    • 010:DSE_2_R0_2,R0/2;

    • 011:DSE_3_R0_3,R0/3;

    • 100:DSE_4_R0_4,R0/4;

    • 101:DSE_5_R0_5,R0/5;

    • 110:DSE_6_R0_6,R0/6;

    • 111:DSE_7_R0_7,R0/7;

  • SRE[0]:Slew Rate,設置壓擺率,壓擺率就是 IO 電平跳變所需的時間,比如從 0 到 1 需要多少時間,時間越小波形越陡,說明壓擺率越高,反之,時間越大波形越緩,壓擺率越低,如果產品要過 EMC 則可以使用較低的壓擺率,因為波形緩和,如果使用 IO 做高速通信則可以使用高壓擺率:

    • 0:SRE_0_Slow_Slew_Rate,低壓擺率;

    • 1:SRE_1_Fast_Slew_Rate,高壓擺率;

3.GPIO 數據與控制寄存器

每個 GPIO 組都有對應的數據和控制寄存器,用于操作該 GPIO 組內的每個 GPIO 引腳,以 GPIO1 組為例:

3.1.數據 - DR

其中,GPIOx_DR 寄存器用于控制該 GPIO 組內具體引腳的輸出值、以及該 GPIO 組內引腳讀取到的輸入值:

每個 GPIO 組最多可擁有 32 個引腳,這些引腳可以配置為輸入引腳或輸出引腳

GPIOx_DR 寄存器的每一位都對應于該 GPIO 組內的一個引腳,當引腳配置為輸出模式后,向對應的位寫 1 就可以控制該引腳輸出高/低電平,當引腳被配置為輸入模式后,讀取對應的位即可獲得該引腳讀取到的電平值,例如,要設置 GPIO1_IO03 輸出高電平,則需要設置 GPIO1.DR = 0x8,當 GPIO1_IO03 引腳接地的話,則 GPIO1.DR 寄存器 bit-4 的值為 0,若 GPIO1_IO03 配置為輸入引腳,則讀取 GPIO1.DR 寄存器的 bit-4 即可獲取該引腳目前的電平

3.2.輸入/輸出選擇 - GDIR

當 GPIO 組中某個引腳的功能選擇為通用 GPIO 后(通過 IOMUX Controller),通過 GPIOx_GDIR 寄存器設置該 GPIO 組中,各引腳為輸入模式還是輸出模式:

  • 0:INPUT,引腳配置為輸入引腳;

  • 1:OUTPUT,引腳配置為輸出引腳;

同樣的,GPIOx_GDIR 寄存器中的每一位對應該 GPIO 組內的一個引腳,例如,GPIO1_GDIR 的 bit-4 對應 GPIO1_IO03

3.3.狀態 - PSR

GPIOx_PSR 寄存器為只讀寄存器,其每個位對應該 GPIO 組內的一個引腳:

讀取對應的位即讀取該引腳當前的電平狀態,其功能與 GPIOx_DR 讀取輸入引腳的功能一樣,其區別在于,GPIOx_PSR 只會在訪問該寄存器時才會讀取引腳的輸入值

3.4.中斷觸發控制 - ICR

GPIOx_ICR1 寄存器控制 GPIO 組內 0~15 引腳的中斷觸發信號:

GPIOx_ICR2 寄存器控制 GPIO 組內 16~31 引腳的中斷觸發信號:

每個引腳對應兩個位,控制中斷為高/低電平、上升沿/下降沿觸發:

  • 00:LOW_LEVEL,低電平觸發;

  • 01:HIGH_LEVEL,高電平觸發;

  • 10:RISING_EDGE,上升沿觸發;

  • 11:FALLING_EDGE,下降沿觸發;

以 GPIO1_IO15 為例,如果要設置 GPIO1_IO15 為上升沿觸發中斷,則應該設置 GPIO1.ICR1 = 2 << 30, 如果要設置 GPIO1 的 IO16~31 則需要設置 ICR2 寄存器

3.5.中斷使能 - IMR

GPIOx_IMR 寄存器控制對應引腳的中斷是否使能:

  • 0:MASKED,禁止該引腳觸發中斷;

  • 1:UNMASKED,允許該引腳觸發中斷;

例如,要使能 GPIO1_IO00 的中斷,則應該設置 GPIO1.MIR |= 0x1

3.6.中斷狀態 - ISR

中斷狀態寄存器 GPIOx_ISR 指示對應引腳是否產生了中斷請求:

例如,如果 GPIO1_ISR 寄存器的 bit-4 為 1,則表示 GPIO1_IO03 產生了中斷信號(中斷請求)

處理完中斷后必須清除中斷標志位,清除方法是向 ISR 寄存器中相應的位寫 1(即寫 1 清零)

3.7.邊沿中斷 - EDGE_SEL

該寄存器的每一位對應該 GPIO 組內的一個引腳:

對應位置 1 后,該引腳的上升沿和下降沿(雙邊沿)均會觸發中斷請求,該寄存器中的設置會覆蓋引腳對應的 ICR 寄存器中的設置

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/83790.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/83790.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/83790.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Tomcat 配置 HTTPS 訪問全攻略(CentOS 環境)

Tomcat 配置 HTTPS 訪問全攻略&#xff08;CentOS 環境&#xff09; 一、環境說明 操作系統&#xff1a;CentOS Tomcat 版本&#xff1a;Apache Tomcat/9.0.105 服務器 IP&#xff1a;192.168.1.35 目標&#xff1a;將 Tomcat 默認的 HTTP 訪問升級為 HTTPS&#xff0c;提…

Flink 運維監控與指標采集實戰(Prometheus + Grafana 全流程)

一、引言:為什么 Flink 運維監控如此重要? 在實時計算場景中,Flink 作業 724 小時運行,對性能、資源、故障感知、狀態變化的實時監控非常關鍵。沒有有效的運維可觀測體系: 不知道任務是否在穩定運行 發生問題難以快速定位 無法感知背壓、延遲、反壓等狀態 因此,構建完善…

【prometheus+Grafana篇】基于Prometheus+Grafana實現Oracle數據庫的監控與可視化

&#x1f4ab;《博主主頁》&#xff1a; &#x1f50e; CSDN主頁 &#x1f50e; IF Club社區主頁 &#x1f525;《擅長領域》&#xff1a;擅長阿里云AnalyticDB for MySQL(分布式數據倉庫)、Oracle、MySQL、Linux、prometheus監控&#xff1b;并對SQLserver、NoSQL(MongoDB)有了…

【數據倉庫面試題合集③】實時數倉建模思路與實踐詳解

實時數據倉庫已經成為各大企業構建核心指標監控與業務實時洞察的基礎能力。面試中,關于實時建模的題目頻繁出現,尤其聚焦于建模思路、寬表設計、狀態管理、亂序處理等方面。本文整理典型題目及答題思路,幫助你應對相關考察。 一、建模原則與數倉分層認知 1. 實時數倉與離線…

鴻蒙PC操作系統:從Linux到自研微內核的蛻變

鴻蒙PC操作系統是否基于Linux內核,需要結合其技術架構、發展階段和官方聲明綜合分析。以下從多個角度展開論述: 一、鴻蒙操作系統的多內核架構設計 多內核混合架構 根據資料,鴻蒙操作系統(HarmonyOS)采用分層多內核架構,內核層包含Linux內核、LiteOS-m內核、LiteOS-a內核…

LabVIEW數據庫使用說明

介紹LabVIEW如何在數據庫中插入記錄以及執行 SQL 查詢&#xff0c;適用于對數據庫進行數據管理和操作的場景。借助 Database Connectivity Toolkit&#xff0c;可便捷地與指定數據庫交互。 各 VI 功能詳述 左側 VI 功能概述&#xff1a;實現向數據庫表中插入數據的操作。當輸入…

【docker】--docker file編寫教程

文章目錄 構建docker file 鏡像常用命令速查表一、基礎指令&#xff08;指定鏡像和執行命令&#xff09;二、構建上下文管理三、設置鏡像內部環境四、容器運行配置五、多階段構建&#xff08;可選進階&#xff09; 構建docker file 鏡像 # -f 指定dockerfile # -t 鏡像名和tag…

WeakAuras Lua Script <BiaoGe>

WeakAuras Lua Script <BiaoGe> 表格拍賣插件WA字符串 表格字符串代碼&#xff1a; !WA:2!S3xA3XXXrcoE2VH9l7ZFy)C969PvDpSrRgaeuhljFlUiiSWbxaqXDx(4RDd0vtulB0fMUQMhwMZJsAO5HenLnf1LPSUT4iBrjRzSepL(pS)e2bDdWp5)cBEvzLhrMvvnAkj7zWJeO7mJ8kYiJmYiImYF0b(XR)JR9JRD…

虛幻引擎5-Unreal Engine筆記之什么時候新建GameMode,什么時候新建關卡?

虛幻引擎5-Unreal Engine筆記之什么時候新建GameMode,什么時候新建關卡&#xff1f; code review! 參考筆記&#xff1a; 1.虛幻引擎5-Unreal Engine筆記之GameMode、關卡&#xff08;Level&#xff09; 和 關卡藍圖&#xff08;Level Blueprint&#xff09;的關系 2.虛幻引擎…

開源模型應用落地-模型上下文協議(MCP)-Resource Template-資源模板的使用邏輯(六)

一、前言 在數字化進程加速的今天,如何高效管理動態資源已成為開發者們的核心課題。Resource Template(資源模板)作為Model Context Protocol(MCP)中的關鍵機制,正通過參數化設計重新定義資源調用的邊界——它不僅是靜態數據的容器,更是動態上下文生成的引擎。與傳統的R…

uniapp小程序獲取手機設備安全距離

utils.js let systemInfo null;export const getSystemInfo () > {if (!systemInfo) {systemInfo uni.getSystemInfoSync();// 補充安全區域默認值systemInfo.safeAreaInsets systemInfo.safeAreaInsets || {top: 0,bottom: 0,left: 0,right: 0};// 確保statusBarHei…

【線下沙龍】NineData x Apache Doris x 阿里云聯合舉辦數據庫技術Meetup,5月24日深圳見!

5月24日下午&#xff0c;NineData 將聯合 Apache Doris、阿里云一起&#xff0c;在深圳舉辦數據庫技術Meetup。本次技術沙龍聚焦「數據實時分析」與「數據同步遷移」 兩大核心領域&#xff0c;針對企業數據戰略中的痛點&#xff0c;特邀行業資深技術大咖&#xff0c;結合多年技…

企業網站架構部署與優化 --web技術與nginx網站環境部署

一、Web 基礎 本節將介紹Web 基礎知識,包括域名的概念、DNS 原理、靜態網頁和動態網頁的 相關知識。 1、域名和DNS 1.1、域名的概念 網絡是基于TCP/IP 協議進行通信和連接的&#xff0c;每一臺主機都有一個唯一的標識(固定的IP 地址),用以區別在網絡上成千上萬個用戶和計算機。…

java實現poi-ooxml導出Excel的功能

文章目錄 1. 添加poi-ooxml依賴2. Excel導出工具類3.核心邏輯說明4.擴展建議5.HSSF、XSSF、SXSSF 的核心原則和場景建議&#xff0c;幫助你在不同需求下快速決策&#xff1a; 以下是一個基于 Apache POI 實現的簡單、通用的Java導出Excel工具類&#xff0c;代碼邏輯清晰且注釋詳…

Nginx端口telnet不通排查指南

nginx已經配置server及端口20002&#xff0c;telnet不通&#xff1a;telnet 127.0.0.1 20002 Trying 127.0.0.1... telnet: connect to address 127.0.0.1: Connection refused 一、檢查 systemctl status nginx.service nginx: [emerg] bind() to 0.0.0.0:20002 failed (13…

【RabbitMQ】消息丟失問題排查與解決

RabbitMQ 消息丟失是一個常見的問題&#xff0c;可能發生在消息的生產、傳輸、消費或 Broker 端等多個環節。消息丟失的常見原因及對應的解決方案&#xff1a; 一、消息丟失的常見原因 1. 生產端&#xff08;Producer&#xff09;原因 (1) 消息未持久化 原因&#xff1a;生產…

docker默認存儲遷移

在容器化場景下默認存儲路徑為&#xff08;/var/lib/docker&#xff09;大多數平臺根目錄不支持系統盤擴容&#xff0c;會有空間不足風險隱患&#xff0c;因未配置持久化存儲導致容器數據丟失。以遷移Docker存儲路徑至大容量/data目錄說明 一、停止容器 systemctl stop docke…

【Golang筆記02】函數、方法、泛型、接口學習筆記

Golang筆記02&#xff1a;函數、方法、泛型、接口學習筆記 一、進階學習 1.1、函數 go中的函數使用func關鍵字進行定義&#xff0c;go程序的入口函數叫做&#xff1a;main&#xff0c;并且必須是屬于main包里面。 1.1.1、定義函數 &#xff08;1&#xff09;普通函數 go中…

LLM筆記(九)KV緩存調研

KV 緩存 (Key-Value Cache) 技術詳解 KV 緩存&#xff08;Key-Value Cache&#xff09;是在 Transformer 模型&#xff08;尤其是 Decoder-Only 架構或 Encoder-Decoder 架構的 Decoder 部分&#xff09;進行自回歸 (auto-regressive) 推理生成序列時&#xff0c;一種至關重要…

【Boost搜索引擎】構建Boost站內搜索引擎實踐

目錄 1. 搜索引擎的相關宏觀原理 2. 正排索引 vs 倒排索引 - 搜索引擎具體原理 3. 編寫數據去標簽與數據清洗的模塊 Parser 去標簽 編寫parser 用boost枚舉文件名 解析html 提取title ?編輯 去標簽 構建URL 將解析內容寫入文件中 4. 編寫建立索引的模塊 Index 建…