本發(fā)明涉及一種基于擴(kuò)展iic接口的裝置。
背景技術(shù):
iic即集成電路總線,是一種雙向、二進(jìn)制、同步串行總線。該總線是一種多向控制總線,多個(gè)芯片可連接至同一總線結(jié)構(gòu)下,每個(gè)芯片都可以作為實(shí)時(shí)數(shù)據(jù)傳輸?shù)目刂圃?。掛于iic總線上的器件被分為主機(jī)和從機(jī),主機(jī)負(fù)責(zé)初始化iic總線的數(shù)據(jù)并產(chǎn)生允許傳輸?shù)臅r(shí)鐘信號(hào),從機(jī)則是具備唯一從地址,且被主機(jī)尋址的器件。鑒于iic使用簡(jiǎn)單,接口資源占用少的特點(diǎn),在傳感器數(shù)據(jù)采集等領(lǐng)域愈來愈普及。
在常見的應(yīng)用場(chǎng)景中,一般將多個(gè)iic從設(shè)備直接掛于總線上進(jìn)行通訊,但鑒于總線的驅(qū)動(dòng)能力和支持容抗有限等原因,使得總線上可掛載的設(shè)備和總線傳輸長(zhǎng)度有限,不能滿足某些iic應(yīng)用場(chǎng)景的需求。因此,需要對(duì)iic進(jìn)行擴(kuò)展。
針對(duì)iic接口擴(kuò)展的方法,目前已有一些發(fā)明專利提出了解決方案。如cn101324875a提出了一種基于將主設(shè)備一級(jí)iic總線擴(kuò)展為多條二級(jí)iic總線的方法,該專利包含時(shí)鐘擴(kuò)展模塊、數(shù)據(jù)控制模塊和方向控制模塊,時(shí)鐘擴(kuò)展模塊將一級(jí)iic的scl信號(hào)擴(kuò)展成多路,數(shù)據(jù)控制模塊用于二級(jí)iic總線的選擇,方向控制模塊進(jìn)行讀寫方向的控制。又如cn104142905a提出的基于cpld或門的擴(kuò)展方式,設(shè)置一個(gè)(n+1)位的數(shù)據(jù)寄存器并使每一個(gè)而輸入或門的輸入端分對(duì)應(yīng)數(shù)據(jù)寄存器的一個(gè)位實(shí)現(xiàn)iic從設(shè)備的擴(kuò)展。又如cn1599343a所提出的基于時(shí)鐘開關(guān)組的方法,只有時(shí)鐘開關(guān)組中接通時(shí)鐘開關(guān)相連的器件可以響應(yīng)iic總線控制器的請(qǐng)求,在相應(yīng)iic總線讀寫操作完成后,關(guān)閉相應(yīng)的時(shí)鐘開關(guān)。
目前專利中提出的iic接口擴(kuò)展方法多采用外接時(shí)鐘擴(kuò)展模塊形成多路時(shí)鐘,再由選通電路選擇連接的iic從設(shè)備,或者通過cpld門電路對(duì)從設(shè)備的地址信號(hào)進(jìn)行按位操作進(jìn)行選通。這些方式多針對(duì)于同一不可修改從地址的多個(gè)從設(shè)備連接場(chǎng)景,但對(duì)于因iic自身驅(qū)動(dòng)不夠?qū)е陆尤朐O(shè)備受限,或因iic自身接入容抗有限導(dǎo)致總線傳輸距離不能太遠(yuǎn),或受硬件限制,無法接入多種總線電平的應(yīng)用場(chǎng)景,并未給出合適的解決方法;而且上述專利多引入cpld、fpga等其它器件,增加了硬件走線的復(fù)雜度和軟件編程的難度。
因此,有必要設(shè)計(jì)一種基于擴(kuò)展iic接口的裝置。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是提供一種基于擴(kuò)展iic接口的裝置,該基于擴(kuò)展iic接口的裝置通過擴(kuò)展板擴(kuò)展iic接口,易于實(shí)施。
發(fā)明的技術(shù)解決方案如下:
一種基于擴(kuò)展iic接口的裝置,包括mcu和擴(kuò)展板;擴(kuò)展板上設(shè)有n條iic信號(hào)通路;n為整數(shù),n≥2;
所述的擴(kuò)展板上的n個(gè)iic信號(hào)通路的第一端分別與mcu上的n個(gè)iic接口相連;
所述的擴(kuò)展板上的n個(gè)iic信號(hào)通路的第二端分別連接n條iic總線。
所述的mcu上的iic接口為iic控制器的接口。
所述的mcu上的iic接口為由通用io口模擬的iic接口。
所述的mcu上的iic接口為由ip核實(shí)現(xiàn)的iic接口。
擴(kuò)展板上的每一條iic信號(hào)通路中設(shè)有雙向總線緩沖器。優(yōu)選p82b96芯片。
所述的mcu集成在核心板中。
核心板中還集成有現(xiàn)場(chǎng)可編程門陣列。如果mcu內(nèi)部具備現(xiàn)場(chǎng)可編程門陣列,如zc7020芯片等,可以由可編程門陣列實(shí)現(xiàn)iic接口功能,mcu并非必須具備該功能。
為實(shí)現(xiàn)擴(kuò)展板與mcu的電平匹配,在n個(gè)iic信號(hào)通路的第一端通過上拉電阻接直流電壓v1,v1為mcu的iic接口的基準(zhǔn)電壓。
為實(shí)現(xiàn)擴(kuò)展板與iic負(fù)載的電平匹配,在n個(gè)iic信號(hào)通路的第二端通過上拉電阻接直流電壓v2,v2為負(fù)載端的iic接口的基準(zhǔn)電壓。
作為優(yōu)選,n=4。
有益效果:
本發(fā)明的基于擴(kuò)展iic接口的裝置,通過擴(kuò)展板實(shí)現(xiàn)iic接口的擴(kuò)展。該裝置使得硬件電路板對(duì)下行iic從設(shè)備的采集更具兼容性,能夠滿足iic從設(shè)備的擴(kuò)展,支持多達(dá)四種不同總線電平的轉(zhuǎn)換。在從設(shè)備數(shù)量不多、iic總線電平種類少的情況下,擴(kuò)展板的緩沖芯片可進(jìn)行選擇性焊接,不會(huì)增加系統(tǒng)的額外成本。
本發(fā)明能解決以下技術(shù)問題:
1.解決接入iic從設(shè)備過多,cpu接口資源不夠的問題。
2.解決因iic從設(shè)備擴(kuò)展,硬件電路板兼容性不夠的問題。
3.解決從設(shè)備的數(shù)量和通訊距離受iic總線400pf容抗限制的問題。
4.解決iic從設(shè)備電平邏輯電平不統(tǒng)一的問題。
5.解決串行多路采集影響采集效率和實(shí)時(shí)性的問題。
附圖說明
圖1為基于擴(kuò)展iic接口的裝置的總體結(jié)構(gòu)框圖;
圖2為一路iic信號(hào)通路的連接示意圖;
圖3為總體流程圖;
圖4為具體任務(wù)調(diào)用流程圖;
圖5為接口0-3及電源接口定義示意圖;
圖6為某一個(gè)插接組件接口定義示意圖。
具體實(shí)施方式
以下將結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明做進(jìn)一步詳細(xì)說明:
實(shí)施例1:如圖1~6,一種基于擴(kuò)展iic接口的裝置,包括mcu和擴(kuò)展板;擴(kuò)展板上設(shè)有4條iic信號(hào)通路;所述的擴(kuò)展板上的4個(gè)iic信號(hào)通路的第一端分別與mcu上的4個(gè)iic接口相連;還具有m個(gè)iic設(shè)備,m>4。
所述的擴(kuò)展板上的4個(gè)iic信號(hào)通路的第二端分別連接4條iic總線。
所述的mcu上的iic接口為iic控制器的接口,即利用mcu上自帶的iic接口,具體為2個(gè)。
所述的mcu上的iic接口為由通用io口模擬的iic接口,即通過io接口模擬iic接口,具體為1個(gè)。
所述的mcu上的iic接口為由ip核實(shí)現(xiàn)的iic接口,即通過ip核來配置iic接口,具體為1個(gè)。
擴(kuò)展板上的每一條iic信號(hào)通路中設(shè)有雙向總線緩沖器。優(yōu)選p82b96芯片。
所述的mcu集成在核心板中。
核心板中還集成有現(xiàn)場(chǎng)可編程門陣列。
為實(shí)現(xiàn)擴(kuò)展板與mcu的電平匹配,在4個(gè)iic信號(hào)通路的第一端通過上拉電阻接直流電壓v1,v1為mcu的iic接口的基準(zhǔn)電壓,具體為3.3v。
為實(shí)現(xiàn)擴(kuò)展板與iic負(fù)載的電平匹配,在n個(gè)iic信號(hào)通路的第二端通過上拉電阻接直流電壓v2,v2為負(fù)載端的iic接口的基準(zhǔn)電壓,如為12v,也不一定為12v,視iic從設(shè)備工作電平而定,圖為以12v為例的一路總線連接情況。
本發(fā)明的多路iic擴(kuò)展的方法和裝置包括以下模塊:
核心板模塊,該模塊為包含cpu在內(nèi)的最小系統(tǒng)??梢霆?dú)立的4路iic接口iic0-iic3(可通過mcu內(nèi)置的iic控制器、io模擬或如zc7020等具備現(xiàn)場(chǎng)可編程門陣列mcu內(nèi)置的ip核實(shí)現(xiàn)),負(fù)責(zé)對(duì)iic設(shè)備發(fā)出讀寫時(shí)序、返回ack,并保存、解析、處理從設(shè)備的數(shù)據(jù)。
擴(kuò)展板模塊,該模塊為單獨(dú)的一塊電路板,其與核心板采用排線或接插件的方式進(jìn)行連接。對(duì)上層核心板有四組接口,分別連接核心板的四個(gè)iic控制器,對(duì)下有用于連接不同電平總線的4組電源接口和用于連接iic從設(shè)備的多組iic接口。板內(nèi)存在四個(gè)p82b96緩沖芯片用于提升系統(tǒng)可支持的iic從設(shè)備容抗,并將四種各異的總線邏輯電平轉(zhuǎn)換為mcu的電平大小。
p82b96為雙向總線緩沖器;p82b96是一款雙極性、內(nèi)部無鎖存、雙向邏輯接口器件,它提供標(biāo)準(zhǔn)i2c器件和遠(yuǎn)距離總線間的橋接,可以將不同電壓和電流級(jí)別的類似總線與i2c總線進(jìn)行橋接。該器件可橋接smbus(350μa)、3.3v邏輯器件,15v電平及低阻抗導(dǎo)線可以延長(zhǎng)通信距離,增加抗干擾能力。該器件對(duì)i2c總線協(xié)議和時(shí)鐘速率沒有特殊要求。p82b96能增加i2c總線節(jié)點(diǎn)上掛接的最小負(fù)載數(shù)、新總線負(fù)載數(shù)和遠(yuǎn)程i2c總線器件數(shù),且不會(huì)對(duì)本地節(jié)點(diǎn)造成影響。掛接器件數(shù)目和物理上的限制也會(huì)大大減小。通過平衡傳輸線(雙絞線)或光耦隔離(光纖)發(fā)送信號(hào),tx、rx結(jié)構(gòu)上的分隔使其發(fā)送變得簡(jiǎn)單,且tx和rx信號(hào)直接相連時(shí)而不會(huì)鎖死。
從設(shè)備模塊,該模塊為多種支持iic總線傳輸協(xié)議的智能采集傳感器,以在火車上的應(yīng)用場(chǎng)景為例,該模塊包含加速度傳感器、傾角傳感器、溫度傳感器和壓力傳感器等。同一類型或同總線電平幅值的傳感器接于同一接插件組,便于p82b96芯片將相應(yīng)的電平轉(zhuǎn)換到合適的閾值后將信號(hào)輸出至核心板。
下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號(hào)表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能理解為對(duì)本發(fā)明的限制。相反,本發(fā)明的實(shí)施例包括落入所附加權(quán)利要求書的精神和內(nèi)涵范圍內(nèi)的所有變化、修改和等同物。本部分的描述僅是示范性和解釋性,不應(yīng)對(duì)本發(fā)明的保護(hù)范圍有任何的限制作用。此外,本領(lǐng)域技術(shù)人員根據(jù)本文件的描述,可以對(duì)本文件中實(shí)施例中以及不同實(shí)施例中的特征進(jìn)行相應(yīng)組合。
在本發(fā)明的描述中,需要說明的是,除非另有明確的規(guī)定和限定,術(shù)語“相連”、“連接”應(yīng)做廣義理解,例如,可以是固定連接,也可以是可拆卸連接,或一體地連接;可以是機(jī)械連接,也可以是電連接;可以是直接相連,也可以通過中間媒介間接相連。對(duì)于本領(lǐng)域的普通技術(shù)人員而言,可以具體情況理解上述術(shù)語在本發(fā)明中的具體含義。此外,在本發(fā)明的描述中,除非另有說明,“多個(gè)”的含義是兩個(gè)或兩個(gè)以上。
流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括一個(gè)或更多個(gè)用于實(shí)現(xiàn)特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本發(fā)明的優(yōu)選實(shí)施方式的范圍包括另外的實(shí)現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時(shí)的方式或按相反的順序,來執(zhí)行功能,這應(yīng)被本發(fā)明的實(shí)施例所屬技術(shù)領(lǐng)域的技術(shù)人員所理解。
如圖2所示,是以mcu單路iic接口及其相應(yīng)電路為例的硬件連接示意圖。需要說明的是,圖2中以mcu的io口和供電電平為3.3v、傳感器引出的iic總線電平為12v、外接四個(gè)傳感器進(jìn)行說明僅是示意性的,本發(fā)明中負(fù)責(zé)采集的從iic設(shè)備數(shù)量和總線電平大小并無固定值,以四個(gè)傳感器和固定電平大小為例僅是為了清楚起見。
如圖2所示,以四個(gè)iic從設(shè)備為例。
mcu是iic通訊的發(fā)起者,即iic的主設(shè)備。mcu自身具備多個(gè)iic控制器,可通過配置相應(yīng)寄存器在總線上由芯片內(nèi)部電路自動(dòng)產(chǎn)生合適的iic時(shí)序,當(dāng)iic控制器數(shù)量不夠時(shí),可通過io口模擬iic時(shí)序完成iic通訊需求;此外,在一些具備現(xiàn)場(chǎng)可編程門陣列的mcu中,iic模塊也可通過ip核實(shí)現(xiàn)。當(dāng)需要采集數(shù)據(jù)時(shí),應(yīng)用程序根據(jù)固化的從設(shè)備地址形成相應(yīng)的傳輸字節(jié),通過寫iic控制寄存器和讀iic狀態(tài)寄存器完成數(shù)據(jù)的發(fā)送、接收和傳輸狀態(tài)的判斷。
mcu發(fā)送數(shù)據(jù)后,數(shù)據(jù)會(huì)傳輸至p82b96芯片的sx和sy引腳,經(jīng)芯片處理后向底層iic從設(shè)備傳輸。鑒于從設(shè)備上iic總線電平的區(qū)別,須將p82b96芯片下行端接口的上拉電阻設(shè)置成與iic從設(shè)備一致,而將上行端的上拉電阻設(shè)置為與mcu的io口電平一致,以完成iic總線的電平轉(zhuǎn)換功能。
mcu發(fā)出帶有從地址的數(shù)據(jù)后,與iic從設(shè)備相連的總線上將傳輸該數(shù)據(jù),而與該從地址匹配的設(shè)備會(huì)拉低總線(ack響應(yīng)),然后,mcu和該從設(shè)備才進(jìn)行下一步數(shù)據(jù)的交互。
多路iic數(shù)據(jù)采集的方法如圖3-4所示。
(1)通過bootloader進(jìn)行基本的寄存器初始化工作,為后面操作系統(tǒng)的運(yùn)行搭建嵌入式硬件環(huán)境。
(2)運(yùn)行ucosii操作系統(tǒng),并對(duì)mcu軟、硬件進(jìn)行進(jìn)一步的初始化和配置;并根據(jù)需要配置iic控制器或模擬io接口的引腳模式。
(3)創(chuàng)建四個(gè)任務(wù)塊分別進(jìn)行四路iic總線數(shù)據(jù)的采集,任務(wù)創(chuàng)建后,交給ucosii操作系統(tǒng)進(jìn)行任務(wù)的調(diào)度和管理。
(4)操作系統(tǒng)調(diào)度至任務(wù)一執(zhí)行后,任務(wù)一將確定需要訪問設(shè)備的從地址,并根據(jù)讀寫需求(設(shè)置bit0)生成一個(gè)字節(jié)的數(shù)據(jù)放入iic總線,如果地址匹配,mcu會(huì)檢測(cè)到ack位,然后進(jìn)行下一步的讀寫工作。
(5)當(dāng)前從設(shè)備交互結(jié)束后,會(huì)判斷下一個(gè)需要訪問的從設(shè)備并繼續(xù)進(jìn)行總線的讀寫。
采用實(shí)時(shí)操作系統(tǒng)進(jìn)行任務(wù)管理和調(diào)度,使得代碼更為簡(jiǎn)潔高效,且維護(hù)難度降低?,F(xiàn)有的應(yīng)用場(chǎng)景中,iic發(fā)送接收多在同一個(gè)線程中實(shí)現(xiàn),對(duì)從設(shè)備的訪問必須串行順序進(jìn)行,效率不高,本發(fā)明采用前、后臺(tái)結(jié)合的方式,可使四個(gè)任務(wù)塊在等待反饋的過程中自動(dòng)釋放cpu控制權(quán)進(jìn)行任務(wù)切換,直至被中斷喚醒后才會(huì)繼續(xù)執(zhí)行。