• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      I2C總線技術(shù)在艦船能量管理系統(tǒng)I/O端口擴(kuò)展中的應(yīng)用

      2019-02-13 02:33:10許智豪李維波華逸飛徐聰范磊
      中國艦船研究 2019年1期
      關(guān)鍵詞:字節(jié)電平端口

      許智豪,李維波,華逸飛,徐聰,范磊

      武漢理工大學(xué)自動(dòng)化學(xué)院,湖北武漢430070

      0 引 言

      艦船能量管理系統(tǒng)適用于發(fā)電自動(dòng)化、系統(tǒng)監(jiān)測(cè)報(bào)警、輸配電監(jiān)控保護(hù)以及用電設(shè)備的監(jiān)控管理,是綜合電力艦船的核心控制部分之一。在能量管理系統(tǒng)中,底層控制器的數(shù)量很多,并且需要采集、發(fā)送大量的I/O指令信號(hào)和狀態(tài)信號(hào)。如果將底層控制器的各個(gè)部件、外圍設(shè)備、I/O端口都分別采用獨(dú)立的線路與微處理器直接連接,那么連線將會(huì)錯(cuò)綜復(fù)雜,甚至難以實(shí)現(xiàn)。所以,有必要采用總線技術(shù)并借助I/O端口擴(kuò)展處理芯片,從而最大限度地集成化處理數(shù)量龐大的數(shù)字量信號(hào)。

      目前,I2C(Inter Integrated Circuit,I2C)總線主要應(yīng)用于各類傳感器、模數(shù)轉(zhuǎn)換器、存儲(chǔ)芯片、實(shí)時(shí)時(shí)鐘芯片等數(shù)據(jù)處理芯片中。相較于其他總線接口,其結(jié)構(gòu)簡(jiǎn)單、擴(kuò)展性強(qiáng),故可廣泛應(yīng)用于各種數(shù)據(jù)采集系統(tǒng),例如云服務(wù)器中的智能家居控制系統(tǒng)[1],以及在移動(dòng)智能終端領(lǐng)域中利用I2C總線集中處理智能終端的多種傳感器[2]。

      I2C總線具備良好的可移植性,可以利用軟件模擬I2C時(shí)序,并擺脫了處理器中I2C控制器的引腳范圍限制。但同時(shí),I2C也增加了軟件處理的過程,降低了處理器效率,存在可靠性不高的缺點(diǎn),可能會(huì)在數(shù)據(jù)傳輸過程中丟失或改變數(shù)據(jù)。為了提高I2C信號(hào)傳輸?shù)目煽啃?,本文將增加I2C驅(qū)動(dòng)芯片和專用隔離芯片,以保證其波形的穩(wěn)定性。將介紹通過I2C總線采集控制大容量數(shù)據(jù)的方法,即CPU僅依靠串行數(shù)據(jù)線(Serial Data,SDA)和串行時(shí)鐘線(Serial Clock,SCL)來實(shí)現(xiàn)與多個(gè)外圍器件之間的全雙工數(shù)據(jù)傳輸。I2C總線系統(tǒng)為串行接口,傳輸速率快且結(jié)構(gòu)簡(jiǎn)單,一條I2C總線上可以連接多個(gè)具有I2C接口的設(shè)備。通過硬件外圍電路即可確定各個(gè)器件的地址,再利用軟件尋址即可方便地?cái)U(kuò)展多型設(shè)備。本文將基于單片機(jī)的普通I/O端口和軟件編程來模擬I2C總線,從而實(shí)現(xiàn)高級(jí)精簡(jiǎn)指令集機(jī)器(Advanced RISC Machine,ARM)與 I2C接口器件之間的可靠通信[3-4]。

      1 能量管理系統(tǒng)的硬件架構(gòu)

      為了保證艦船能量管理系統(tǒng)的正常運(yùn)行,需要采集多路數(shù)字量來獲取當(dāng)前電站的運(yùn)行狀態(tài),并根據(jù)讀入的數(shù)字量和集控臺(tái)下達(dá)的指令來輸出相應(yīng)的數(shù)字量信號(hào),用以控制各底層設(shè)備。圖1所示為基于ARM控制器的能量管理系統(tǒng)的硬件架構(gòu),其主要由頂層集控臺(tái)、數(shù)字量信號(hào)處理模塊及底層各個(gè)電站的開關(guān)量信號(hào)組成。首先,由具備光耦隔離功能的數(shù)字量采集模塊獲取各個(gè)艦船電站的出口斷路器狀態(tài)信號(hào)、反饋量信號(hào)和配電板輸入指令信號(hào)等;然后,通過I2C總線將所有的數(shù)字量輸入電平信號(hào)傳輸至信號(hào)處理控制器,隨即進(jìn)行信號(hào)處理;最后,通過CAN總線和以太網(wǎng)與集控臺(tái)進(jìn)行數(shù)據(jù)交互。同時(shí),當(dāng)集控臺(tái)發(fā)出指令操作數(shù)字量控制器時(shí),信號(hào)處理控制器可以根據(jù)所采集的信號(hào)來控制參考電壓,從而選擇接觸器、電源出口斷路器分合閘、配電板指示燈等被控對(duì)象并完成相應(yīng)的邏輯互鎖等判斷工作,用以避免底層器件的誤操作情況。

      圖1 基于ARM控制器的能量管理系統(tǒng)的硬件架構(gòu)Fig.1 Hardware architecture of the energy manage system based on ARM controller

      2 數(shù)字量信號(hào)處理硬件的拓?fù)浣Y(jié)構(gòu)

      信號(hào)處理的硬件部分主要由CPU最小系統(tǒng)、I2C專用隔離芯片、I2C驅(qū)動(dòng)芯片、基于I2C總線的I/O端口擴(kuò)展芯片及光耦隔離芯片組成,基本結(jié)構(gòu)如圖2所示。首先,ARM輸出的信號(hào)通過I2C專用隔離芯片構(gòu)成第1級(jí)隔離,以保證ARM讀取數(shù)據(jù)的抗干擾能力;然后,通過I2C驅(qū)動(dòng)芯片使隔離后的I2C信號(hào)能夠?qū)Χ嗦稩/O端口擴(kuò)展芯片進(jìn)行操作;最后,經(jīng)由光耦隔離芯片構(gòu)成的第2級(jí)隔離,I/O端口擴(kuò)展芯片接收或控制外部數(shù)字量信號(hào),用以防止外部干擾影響系統(tǒng)內(nèi)部的處理電路。

      其中,I/O端口擴(kuò)展芯片可以配置為輸入模式或輸出模式。當(dāng)CPU將其配置為輸入模式時(shí),芯片將讀取外擴(kuò)的8路輸入信號(hào)的電平狀態(tài)并將其轉(zhuǎn)換為I2C信號(hào),在時(shí)鐘信號(hào)的配合下,可將數(shù)據(jù)信號(hào)經(jīng)由驅(qū)動(dòng)芯片和隔離芯片傳輸至CPU;當(dāng)CPU將其配置為輸出模式時(shí),芯片將讀取經(jīng)由隔離芯片和驅(qū)動(dòng)芯片放大的I2C數(shù)據(jù),并在時(shí)鐘信號(hào)的配合下由擴(kuò)展芯片轉(zhuǎn)換為電平信號(hào),用以驅(qū)動(dòng)光耦隔離芯片輸出數(shù)字量[5-6]。

      圖2 數(shù)字量信號(hào)處理硬件的拓?fù)浣Y(jié)構(gòu)Fig.2 Topology of the digital signal processing hardware

      2.1 I/O端口擴(kuò)展芯片

      本文將選用TI公司的PCA9554/54A系列芯片,該芯片可以提供8位通用并行輸入/輸出端口(General Purpose Input Output,GPIO)的擴(kuò)展功能,其內(nèi)部結(jié)構(gòu)如圖3所示,主要由I2C總線控制器、移位寄存器、中斷控制器等模塊組成。通過I2C總線控制器與移位寄存器的配合,PCA9554/54A可將其讀取的I2C數(shù)據(jù)轉(zhuǎn)換為8路輸出信號(hào),或在讀取8路輸入狀態(tài)后通過I2C總線將數(shù)據(jù)傳輸至控制器處理。其中,上電復(fù)位模塊可將所有寄存器設(shè)置為默認(rèn)值并將器件狀態(tài)初始化。

      圖3 PCA9554芯片的內(nèi)部結(jié)構(gòu)示意圖Fig.3 Schematic diagram of internal structure of PCA9554 chip

      PCA9554/54A設(shè)置了 3個(gè)管腳(A0,A1,A2)來確定芯片的地址,最多可允許8個(gè)器件共用一條I2C總線。PCA9554與PCA9554A的唯一區(qū)別在于固定I2C的地址不同,理論上最多可以允許16個(gè)器件(9554和9554A各8個(gè))連接到同一條I2C總線上。

      2.2 I2C專用隔離芯片

      本文將選用ADI公司的ADM3260產(chǎn)品作為I2C隔離芯片,其內(nèi)部結(jié)構(gòu)如圖4所示。該芯片集成了數(shù)據(jù)信號(hào)隔離模塊和電源隔離模塊,可以有效減小外部的共模干擾信號(hào)。芯片可以在高達(dá)1 MHz的通信頻率下處理雙向I2C通道信號(hào),從而滿足本文對(duì)數(shù)字信號(hào)控制的響應(yīng)速度要求。

      圖4 隔離芯片的內(nèi)部結(jié)構(gòu)示意圖Fig.4 Schematic diagram of internal structure of isolated chip

      2.3 I2C驅(qū)動(dòng)芯片

      本文將選用TI公司的PCA9517芯片作為I2C信號(hào)的驅(qū)動(dòng)芯片,其內(nèi)部結(jié)構(gòu)如圖5所示。由圖5可知,該驅(qū)動(dòng)芯片采用了開漏機(jī)制,故器件本身只能輸出低電平而無法主動(dòng)輸出高電平,除非通過外部上拉電阻將信號(hào)拉至高電平,因此必須在I2C總線上設(shè)置上拉電阻。由于PCA9517芯片引腳的最大灌電流為6 mA,故對(duì)于5 V的上拉電平而言,上拉電阻不宜低于1 kΩ,以免損壞芯片端口或?qū)е螺敵龅碗娖降姆翟黾印?/p>

      圖5 I2C驅(qū)動(dòng)芯片的內(nèi)部結(jié)構(gòu)示意圖Fig.5 Schematic diagram of internal structure of I2C drive chip

      3 I2C總線擴(kuò)展I/O端口的實(shí)現(xiàn)方法

      3.1 I2C總線的原理

      I2C總線由一條SDA和一條SCL組成,從設(shè)備將在SCL時(shí)鐘信號(hào)的控制下讀取主設(shè)備傳輸?shù)臄?shù)據(jù)信號(hào)。當(dāng)時(shí)鐘信號(hào)為高時(shí),讀取數(shù)據(jù)線的電平信號(hào);時(shí)鐘信號(hào)為低時(shí),允許改變數(shù)據(jù)線的電平信號(hào)。根據(jù)選用的從設(shè)備通信協(xié)議,可以對(duì)從設(shè)備進(jìn)行尋址和數(shù)據(jù)傳輸。

      啟動(dòng)I2C總線后,主機(jī)即可對(duì)從設(shè)備進(jìn)行尋址操作。I2C從設(shè)備的地址為1個(gè)字節(jié),即需要8個(gè)時(shí)間周期來完成尋址操作,若某個(gè)從設(shè)備的地址對(duì)應(yīng)主機(jī)發(fā)送的地址,該從設(shè)備便在下一個(gè)時(shí)鐘周期反饋一個(gè)應(yīng)答信號(hào),之后即可讀取從設(shè)備的數(shù)據(jù)信息或?qū)υ搹脑O(shè)備進(jìn)行寫操作。分析了I2C的讀取時(shí)序之后,即可利用普通I/O端口模擬I2C時(shí)序[7-9]。

      當(dāng)SCL為高時(shí),SDA由高到低的跳變定義為啟動(dòng)信號(hào);當(dāng)SCL為低時(shí),SDA由低到高的跳變定義為停止信號(hào)。

      發(fā)送設(shè)備每發(fā)送1個(gè)字節(jié),就在下一個(gè)時(shí)鐘周期內(nèi)開始讀取應(yīng)答信號(hào)狀態(tài),由此來判斷接收設(shè)備是否正確收到了該字節(jié)。當(dāng)應(yīng)答信號(hào)為低電平時(shí),表示接收設(shè)備已成功接收該字節(jié),即為有效應(yīng)答信號(hào)(Acknowledgment,ACK);當(dāng)應(yīng)答信號(hào)為高電平時(shí),一般表示接收設(shè)備未成功接收該字節(jié),即為非應(yīng)答信號(hào)(Negative Acknowledgment,NACK)。

      由于需要在時(shí)鐘信號(hào)為高時(shí)讀取數(shù)據(jù),所以當(dāng)從設(shè)備為發(fā)送設(shè)備、主設(shè)備為接收設(shè)備時(shí),ACK波形應(yīng)在時(shí)鐘信號(hào)為高時(shí)保持為低。如果主設(shè)備為發(fā)送設(shè)備,則當(dāng)其收到1個(gè)字節(jié)后即發(fā)送1個(gè)NACK信號(hào),用以通知被控發(fā)送器結(jié)束數(shù)據(jù)發(fā)送,并產(chǎn)生一個(gè)停止信號(hào),由此結(jié)束I2C總線的本輪操作。

      在I2C總線上傳送的每一位數(shù)據(jù)都有一個(gè)時(shí)鐘脈沖與之對(duì)應(yīng)(或同步控制),即在SCL串行時(shí)鐘的配合下,在SDA上逐位串行傳送每一位數(shù)據(jù)。

      3.2 I/O端口擴(kuò)展的方法

      圖6所示為I2C總線啟、停信號(hào)的軟件模擬方法。首先,根據(jù)I2C總線的啟動(dòng)信號(hào)和停止信號(hào)波形將時(shí)鐘信號(hào)保持為高電平,延時(shí)4 μs后,將數(shù)據(jù)信號(hào)電平由高設(shè)置為低;然后,發(fā)出啟動(dòng)信號(hào),再將時(shí)鐘信號(hào)設(shè)置為低電平,準(zhǔn)備發(fā)送或接收數(shù)據(jù);最后,在發(fā)送停止時(shí)將時(shí)鐘信號(hào)保持為高電平,延時(shí)4 μs后,將數(shù)據(jù)信號(hào)電平由低設(shè)置為高。

      圖6 I2C總線啟、停信號(hào)的軟件實(shí)現(xiàn)方法Fig.6 Software implementation method of I2C bus start and stop signal

      發(fā)送啟動(dòng)信號(hào)后,將由控制器發(fā)送芯片的地址。芯片地址實(shí)際上由硬件電路決定,地址長(zhǎng)度為1個(gè)字節(jié),其中前7位為地址,第8位為數(shù)據(jù)方向位,這個(gè)方向位也決定了下一個(gè)操作是接收還是發(fā)送。當(dāng)主機(jī)收到該數(shù)據(jù)的應(yīng)答后,將寫入1個(gè)字節(jié)的控制指令,0x00表示PCA9554之后的輸入端口寄存器,0x01表示輸出端口寄存器,0x03則表示輸入/輸出模式配置。若0x03設(shè)置為輸入模式,則依次讀取擴(kuò)展的8路輸入信號(hào);若0x03設(shè)置為輸出模式,則發(fā)送1個(gè)字節(jié)以控制擴(kuò)展的8路輸出信號(hào)。I/O端口擴(kuò)展芯片PCA9554的寫數(shù)據(jù)和讀數(shù)據(jù)的時(shí)序如圖7所示,其中n為端口數(shù)據(jù)量。

      圖7 I/O端口擴(kuò)展芯片PCA9554的寫數(shù)據(jù)和讀數(shù)據(jù)時(shí)序圖Fig.7 Timing diagram of writing data and reading data for I/O port extension chip PCA9554

      4 工程應(yīng)用示例

      本數(shù)字量處理模塊的主要應(yīng)用目標(biāo)為控制艦船能量管理系統(tǒng)的各個(gè)電站開關(guān)量,為了驗(yàn)證工程應(yīng)用效果,本文設(shè)計(jì)了一塊含有64路撥碼開關(guān)(數(shù)字量輸入)與64路LED發(fā)光二極管(數(shù)字量輸出)的工裝板。當(dāng)撥通某一路輸入開關(guān)時(shí),相應(yīng)的LED燈便會(huì)發(fā)光,以驗(yàn)證數(shù)字量采集、處理、輸出整個(gè)環(huán)節(jié)的可靠性。通過I2C總線向PCA9554寫入字節(jié)的波形如圖8所示。

      在CPU發(fā)出啟動(dòng)信號(hào)后的8個(gè)周期內(nèi),SDA將發(fā)出1個(gè)字節(jié)的地址信號(hào)0x4A,對(duì)應(yīng)于輸出板的第5塊芯片。收到應(yīng)答信號(hào)后,即可認(rèn)為CPU與該芯片通信正常。

      在本輪操作之后的8個(gè)周期內(nèi),SDA將發(fā)出1個(gè)字節(jié)的控制命令0x01,即將該芯片配置為輸出模式。收到應(yīng)答信號(hào)后,CPU將控制該芯片輸出設(shè)定的數(shù)據(jù)字節(jié)0xAA,而工裝板上的輸出狀態(tài)也為0xAA。

      圖8 通過I2C總線向PCA9554寫入字節(jié)的波形圖Fig.8 The waveform of bytes is written to PCA9554 via the I2C bus

      由圖8可知,模擬I2C總線時(shí)序可以有效控制I/O端口擴(kuò)展芯片,從而實(shí)現(xiàn)I/O端口的擴(kuò)展工作。

      目前,本文提出的艦船能量管理系統(tǒng)的數(shù)字量處理模塊已完成電磁干擾試驗(yàn)和環(huán)境試驗(yàn),并已進(jìn)行實(shí)船安裝且運(yùn)行狀態(tài)良好。

      若從設(shè)備存在問題,則將會(huì)出現(xiàn)如圖9所示的情況[5]。即接受1個(gè)字節(jié)數(shù)據(jù)后,從設(shè)備向CPU發(fā)出1幀非應(yīng)答信號(hào),隨后CPU將直接發(fā)送停止信號(hào),并不再對(duì)該芯片進(jìn)行操作。

      圖9 非應(yīng)答信號(hào)的處理波形Fig.9 The processing waveform of negative acknowledgment

      5 結(jié) 語

      本文采用軟件編程模擬I2C總線的方法,利用2個(gè)GPIO端口實(shí)現(xiàn)了對(duì)I2C總線接口器件的訪問,擴(kuò)大了串行擴(kuò)展總線I2C器件的應(yīng)用范圍。通過采用PCA9554/54A芯片,可以最多擴(kuò)展128個(gè)I/O端口,有效節(jié)約了芯片的引腳資源,簡(jiǎn)化了系統(tǒng)結(jié)構(gòu),并使得多個(gè)數(shù)字量的采集與控制工作不再受單片機(jī)自身I/O端口不足的限制。通過專用芯片ADM3260,可以將I2C信號(hào)進(jìn)行隔離,并適當(dāng)增加I2C信號(hào)的電平延時(shí)時(shí)間,從而大為提高系統(tǒng)的可靠性。該系統(tǒng)易于移植到其他單片機(jī)系統(tǒng)上,在工業(yè)控制領(lǐng)域具備一定的推廣與參考價(jià)值。

      然而,采用軟件模擬I2C波形時(shí),雖然精簡(jiǎn)了硬件資源,但也占用了較多的CPU資源,故其數(shù)據(jù)處理時(shí)間比直接引腳訪問增加了100倍以上。因此,在設(shè)計(jì)系統(tǒng)時(shí)需要統(tǒng)籌考慮,應(yīng)在滿足時(shí)序需求的情況下盡量減少硬件資源的占用。

      猜你喜歡
      字節(jié)電平端口
      No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
      一種端口故障的解決方案
      No.10 “字節(jié)跳動(dòng)手機(jī)”要來了?
      端口阻塞與優(yōu)先級(jí)
      簡(jiǎn)談MC7字節(jié)碼
      NPC五電平Z源逆變器的設(shè)計(jì)研究
      初識(shí)電腦端口
      電腦迷(2015年6期)2015-05-30 08:52:42
      生成樹協(xié)議實(shí)例探討
      基于三電平光伏并網(wǎng)逆變器控制系統(tǒng)的研究與實(shí)踐
      基于NPC三電平變換器的STATCOM研究
      泽普县| 阿荣旗| 商水县| 连平县| 宁城县| 汝城县| 石景山区| 嘉善县| 孟连| 昌都县| 宜春市| 芦山县| 雷州市| 波密县| 伊宁市| 九寨沟县| 南澳县| 荔波县| 江陵县| 巴南区| 石棉县| 富锦市| 婺源县| 平和县| 宜黄县| 枣阳市| 随州市| 衡阳市| 灵武市| 古丈县| 吴川市| 香格里拉县| 高密市| 香河县| 隆林| 金寨县| 贵南县| 杭锦后旗| 左贡县| 海淀区| 江达县|