天天看點

Pmod使用的4種模式

  引言

  多年以來,一直存在标準泛濫的現象,而我們電子業尤其嚴重。您是否曾經想過,為什麼我們對有些奇怪的數字或測量計的東西建立标準?關于航天飛機的固體燃料火箭推進器的直徑是否真的源自于馬屁股的寬度的讨論非常激烈。2相當的稀奇和有趣。但是,接受事實會更有成效:總是會有很多标準,我們必須找到使其很好配合的途徑。工程師和制造商均涉及到一個共同領域,其中标準的不相容特别麻煩:原型平台。幸運的是,有些方法可以緩解這些不相容性。下文中我們将進一步分析讨論。

  開發闆擴充标準

  多年來,元件制造商一直提供開發系統,幫助其客戶采用其元件設計應用。對于可程式設計器件,例如FPGA和微控制器,始終存在與其它元件的接口,以便能夠與硬體同步或者早于硬體進行軟體開發。随着時間推移,湧現出了關于這些“擴充接口”的非常松散的僞标準,其中有些标準的一緻性相對較好。Xilinx等FPGA廠商推動這些标準,例如FMC,使客戶盡可能簡單地遷移到最新平台。Xilinx也采用第三方标準,例如Digilent制定的Pmod标準,用于該接口的外圍裝置選擇較廣。微控制器制造商的标準化略慢,許多采用自身的專用接口。然而,制造商動向和Arduino平台普及等市場力量正驅使其也向僞标準靠攏。

  Pmod非常适合FPGA

  Pmod接口是将外設與FPGA開發闆進行組合和比對的很好方式,可利用友善、可手工焊接的連接配接器連接配接八個引腳以及電源和地。FPGA的靈活性允許将其八個信号引腳用于幾乎所有功能。盡管這提高了其對于FPGA的實用性,但也造成該接口難以配合那些外設功能配置設定給特定引腳的微控制器。為解決這一問題,Digilent定義了多種不同的Pmod引腳排列類型,不同的功能配置設定給特定的引腳(圖1)。

Pmod使用的4種模式

  圖1. Pmod引腳排列類型将不同的功能配置設定給特定引腳。

  類型定義使得微控制器闆較容易使用Pmod接口标準,但仍然存在挑戰。利用許多微控制器有限的引腳複用能力,難以實作真正的通用接口,已被廢棄的Type 3 UART接口就是很好的例子。然而,即使存在局限性,對于原型或教育目的,Pmod接口是一種非常有用的擴充端口。

  Arduino僞标準

  Arduino僞标準是一個完全不同的老頑固,是出于各種原因為不同群體開發的不同平台。最初的Arduino開發闆僅提供簡單微控制器引腳,然後增加足夠的支援器件,進而使程式設計變得簡單,并且愛好者仍然可承受。由于其簡單性,原始引腳排列按照微控制器的性能定義。

  随着平台發展到支援功能更多的處理器,該僞标準逐漸碎片化,具有各種引腳複用組合,可以說是例外多于規則。有些問題,例如支援不同的I/O電壓以及I2C信号的不一緻性,在第3版的UNO闆中得到了解決。然而,在将擴充闆與Arduino開發闆(或任何Arduino衍生産品)配對使用時,必須仔細檢查相容性。并且可供選擇的Arduino衍生産品很多(圖2),即使僅限于Arduino網站提供的官方開發闆,引腳相容性也并不簡單。但是,一般而言,每個具有特殊功能的Arduino引腳也可用作通用I/O (即GPIO)。

