從事i.MX應用處理器的應用設計客戶支持工作幾年以來,經常會收到GPIO使用或者與其直接相關的問題。而且問題不僅僅來自于初次使用i.MX處理器的客戶,也有很多是來自從事產品開發多年的工程師。由于i.MX應用處理器具有較高的復雜性,導致硬件設計和軟件開發是由不同的人/團隊來負責的,從而使一些軟件硬件銜接部分成了一個類似于三不管的灰色地帶。硬件設計者認為是軟件去使用所以不太關心,而軟件人員對硬件相關的知識基礎弱,比較難于深入理解怎樣使用。但其在設計中的重要性是不容忽視的,否則會導致很多潛在的問題。 通常GPIO會占到芯片超過一半的管腳數量,在此分享一些飛思卡爾i.MX應用處理器GPIO的功能點的使用經驗,希望能幫助設計人員避免問題,優化設計,讓設計成為一件快樂的事。 電平轉換速度(slew rate) 對于這個功能的詳細描述一直沒有出現在飛思卡爾官方發布的文檔中,經應用團隊的努力下,在最新的IMX6DQRM Rev2版已經加入。通過文檔大家可以了解到電平轉換速度依賴于三個寄存器(DSE,SRE和SPEED)的配置,電平轉換速率的輸出結果有四級。 顧名思義,這是一個可以調整高低電平切換上升和下降時間速度的設置項,在一般的應用中使用芯片默認的設置就可以了。在需要微調SI或EMI性能時可以嘗試修改配置。 由于這個功能并沒有設計成可以精確的控制轉換時間,只是以四種不同源驅動工作頻率的形式體現的(四種源驅動頻率分別為50MHz,100MHz,150MHz和200MHz)。由此可知我們只能以一種對比趨勢的定性方式使用它。下面使用飛思卡爾官方提供的IBIS模型結合Mentor Graphic公司的HyperLynx9.1仿真工具得到一組近似結果供大家參考。 仿真模型:GPIO單端輸出 外加5pF負載 工作電壓:1.8V ![]() 需要注意的是對于一些高速的工作模式,例如SD口的HS104工作模式,IO的電平轉換速率是已經被設定死的,不能調節了。 應用舉例:降低并行顯示接口所有IO的電平轉換速度對改善該接口帶來的EMI性能有一定的效果。 狀態保存器(Keeper) 飛思卡爾i.MX應用處理器的GPIO包含輸入和輸出兩組狀態保存器。 使能輸入狀態保存器可以在IO供電NVCC_xxx關掉之后,使輸入緩沖器的輸出自動維持在關電之前的邏輯狀態。其價值可以在低功耗的應用中得到體現。 使能輸出狀態保存器可以在內核供電關掉之后,使IO的輸出自動維持在關電之前的邏輯狀態(需要注意的是輸出狀態保存器不能與上下拉同時工作)。其價值同樣可以體現在低功耗的應用中。 應用舉例:輸入狀態保存器可以允許IO的供電由外部輸入邏輯來控制,不必擔心狀態由于外部輸入邏輯關電丟失,當外部電路沒有狀態變化時可以關閉電源達到節電的目的。而輸出狀態保存器則可以允許內核關電,不必擔心輸出邏輯丟失。 開漏(open-drain) 開漏(OD)是針對場效應管而言的,類似于三極管的集電極開路(OC)。I2C總線就是OD門電路的典型應用。 飛思卡爾i.MX應用處理器的大部分GPIO都支持開漏模式,這使得設計上可以很靈活的實現線與邏輯以及不同電壓域的輸出控制。 應用舉例:當需要使用GPIO來控制外設時,工作電平不匹配也能不是沒有辦法了,只要將GPIO設置為開漏模式,外面增加上拉電阻連接到受控電路邏輯電平即可,不必擔心電平不匹配帶來的漏電流或者電路損壞。(當然一定要注意,外部邏輯電平不能高于GPIO本身的最大耐壓值) 上下拉(pull-up/pull-down) 上下拉就是指上下拉電阻,所有飛思卡爾i.MX應用處理器的GPIO都包含這個功能。需要指出的是上下來是一個相對獨立的功能,不受限于輸出或輸入設置。也就是說當GPIO作為輸入時可以使能上拉或者下拉,作為輸出時也可以使能上拉或下拉。 當對上拉下電路的電流驅動能力要求不高時,片內的上下拉可以代替電路板上的上下拉設計,達到簡化電路和降成本的目的。 應用舉例:由于上下拉的獨立性,在系統調試的時候外部控制芯片的程序可能還沒有準備好,可以通過控制上下拉來對某些IO進行進行邏輯或功能測試。 附注:該功能提供的上下拉電阻的阻值誤差較大,請根據數據手冊和具體應用來權衡。 后記: 由于i.MX應用處理器包含眾多系列,本文介紹的功能是基于目前最新的i.MX6系列,其它系列會有不同,但萬變不離其中,設計時留意下就好。 |