1.2 各模塊工作流程
主控制芯片C8051F120與RTL8019之間的接口是通過并行方式擴(kuò)展的,為避免RTL8019A在C8051F120上的映射地址空間與 C8051F120內(nèi)部的8KB RAM地址空間 (0X0000~0X3FFF)重迭,擴(kuò)展的外部設(shè)備被放到最高端(0X8000~0XFFFF),并采用非復(fù)用方式連接。模塊中還包括RS232與RS485之間的轉(zhuǎn)換。SN75LBC176是RS485差分總線收發(fā)器芯片。RS232數(shù)據(jù)由TX0通過光隔傳送到SN75LBC176的發(fā)送端 ,同時(shí)驅(qū)動(dòng)發(fā)送控制端,數(shù)據(jù)就由SN75LBC176發(fā)送到RS485總線。當(dāng)SN75LBC176接收數(shù)據(jù)時(shí),數(shù)據(jù)傳送到RS232的RX0端。這樣就完成RS485到RS232的轉(zhuǎn)換。在系統(tǒng)中,為了提供人機(jī)交互的功能,設(shè)計(jì)了T6963C點(diǎn)陣式液晶圖形顯示控制器,在設(shè)計(jì)時(shí),需要用一根地址線來實(shí)現(xiàn)液晶的數(shù)據(jù)通道和指令通道的區(qū)分。T6963C外接114×64的液晶顯示屏,可以提供監(jiān)測(cè)數(shù)據(jù)顯示的實(shí)例。
CAN總線模塊由SJA1000、82C250、6N137等芯片組成。SJA1000是并行接口的CAN控制器。82C250是CAN控制器接口芯片。當(dāng)C8051F120要向某節(jié)點(diǎn)發(fā)送數(shù)據(jù)時(shí),它向SJA1000的一些緩沖器寫數(shù)據(jù)和命令。數(shù)據(jù)通過SJA1000處理后,合成CAN幀格式,通過6N137至82C250,由82C250的差分端CANH和CANL傳送到物理總線。外部節(jié)點(diǎn)發(fā)送過來的數(shù)據(jù)通過82C250經(jīng)光電隔離器6N137后被SJA1000接收,存放在SJA1000相應(yīng)的寄存器中。C8051F120就可以讀取這些CAN幀格式數(shù)據(jù)。
LON模塊由MC143150、FTT-10A、MC145407以及外擴(kuò)SRAM儲(chǔ)存器IS61C256AH-15N和外擴(kuò)Flash存儲(chǔ)器AT29C512組成。MC143150是LonWorks控制芯片,含有Lontalk協(xié)議的固態(tài)軟件,主要用于LonWorks數(shù)據(jù)的處理。FTT-10A 是LonWorks收發(fā)器,它是一種變壓器耦合收發(fā)器,支持網(wǎng)絡(luò)的自由拓?fù)浣Y(jié)構(gòu),作為L(zhǎng)ON網(wǎng)的網(wǎng)絡(luò)介質(zhì)的接口。MC145407是電平轉(zhuǎn)換芯片,負(fù)責(zé)MC143150與RS232之間的電平轉(zhuǎn)換。當(dāng)C8051F120要向MC143150發(fā)送數(shù)據(jù)時(shí),C8051F120把數(shù)據(jù)發(fā)送到串口緩沖區(qū),通過MC145407將I/O引腳輸入的TTL 電平和輸出的CMOS 電平轉(zhuǎn)換為EIA232C電平。MC143150收到數(shù)據(jù)信息后,將數(shù)據(jù)讀入儲(chǔ)存于MC143150的緩沖區(qū)中,然后由MC143150 打包為L(zhǎng)onWorks網(wǎng)絡(luò)變量,通過不同節(jié)點(diǎn)、相同類型的網(wǎng)絡(luò)變量的互聯(lián), 即可實(shí)現(xiàn)LON 節(jié)點(diǎn)之間的數(shù)據(jù)傳送。另外,還外擴(kuò)SRAM儲(chǔ)存器IS61C256AH-15N和Flash存儲(chǔ)器AT29C512,讓用戶能編制使用較大的程序。
2 軟件設(shè)計(jì)
2.1 系統(tǒng)的分層結(jié)構(gòu)
整個(gè)系統(tǒng)采用分層方式完成各協(xié)議間的通信。系統(tǒng)分為硬件驅(qū)動(dòng)層、協(xié)議層及其應(yīng)用層,如圖2所示。
由于下層模塊只向上層提供一個(gè)軟件接口,屏蔽了下層的具體實(shí)現(xiàn)細(xì)節(jié)。上層軟件只有通過該接口才能與下層軟件發(fā)生聯(lián)系,這樣就保證了各層之間的獨(dú)立性。系統(tǒng)根據(jù)硬件接口、總線協(xié)議的不同,分為三個(gè)大的分層功能模塊,它們分別是LonWorks模塊、PPI模塊、 CANOPEN模塊。這些模塊又各自提供了硬件接收緩沖區(qū)、硬件發(fā)送緩沖區(qū)、協(xié)議接收緩沖區(qū)、協(xié)議發(fā)送緩沖區(qū)[4~5]。
[!--empirenews.page--]2.2 軟件實(shí)現(xiàn)的框架
系統(tǒng)的軟件分為系統(tǒng)初始化模塊、系統(tǒng)配置模塊、協(xié)議通信總調(diào)度模塊、三個(gè)協(xié)議實(shí)現(xiàn)模塊及硬件驅(qū)動(dòng)模塊。它們分別對(duì)應(yīng)系統(tǒng)軟件的不同分層。其中,系統(tǒng)配置模塊、協(xié)議間通信總調(diào)度模塊為應(yīng)用層程序。協(xié)議實(shí)現(xiàn)模塊(LonWorks協(xié)議模塊、PPI協(xié)議模塊、CANOpen協(xié)議模塊)為協(xié)議層程序。硬件驅(qū)動(dòng)模塊為硬件驅(qū)動(dòng)層程序。其流程圖如圖3所示。
系統(tǒng)配置模塊主要完成系統(tǒng)的配置。它包括總線各端口是配置為主模式還是從模式、各通信協(xié)議的波特率等。系統(tǒng)可以通過兩種方式配置:一種為硬件方式配置,另一種是通過互連網(wǎng)進(jìn)行軟件配置。協(xié)議間通信總調(diào)度模塊主要是驅(qū)動(dòng)不同協(xié)議之間進(jìn)行相互通信。各總線協(xié)議的格式解析分別由相應(yīng)的協(xié)議模塊完成。硬件驅(qū)動(dòng)模塊主要完成把各硬件緩沖區(qū)中的數(shù)據(jù)發(fā)送到總線,同時(shí)把從總線接收來的數(shù)據(jù)存放到協(xié)議緩沖區(qū)中。
2.3 緩沖區(qū)結(jié)構(gòu)
本系統(tǒng)的緩沖區(qū)采用改進(jìn)的循環(huán)隊(duì)列結(jié)構(gòu),采用了三個(gè)指針Bp.In、Bp.Out、Bp.Try。其中,Bp.In是隊(duì)頭指針。當(dāng)隊(duì)列接收一數(shù)據(jù)時(shí),如果隊(duì)列緩沖區(qū)尚有空間,則數(shù)據(jù)入隊(duì),同時(shí)Bp.In加1。Bp.Out是隊(duì)尾指針。當(dāng)數(shù)據(jù)要出隊(duì)時(shí), 如果隊(duì)列緩沖區(qū)非空,則Bp.Out加1。隊(duì)列緩沖區(qū)空或滿的判定方法可以用下面的偽C語言描述:
if(Bp.In++== Bp.Out)
{隊(duì)列緩沖區(qū)已滿};//如隊(duì)頭加1等于隊(duì)尾指針,則表示該隊(duì)列已滿
if(Bp.Out== Bp.In)
{隊(duì)列緩沖區(qū)已空};//如果隊(duì)尾指針趕上隊(duì)頭則表示該隊(duì)列已空
Bp.Try是為通信時(shí)重發(fā)而準(zhǔn)備的。當(dāng)要發(fā)送數(shù)據(jù)時(shí),Bp.Try向前移動(dòng)(Bp.Try++),但Bp.Out不動(dòng)(數(shù)據(jù)不出隊(duì))。當(dāng)Bp.Try=Bp.In時(shí),表示隊(duì)列緩沖區(qū)已沒有數(shù)據(jù)要發(fā)送。如果要求數(shù)據(jù)重發(fā),僅僅把Bp.Try重新指回Bp.Out(Bp.Try=Bp.Out)再次發(fā)送。只有當(dāng)發(fā)送成功時(shí),才允許數(shù)據(jù)出隊(duì)(Bp.Out= Bp.Try)。由于一次發(fā)送數(shù)據(jù)的多少由Bp.Try決定(一次不一定把隊(duì)列緩沖區(qū)數(shù)據(jù)都發(fā)送完),這樣給數(shù)據(jù)的發(fā)送提供了極大的方便。
2.4 硬件緩沖區(qū)
系統(tǒng)要發(fā)送數(shù)據(jù)時(shí)把發(fā)送協(xié)議緩沖區(qū)的數(shù)據(jù)拷貝到發(fā)送硬件緩沖區(qū),并驅(qū)動(dòng)一次發(fā)送后退出。硬件發(fā)送緩沖區(qū)中的數(shù)據(jù)是由發(fā)送中斷自動(dòng)完成的。硬件發(fā)送中斷驅(qū)動(dòng)完一次數(shù)據(jù)發(fā)送就退出。當(dāng)硬件發(fā)送完數(shù)據(jù)后就會(huì)產(chǎn)生中斷標(biāo)志并重新進(jìn)入中斷,重復(fù)上面的過程直到數(shù)據(jù)發(fā)送完。同樣,發(fā)送中斷只負(fù)責(zé)發(fā)送完硬件發(fā)送緩沖區(qū)中的數(shù)據(jù)而不關(guān)心這些數(shù)據(jù)代表的意義。中斷程序流程圖如圖4所示。
2.5 各總線協(xié)議間的通信方法
各總線協(xié)議間通信是采用周期輪詢方式下的實(shí)地址共享。其基本思想就是系統(tǒng)定時(shí)地由配置為主模式的端口向其對(duì)應(yīng)總線的每個(gè)從機(jī)發(fā)送請(qǐng)求讀數(shù)命令包。從機(jī)接收到命令后就把它的數(shù)據(jù)傳送給主機(jī)(總線集成器)。主機(jī)把接收到的數(shù)據(jù)存放在對(duì)應(yīng)的協(xié)議地址中。當(dāng)配置為從機(jī)的端口所對(duì)應(yīng)的總線上的主機(jī)向總線集成器請(qǐng)求數(shù)據(jù)時(shí),總線集成器只是簡(jiǎn)單地把前一個(gè)周期輪詢的數(shù)據(jù)應(yīng)答過去。由于輪詢總線的周期比較短,因此應(yīng)答的數(shù)據(jù)稍微滯后。但對(duì)總線采集的數(shù)據(jù)的真實(shí)性影響不大。
下面以圖5中 CANOpen總線的節(jié)點(diǎn)B向LonWorks節(jié)點(diǎn)A請(qǐng)求數(shù)據(jù)為例來說明這種方式的通信過程。首先,系統(tǒng)周期性地改變從機(jī)號(hào)、通信命令、通信狀態(tài),向LonWorks所有的從機(jī)請(qǐng)求數(shù)據(jù),從機(jī)應(yīng)答的數(shù)據(jù)存放在其協(xié)議地址中。然后CANOpen主節(jié)點(diǎn)B向總線集成器請(qǐng)求LonWorks總線A節(jié)點(diǎn)中的數(shù)據(jù)。最后,總線集成器收到該命令,把剛采集到的協(xié)議地址上的值傳送給節(jié)點(diǎn)B。這一次通信至此結(jié)束。
該多協(xié)議總線集成器目前提供了對(duì)LonWorks、PPI、CANOpen的支持,并且還對(duì)上面三種協(xié)議提供了利用TCP/IP遠(yuǎn)程監(jiān)控和配置的接口,人機(jī)界面使系統(tǒng)有較好的監(jiān)測(cè)能力。由于該集成器采用了較高性能的處理器,使各個(gè)協(xié)議之間通訊實(shí)時(shí)性得到保證。為了有利于系統(tǒng)以后的擴(kuò)展,整個(gè)總線集成器系統(tǒng)嚴(yán)格按照模塊化來進(jìn)行硬件設(shè)計(jì)和軟件編程,使系統(tǒng)軟件的移植性大大提高。
經(jīng)過幾十年發(fā)展,嵌入式技術(shù)已經(jīng)用在了我們生活中的方方面面,但是嵌入式始終都帶有小眾,專業(yè)性強(qiáng)的屬性,讓很多非嵌入式領(lǐng)域的同學(xué)望而卻步。近十幾年的發(fā)展,物聯(lián)網(wǎng)覆蓋了越來越多領(lǐng)域,包括了家居,商業(yè),工業(yè),農(nóng)業(yè)等領(lǐng)域,不僅吸引...
關(guān)鍵字: 嵌入式 物聯(lián)網(wǎng) 技術(shù)隨著IT技術(shù)飛速發(fā)展,互聯(lián)網(wǎng)已經(jīng)進(jìn)入了“物聯(lián)網(wǎng)”時(shí)代。物聯(lián)網(wǎng)中需要的大量設(shè)備不在依賴人與人之間的交互產(chǎn)生聯(lián)系,更多通過協(xié)議、通信、程序設(shè)計(jì)等方式連接到一處。即 “物聯(lián)網(wǎng)”的目的則是讓所有的物品都具有計(jì)算機(jī)的智能但并不以通...
關(guān)鍵字: 嵌入式 物聯(lián)網(wǎng) 計(jì)算機(jī)萬物智聯(lián)時(shí)代,嵌入式技術(shù)及其應(yīng)用的形態(tài)將更加豐富和多元,同時(shí)也將日益呈現(xiàn)深度物理融合、混合架構(gòu)共存、群體智能協(xié)同、網(wǎng)絡(luò)安全攸關(guān)等諸多新的計(jì)算特性。顯然,經(jīng)典的嵌入式系統(tǒng)體系結(jié)構(gòu)、軟硬件技術(shù)和開發(fā)方法都已很難應(yīng)對(duì)新趨勢(shì)下的...
關(guān)鍵字: 嵌入式 物聯(lián)網(wǎng) 計(jì)算機(jī)物聯(lián)網(wǎng)是新一代信息技術(shù)的重要組成部分,是互聯(lián)網(wǎng)與嵌入式系統(tǒng)發(fā)展到高級(jí)階段的融合。通用計(jì)算機(jī)經(jīng)歷了從智慧平臺(tái)到互聯(lián)網(wǎng)的獨(dú)立發(fā)展道路;嵌入式系統(tǒng)則經(jīng)歷了智慧物聯(lián)到局域智慧物聯(lián)的獨(dú)立發(fā)展道路。
關(guān)鍵字: 嵌入式 物聯(lián)網(wǎng) 計(jì)算機(jī)隨著工業(yè)4.0、醫(yī)療電子、智能家居、物流管理和電力控制等快速的發(fā)展和推進(jìn),嵌入式系統(tǒng)利用自身的技術(shù)特點(diǎn),逐漸成為眾多行業(yè)的標(biāo)配產(chǎn)品。嵌入式系統(tǒng)具有可控制、可編程、成本低等,它在未來的工業(yè)和生活中有著廣闊的應(yīng)用前景。在現(xiàn)在...
關(guān)鍵字: 嵌入式 物聯(lián)網(wǎng) 人工智能長(zhǎng)久來看,嵌入式只會(huì)越來越火,隨著人工智能時(shí)代的發(fā)展,嵌入式必定又將迎來一次浪潮和技術(shù)的巨大變革。人工智能越是想要表達(dá)智能水平,就越要依靠嵌入式技術(shù),嵌入式技術(shù)將朝著自動(dòng)化控制和人機(jī)交互發(fā)展。嵌入式因其體積小、可靠性高、...
關(guān)鍵字: 嵌入式 物聯(lián)網(wǎng) 人工智能沙特阿拉伯利雅得2022年9月27日 /美通社/ -- 麥加朝覲部今天宣布推出沙特官方集成數(shù)字平臺(tái)Nusuk(nusuk.sa),為所有朝圣者和游客提供一個(gè)簡(jiǎn)單易用的行程規(guī)劃門戶,便于他們前往麥加和麥地那。這一電子平臺(tái)旨...
關(guān)鍵字: 數(shù)字平臺(tái) 電子 集成 許可證