Pmod使用的4種模式

  圖2 .Arduino開發闆配置為多種衍生産品,以支援不同的設計和應用。

  與Pmod接口中一個引腳可用作多種特殊功能不同,大多數Arduino引腳通常執行單一的特殊功能。從根源上講,Arduino僞規範比Pmod接口更适合于微控制器。是以,這就是Arduino規格的微控制器闆比Pmod連接配接器的微控制器闆更容易找到的原因。

  Pmod與Arduino接口之間的映射

  我們可以采用Pmod接口和Arduino僞标準,兩者各有衆多來源可供使用。是否能夠使某個平台的外設與另一平台的控制器進行通信呢?當然,一切皆有可能,但有時候治療比疾病本身更糟糕。

  如果将Arduino UNO第3版引腳排列與Pmod規範進行比較,您馬上會發現Arduino闆上有22個信号引腳,而Pmod連接配接器上隻有8個引腳。從技術上講,有可能将全部22個引腳串行化,使其通過Pmod提供的8個引腳,然後在另一側對其進行解串,但我們将這一工作留給讀者。将22個Arduino信号自适應映射到Pmod規範定義的不同類型(見圖1),是可以做到的,但仍不輕松。以上圖1所示為5種不同類型的Pmod接口。許多信号采用電平觸發,可由軟體通過GPIO引腳控制。然而,有些信号采用時間觸發協定,利用微控制器内部的外設更容易控制。是以,困難在于将微控制器的所有專用引腳映射到Pmod規範定義的引腳。

  建議方案:使用串行控制交叉點開關

  解決映射問題的一種途徑是在電路闆上安裝配置跳線陣列。這種方法盡管很簡單明了,但既不美觀也不人性化。适合Arduino闆尺寸的說明文字字型會非常模糊難辨。許多引腳可能是雙向的,是以簡單的邏輯門不是信号連接配接的好選擇。模拟開關能起作用,但沒有足夠的附加引腳來對其進行獨立控制。利用I2C端口擴充器,可解決引腳短缺的問題。誠然,這種方法不比跳線更巧妙,但可通過軟體配置。

  如果沒有串行控制16:2多路複用器,MAX14661,這種方法似乎毫無希望。咋一看,支援所有不同類型的Pmod好像需要四片器件,那麼這種方法很難說比端口擴充器方案好多少。實際情況真的會是這樣,除非…MAX14661具有特殊功能。該器件允許同時激活任意開關組合,是以可用作8:8交叉點開關。

  至此為止,一切順利。但是,不可否認,8:8交叉點配置有一個局限性:同時隻能傳輸兩路獨立信号,每個COM引腳一路。但同時兩路信号有什麼好處?如上所述,大多數信号可由GPIO驅動,隻有少數信号要求内部外設控制器。如果每個引腳配置設定一路GPIO,隻有時間觸發的串行線路需要通過複用器連接配接。UART和I2C為2線總線,是以不适合通過複用器的唯一串行總線是SPI.SPI隻有一種接口定義,是以将SPI信号直接連接配接至連接配接器,作為這些接口的GPIO連接配接。當其中某個引腳需要用作時間觸發功能時,隻需将GPIO置于三态。

  信号電平怎麼樣呢?最初的Arduino設計及許多後來者使用5V信号電平,但現在5V信号沒有以前那麼常見。為解決這一問題,後來的Arduino版增加了IOREF引腳,以表示基于較低電壓微控制器的衍生品。Pmod連接配接器沒有IOREF引腳,但其絕大多數子產品支援3.3V信号。幸運的是,MAX14611等雙向電平轉化器解決了這一問題。隻需将Arduino信号連接配接至由IOREF供電的電平轉換器的一側。然後将另一側連接配接至由Arduino闆上專用3.3V電平供電的Pmod連接配接器。MAX14661多路複用器采用1.8V至5V的電源供電時可承受及傳輸-5V至+5V的任何信号,是以可安裝在電平轉換器的任何一側。由于至多路複用器的Arduino連接配接多于Pmod連接配接,是以将MAX14611安裝在電平轉換器的Arduino很有意義。按照這種方式,Pmod連接配接器處隻需要兩片4通道器件(圖3)。

Pmod使用的4種模式

  圖3. 建議方案的邏輯圖。

  方案評估

  該方案的關鍵是每個通道支援同時多個連接配接。COM引腳不連接配接,但在複用器内部用于選擇連接配接。MAX14661的16個複用連接配接中的8個專用于Pmod連接配接器,也連接配接至4路支援SPI的信号和4路其它GPIO(圖3)。其它8個複用連接配接綁定至2線串行總線和其它時間關鍵信号,例如PWM或定時器引腳。例如,為實施I2C類型,隻需配置複用器,在通道A上使能SDA引腳和Pmod引腳4,在通道B上使能SCL和Pmod引腳3.通道A和B是任意選擇的,可随意交換。實際上,甚至可以使能Pmod連接配接器上第二排的引腳3和4,以通路另外的6引腳I2C Pmod.如果I2C器件的位址不同,甚至可使兩個端口保持工作狀态,或者動态激活,以支援相同位址的兩個器件。使用跳線方法,根本不可能在兩個具有相同位址的器件之間進行動态切換。使用MAX14661,能夠以程式設計方式配置所有指定的Pmod類型,甚至非标準類型,而隻需單片尺寸僅為4mm X 4mm的有源器件。

  為什麼有人設計非标準Pmod?原因之一是與微控制器相同的引腳複用問題。例如,MAX14661支援I2C和SPI控制,取決于配置引腳的狀态。MAX14661的外設子產品的引腳排列與SPI Pmod類型相比對,但時鐘和資料引腳與Digilent Pmod規範規定的I2C引腳不比對。适配卡上的MAX14661可将SDA和SCL信号映射到任意Pmod引腳,可用于支援非标準MAX14661外設子產品、I2C引腳映射。MAX14661也有兩個位址引腳,以支援4個不同的I2C器件位址。是以,可将系統設計為支援同一總線上的多個器件。

  使用MAX14661複用I2C總線時,在帶内發送指令。切換将與I2C總線同步生效。當然,在帶外複用I2C總線具有挑戰性,因為如果不小心,會在從機将SDA線拉低時斷開;下次選擇該總線分支時,分支可能鎖死。MAX14661始終在I2C寫指令結束時轉換總線,此時開關另一側的器件應為空閑。

  結論

  據考證,沒有證據表明Pmod規範或Arduino僞标準源自于馬屁股。然而,導緻其産生的遺留問題和因素卻深深根植于其DNA.盡管兩種标準之間的分歧看起來不可調和,但MAX14661支援我們将Arduino-Pmod轉換變為現實。

  作者:Greg Steiert

  Maxim Integrated,技術團隊資深成員