面向嵌入式系統(tǒng)的I2C總線設計和測試
I2C是一種中低數據速率主/從通信總線。物理層是一種簡單的信號交換協(xié)議,該協(xié)議基于總線設備以及用于驅動或釋放總線線路設備之上的集電極開路輸出。簡單的硬件設計和較低的數據速率使得所有的工程師都能利用I2C作為一種通信解決方案。由于大多數微控制器供應商在其大部分器件上均提供了I2C主控器和從動器功能,因此嵌入式產品設計師在利用I2C時不會遇到任何障礙。
本文引用地址:http://m.butianyuan.cn/article/21233.htm測試策略源于設計策略
平穩(wěn)順利的設計需要采取有計劃的校驗策略。當采用主/從通信系統(tǒng)時,這兩部分均需進行校驗。把校驗推遲到主控器和從動器通信操作完成之后進行是錯誤的策略。下文所述是一種旨在盡可能獨立地對主控器和從動器進行有效測試的策略。 在實現成功設計的規(guī)則和指導方針中,以下四點支持有效校驗:
1)明確定義的接口
2)主控器初始化所有的轉換,并支持從動器的“緊急”調用
3)使從動器的通信協(xié)議與主功能保持獨立
4)從動器始終保持數據相關性。
雖然設計階段中的每項工作都對校驗產生影響,但以上事項是支持測試策略的特殊考慮。該策略可被概括為:
分別測試主控器和從動器
通過采用盡可能“真實”的環(huán)境來提高測試覆蓋率
把從動器和主控器放在一起,以實現早期和經常性的集成
分別測試主控器和從動器 主控器和從動器被設計成分離、非耦合式的,而且設計過程專注于開發(fā)與設計細節(jié)沒有關聯的接口。不管是在物理結構上還是在時間順序上,主控器和從動器的這種分離設計都支持對每個部分進行單獨測試。但為了成功地測試主控器并獲得可以信賴的結果,在早期必須存在某種形式的從動器,即測試從動器。這種測試從動器應該是一種設計外殼程序,用于提供商定的接口和一些額外的測試連接程序(如一個環(huán)回或一個包含稍有改動的數據的附加寄存器)。
“外殼程序(shell)”從動器使得主控器能夠實現并測試其接口。適合這種“外殼程序”或測試從動器的最佳平臺是將被用于從動器開發(fā)的微控制器。事實上,如果采用相同的設備來測試最終將被用于開發(fā)末級從動器的主控器,則該“外殼程序”將提供用于從動器接口的測試平臺(從動器的第一級開發(fā))。
為了使從動器的測試側成為一個單獨項,需要比實際主控器所能提供的更多主控器功能。最后需要做的就是為實際主控器開發(fā)更多的功能,為測試提供支持。測試主控器應是一個通用主控器,而且,采用一種基于PC并通過PC-I2C總線橋接器件與從動器進行通信的應用程序,將有利于大多數計劃的實施。
采用“真實”環(huán)境提高測試覆蓋率
最后是完成主控器和從動器的單獨測試,并了解它們何時被放在一起,旨在實現最終集成。在最終集成中,主控器和從動器均未得到“實際”測驗。如果在一個與最終結果不相似的環(huán)境中對它們進行測試,則至少需要重復某種冗余的測試。事實上,如果測試環(huán)境與實際環(huán)境不嚴格近似,則得出的將是一個令人驚訝的糟糕結果。
為避免浪費精力,應先了解測試和設計的相關知識。而且,測試將首先要求接口必須穩(wěn)固(形式固定)且不變。如果定義精確并得到了嚴格遵守,則接口將確定“實際”環(huán)境,并規(guī)定測試環(huán)境的設計。某些信令和定時特性只在最終集成時才呈現出來,不過,當主控器和從動器測試均采用接口驅動型測試環(huán)境時,則大多數功能測試都能反映出最終結果的特征。在小概率(不受歡迎的、需要避免的、可預防的)事件(接口發(fā)生變化)中,必須立即聯系到測試環(huán)境。 提早并經常性地集成從動器和主控器
單獨測試的主控器和從動器只在集成和同時測試時才是完整的。如上文所述,某些特性將僅在集成過程中才表現出來。項目截止期限之前的一周(或前夜)并不是第一次遇到這種情況。接口驅動、單獨測試型策略還支持早期集成,不是作為覆蓋率良好的單獨測試的替代方案,而是作為一種保險方案(對接口和器件特性有充分的了解)。為了支持集成,主控器和從動器均必須位于彼此都接受的完成點上,設計計劃必須包括這些集成階段。
這里給出了部分需要制定早期集成計劃的階段或測試場合,并說明需要對其加以注意的原因:
1)基本的總線電氣兼容性:雖然I2C具有簡單的特性,但這并不能排除諸如上拉電阻器阻值的選擇以及即將共用I2C總線的其他設備的總線定時特性等基本問題。重要的是在實際的總線上進行基本的通信操作(并將所有的實際設備與總線相連)。
2)功能定時:主控器需要具有針對從動器中的響應或定時的容限,這是一個現實問題,而且,很難以書面的形式來明確地給出應具有怎樣的容限。
3)緊急情況:制定從動器對主控器的緊急調用或中斷計劃并測試它們的發(fā)生方式和響應有可能導致從動器中的功能變化。
I2C主控器
I2C主控器通常是一種用于系統(tǒng)中的許多其他功能的控制裝置,并具有針對增加要求或做出變更的最低靈活性,主控器負責控制接口。在定義階段,主控器和從動器均具有輸入,但是,當需要做出詳細決定時,主控器可以強制一個接口決定,因為采用一種方法對主控器來說比較簡單。使主控器的決策變得較為簡單將給從動器帶來額外的好處。主控器將(而且應該)阻礙對接口的變更,所以從動器設計師必須及早實施自己的設計并接受接口的變更。
另外,雖然對接口的變更只應由主控器來執(zhí)行(或在主控器同意的情況下進行),但是,測試所產生的影響(尤其是對專為測試而構筑的“環(huán)境”的影響)也是必須考慮的。設計之初專注于接口,獲得主控器、從動器和測試小組的同意,了解測試影響以及特定接口決定帶來的好處,然后不要做任何變更。讓新的功能逐步融入到從動器可實現方案的細節(jié)(而不是接口)。
設計一個代理從動器來支持主控器測試,如果這可以通過開發(fā)從動器來實現,效果更好。該代理從動器可能與末級從動器并不相似,因為它的主要作用是支持接口測試和校驗;對于從動器來說,這意味著代理/測試從動器中將擁有額外的、非生產性功能。額外功能可能僅用于測試目的的附加寄存器和/或用于指示功能或確認命令的特殊I/O動作。把這些功能置于具有條件編輯能力的末級從動器中或許有助于在日后發(fā)生變更的情況下支持回歸測試。
最后,應提早并經常性地集成主控器和實際從動器(在一個規(guī)定的開發(fā)級上),以了解不可避免的“未規(guī)定”特性。實際設備在實際I2C上彼此相遇得越早,就能越早地了解并適應其特性。
I2C從動器
設計活動的中心是從動器,而且它將耗費設計師大部分的精力(除非能夠重復使用另一個項目的從動器設計)。測試工作的重點也放在從動器上,而且,從動器需要按照主控器及其測試的要求來實現。從動器很可能需要針對集成期間所了解到的信息做適應性調整,于是,這種情況出現得越早、測試的“真實性”越強,效果就越好。使主控器小組確認:集成點越多越好;它將對項目的實施提供幫助,并直接令從動器開發(fā)受益。
對大多數測試而言,一個I2C主控器測試設備(而不是實際主控器)將負責控制從動器。獲得從動器完整測試覆蓋率所需的靈活性將不太可能存在于實際主控器中,而在大部分時間里實際主控器將擔負其他任務(配置其他器件、定時要求、以最終用戶為中心的接口)。采用I2C的好處是主控器測試設備并不復雜,而且可行性好。設計小組的每一位成員都需要一個測試主控器,但它們不必是昂貴或精細復雜的主控器。
對于I2C測試主控器,根據應用場合的不同,共有三種獲得途徑:
1)購買一款商用I2C主控器:這些主控器通常附隨一些測試軟件,售價從100美元到500美元以上不等。如果選擇了一款,則應確定它支持腳本編程和記錄,因為在某些點上正式測試對此有所需求。
2)采用一種免費軟件應用程序和自行安裝硬件:許多此類產品都可以通過互聯網搜索的方法找到。雖然這會使工作量略有增加,但成本較低。而且,由于用于PC的參考應用程序是開放式源代碼,因此可對其進行修改以滿足要求。
3)采用一個微控制器(或主控器MCU)設計主控器:明顯的好處是目前的測試主控器在特性上更加接近于實際主控器,而且已經獲得了用于對其進行更新和擴展的專業(yè)知識??梢园鸦貧w測試設計在測試主控器中,而不是依靠PC應用程序來完成。
結論
I2C總線通信是許多嵌入式設計的普遍現象。每種嵌入式設計都能夠從把部分功能交由從動器來完成的做法當中獲益,這既是出于效率的考慮,也是為了讓許多項目能夠重復使用經過精確測試的功能部件。如能遵循以下擬訂的設計和測試策略,則定制從動器項目應能夠比較順利地繼續(xù)下去:在從動器和主控器之間進行功能劃分、采用功能強大的不變接口、獨立地對主控器和從動器進行盡可能多的測試、在設計過程中對主控器和從動器進行早期和經常性的集成。 采用微控制器實現的定制I2C從動器設備令設計師能夠重復使用一系列產品設計重復部分的即插即用功能。如果遵照用于設計和測試的規(guī)則和指導方針,則能夠成功地在產品中充分利用I2C,并把更多的時間集中在市場期待的下一個出色功能上,并滿足設計進度要求。
評論