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