本發(fā)明涉及通信、消防等領(lǐng)域,特別是一種中繼器及其數(shù)據(jù)傳輸?shù)目刂品椒ā?/p>
背景技術(shù):
在消防監(jiān)控系統(tǒng)內(nèi),電源電能是主要的監(jiān)測(cè)指標(biāo)之一。而在一幢樓內(nèi)往往有成千上百的檢測(cè)節(jié)點(diǎn),這樣我們想對(duì)每個(gè)節(jié)點(diǎn)數(shù)的數(shù)據(jù)進(jìn)行集中監(jiān)控,就需要一種支持分布式控制和實(shí)時(shí)控制的現(xiàn)場(chǎng)總線,將各個(gè)節(jié)點(diǎn)串起來(lái),進(jìn)行數(shù)據(jù)的采集和傳輸。CAN總線恰好符合這一需求。
CAN總線是一種多主方式的串行通信總線,具有優(yōu)良的穩(wěn)定性、實(shí)時(shí)性、遠(yuǎn)程通信能力以及超強(qiáng)的硬件CRC糾錯(cuò)等特性;CAN總線技術(shù)的應(yīng)用不再僅限于汽車行業(yè),而是擴(kuò)展到了機(jī)械、紡織、控制等行業(yè),并被公認(rèn)為是最有前途的現(xiàn)場(chǎng)總線之一。然而由于受制于CAN收發(fā)器,CAN總線通信距離和網(wǎng)絡(luò)中節(jié)點(diǎn)數(shù)被分別限制在10 km和110個(gè)之內(nèi)。但是在稍大型的CAN總線系統(tǒng)中,這往往是不夠的,這時(shí)就需要用CAN總線中繼器對(duì)CAN總線網(wǎng)絡(luò)進(jìn)行擴(kuò)展。
在CAN總線擴(kuò)展時(shí),需要利用CAN中繼器。而現(xiàn)有的CAN中繼器設(shè)計(jì)大多采用MCU加CAN控制器的雙芯片或多芯片解決方案。在處理數(shù)據(jù)或信息傳送過程中,實(shí)現(xiàn)具有不同波特率的CAN總線數(shù)據(jù)或信息傳遞中轉(zhuǎn)時(shí),其處理器的負(fù)荷較大,難以滿足大型CAN總線網(wǎng)絡(luò)的數(shù)據(jù)或信息的高效傳輸。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)上述問題,本發(fā)明提供了一種中繼器,解決了現(xiàn)有技術(shù)中一種或以上的技術(shù)問題,滿足了CAN總線網(wǎng)絡(luò)的數(shù)據(jù)或信息的高效傳輸。
本發(fā)明的技術(shù)方案是:一種中繼器,包括
一第一CAN收發(fā)器,用于與其對(duì)應(yīng)連接的CAN總線進(jìn)行數(shù)據(jù)或信息的傳遞;
一第二CAN收發(fā)器,用于與其對(duì)應(yīng)連接的CAN總線進(jìn)行數(shù)據(jù)或信息的傳遞;
一第一撥碼開關(guān),用于配置一ID信息;
一第二撥碼開關(guān),用于配置一第一波特率、第二波特率以及一第一BOOT模式、一第二BOOT模式;
一微控制器,所述第一CAN收發(fā)器、第二CAN收發(fā)器、第一撥碼開關(guān)、第二撥碼開關(guān)均連接于所述微控制器;
所述微控制器用于從所述第一撥碼開關(guān)讀取ID信息;以及用于將該ID信息設(shè)置為該中繼器的ID信息;以及用于從所述第二撥碼開關(guān)讀取所述第一波特率和第二波特率以及所述第一BOOT模式和第二BOOT模式;以及用于將所述第一波特率、第一BOOT模式配置給所述第一CAN收發(fā)器,將所述第二波特率、第二BOOT模式配置給所述第二CAN收發(fā)器;以及用于控制所述第一CAN收發(fā)器、第二CAN收發(fā)器數(shù)據(jù)或信息的接收和發(fā)送。
在本發(fā)明一實(shí)施例中,所述中繼器還包括一時(shí)鐘模塊,連接于所述微控制器,所述時(shí)鐘模塊用于設(shè)定延時(shí)時(shí)間;所述微控制器還用于定義和存儲(chǔ)一接收中斷標(biāo)志;以及用于根據(jù)所述第一波特率、第二波特率配置所述第一CAN收發(fā)器、第二CAN收發(fā)器的分頻系數(shù);
用于將該ID信息配置為第一CAN收發(fā)器和第二CAN收發(fā)器的數(shù)據(jù)幀標(biāo)準(zhǔn)ID信息。
所述第一撥碼開關(guān)包括8位撥碼,其配置的ID信息范圍為0~255。
所述第二撥碼開關(guān)包括8位撥碼,其中,前兩位撥碼用于配置BOOT0和BOOT1的電平狀態(tài),以配置所述微控制器復(fù)位后程序的啟動(dòng)區(qū)域;第三位到第五位撥碼用于配置第一波特率,第六位到第八位用于配置第二波特率。
在本發(fā)明一實(shí)施例中,所述中繼器還包括
一SWD模塊,連接于所述微控制器,所述SWD模塊用于程序的更新下載調(diào)試;
一USB接口模塊,連接于所述微控制器;
一RS485收發(fā)器,連接于所述微控制器;
一指示燈模塊,連接于所述微控制器。
本發(fā)明還公開了一種中繼器的數(shù)據(jù)傳遞控制方法。
實(shí)現(xiàn)上述目的的技術(shù)方案是:一種中繼器的數(shù)據(jù)傳遞控制方法,包括以下步驟,
S1)手動(dòng)設(shè)置所述第一撥碼開關(guān),配置一ID信息;手動(dòng)設(shè)置所述第二撥碼開關(guān),配置一第一波特率、第二波特率以及以及芯片復(fù)位后程序的啟動(dòng)區(qū)域;
S2)啟動(dòng)中繼器,所述微控制器從所述第一撥碼開關(guān)讀取所述ID信息,并將所述ID信息配置為所述中繼器的ID信息;
S3)初始化設(shè)置所述第一CAN收發(fā)器、第二CAN收發(fā)器:包括以下步驟,
S31)所述微控制器從所述第二撥碼開關(guān)讀取所述第一波特率、第二波特率以及BOOT0和BOOT1的設(shè)置的電瓶狀態(tài),并將所述第一波特率配置給所述第一CAN收發(fā)器,將所述第二波特率配置給所述第二CAN收發(fā)器;
S4)所述微控制器控制所述第一CAN收發(fā)器、第二CAN收發(fā)器數(shù)據(jù)或信息的接收和發(fā)送。
在本發(fā)明一實(shí)施例中,所述步驟S2)中還包括以下步驟,
S21)初始化設(shè)置時(shí)鐘模塊、指示燈模塊和GPIO模塊,包括設(shè)置所述時(shí)鐘模塊的延時(shí)時(shí)間;
S22)定義所述微控制器的接收中斷標(biāo)志。
在本發(fā)明一實(shí)施例中,所述步驟S3)包括還包括以下步驟:
S32)所述微控制器根據(jù)所述第一波特率、第二波特率配置所述第一CAN收發(fā)器、第二CAN收發(fā)器的分頻系數(shù);
S33)所述微控制器將所述ID信息配置為第一CAN收發(fā)器和第二CAN收發(fā)器的數(shù)據(jù)幀標(biāo)準(zhǔn)ID信息。
在本發(fā)明一實(shí)施例中,所述步驟S4)還包括以下步驟;
S41)所述微控制器控制所述第一CAN收發(fā)器接收與之相連接的CAN總線的數(shù)據(jù)或信息;
S42)所述微控制器實(shí)時(shí)監(jiān)聽所述第一CAN收發(fā)器以及讀取接收中斷標(biāo)志的值;
S43)判斷接收中斷標(biāo)志的值是否為1,若為1,則進(jìn)入步驟S44);若不為1,則進(jìn)入步驟S45);
S44)若接收中斷標(biāo)志的值為1,表示此時(shí)所述第一CAN收發(fā)器接收中斷,所述微控制器將所述第一CAN收發(fā)器接收到的數(shù)據(jù)或信息按照所述第二CAN收發(fā)器的通信協(xié)議打包,控制所述第二CAN收發(fā)器將該打包的數(shù)據(jù)或信息傳遞至與所述第二CAN收發(fā)器相連的CAN總線,同時(shí),所述微控制器將所述接收中斷標(biāo)志的值賦為0;
S45)若接收中斷標(biāo)志的值為0,表示此時(shí)所述第一CAN收發(fā)器接收未中斷,則所述微控制器觸發(fā)時(shí)鐘模塊,所述時(shí)鐘模塊計(jì)時(shí)延時(shí)時(shí)間;
S46)當(dāng)達(dá)到延時(shí)時(shí)間后,返回步驟S41)。
在本發(fā)明一實(shí)施例中,所述步驟S46)還包括以下步驟,
S461)所述時(shí)鐘模塊的計(jì)數(shù)器記錄數(shù)據(jù)收發(fā)的循環(huán)次數(shù);
S462)所述微控制器判定該循環(huán)次數(shù)是否達(dá)到所設(shè)上限;若沒有達(dá)到,則返回步驟S41);若達(dá)到,則進(jìn)入步驟S463)
S463)所述微控制器記錄該數(shù)據(jù)收發(fā)循環(huán)上限,同時(shí)將所述計(jì)數(shù)器的值賦為0,并重新返回步驟S41)。
本發(fā)明的優(yōu)點(diǎn)是:本發(fā)明的中繼器及其數(shù)據(jù)傳輸?shù)目刂品椒?,微控制器采用STM32F105內(nèi)部集成雙bxCAN控制器,支持CAN協(xié)議V2.0A和V2.0B,波特率最高可達(dá)1Mb/s,具有3個(gè)發(fā)送郵箱和2個(gè)3級(jí)深度的FIFO,能夠以最小的處理器的負(fù)荷來(lái)高效處理大量收到的報(bào)文,而且通過第一撥碼開關(guān)和第二撥碼開關(guān)的設(shè)置,能夠根據(jù)實(shí)時(shí)傳輸距離,及時(shí)控制傳輸速率,以達(dá)到高效的數(shù)據(jù)或信息的傳輸,通過第一收發(fā)器和第二收發(fā)器的分頻控制,達(dá)到數(shù)據(jù)或信息傳輸?shù)姆植竭M(jìn)行,能夠有效提高傳輸效率以及有效的保證數(shù)據(jù)或信息傳輸?shù)臏?zhǔn)確性,通過計(jì)時(shí)模塊,能夠?qū)崿F(xiàn)每次傳輸?shù)挠?jì)數(shù),有利于數(shù)據(jù)的查詢和統(tǒng)計(jì)。
附圖說(shuō)明
下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步的描述。
圖1為本發(fā)明實(shí)施例的中繼器模塊示意圖。
圖2為本發(fā)明實(shí)施例的中繼器應(yīng)用于監(jiān)測(cè)系統(tǒng)的結(jié)構(gòu)示意圖。
圖3為本發(fā)明實(shí)施例的第一撥碼開關(guān)示意圖。
圖4為本發(fā)明實(shí)施例的第二撥碼開關(guān)示意圖。
圖5為本發(fā)明實(shí)施例的中繼器數(shù)據(jù)傳輸?shù)目刂品椒ú襟E流程圖。
其中。
1中繼器; 2 CAN總線
11第一CAN收發(fā)器; 12第二CAN收發(fā)器;
13第一撥碼開關(guān); 14第二撥碼開關(guān);
15微控制器; 16時(shí)鐘模塊;
17 SWD模塊; 18 USB接口模塊;
19 RS485收發(fā)器; 10 指示燈模塊。
具體實(shí)施方式
以下實(shí)施例的說(shuō)明是參考附加的圖式,用以例示本發(fā)明可用以實(shí)施的特定實(shí)施例。本發(fā)明所提到的方向用語(yǔ),例如「上」、「下」、「前」、「后」、「左」、「右」、「頂」、「底」等,僅是參考附加圖式的方向。因此,使用的方向用語(yǔ)是用以說(shuō)明及理解本發(fā)明,而非用以限制本發(fā)明。
實(shí)施例:如圖1所示,一種中繼器,包括一第一CAN收發(fā)器11、一第二CAN收發(fā)器12、一第一撥碼開關(guān)13、一第二撥碼開關(guān)14、一微控制器15、一時(shí)鐘模塊16、一SWD模塊17、一USB接口模塊18、一RS485收發(fā)器19、一指示燈模塊10、一GPIO模塊以及一電源模塊。上述模塊均連接于微控制器15。
其中,在本實(shí)施例中,第一CAN收發(fā)器11和第二CAN收發(fā)器12使用內(nèi)置控制器和TGA1040數(shù)據(jù)收發(fā)器。
第一CAN收發(fā)器11和第二CAN收發(fā)器12用于與其各自對(duì)應(yīng)連接的CAN總線2進(jìn)行數(shù)據(jù)或信息的傳遞。
本實(shí)施例中,如圖2所示,第一CAN收發(fā)器11與下層級(jí)的CAN總線2進(jìn)行數(shù)據(jù)或信息的傳遞,第二CAN收發(fā)器12與上層級(jí)的CAN總線2進(jìn)行數(shù)據(jù)或信息的傳遞。
如圖3、圖4所示;本實(shí)施例中,第一撥碼開關(guān)13、第二撥碼開關(guān)14均有8位撥碼。其中,第一撥碼開關(guān)13用于配置一ID信息;其配置的ID信息范圍為0~255。第二撥碼開關(guān)14用于配置一第一波特率、第二波特率以及微控制器的BOOT模式。其中,第二撥碼開關(guān)14包括8位撥碼,其中,前兩位撥碼用于配置BOOT0和BOOT1的電平狀態(tài),以配置所述微控制器復(fù)位后程序的啟動(dòng)區(qū)域,第三位到第五位撥碼用于配置第一波特率,第六位到第八位用于配置第二波特率。
本實(shí)施例中,微控制器15采用STM32f105RBT6,是一款基于STM32的CAN總線中繼器。STM32F105內(nèi)部集成雙bxCAN控制器。支持CAN協(xié)議V2.0A和V2.0B,波特率最高可達(dá)1Mb/s,具有3個(gè)發(fā)送郵箱和2個(gè)3級(jí)深度的FIFO,能夠以最小的CPU負(fù)荷來(lái)高效處理大量收到的報(bào)文。微控制器15是本中繼器1的計(jì)算與處理中心,同時(shí)控制其他模塊的工作,實(shí)現(xiàn)控制第一CAN收發(fā)器11的數(shù)據(jù)接收、接收數(shù)據(jù)接收解析、打包和以及控制第二CAN收發(fā)器12的數(shù)據(jù)發(fā)送。具體的,微控制器15用于初始化設(shè)置與之相連的各個(gè)模塊,包括從第一撥碼開關(guān)13讀取ID信息;以及將該ID信息設(shè)置為該中繼器1的ID信息;以及從第二撥碼開關(guān)14讀取第一波特率和第二波特率以及所述微控制器15的BOOT模式(即微控制器復(fù)位后程序的啟動(dòng)區(qū)域);以及將第一波特率配置給第一CAN收發(fā)器11,將第二波特率配置給第二CAN收發(fā)器12;以及控制第一CAN收發(fā)器11、第二CAN收發(fā)器12數(shù)據(jù)或信息的接收和發(fā)送;微控制器15還用于定義和存儲(chǔ)一接收中斷標(biāo)志;以及用于根據(jù)所述第一波特率、第二波特率配置所述第一CAN收發(fā)器11、第二CAN收發(fā)器12的分頻系數(shù);將該ID信息配置為第一CAN收發(fā)器11和第二CAN收發(fā)器12的數(shù)據(jù)幀標(biāo)準(zhǔn)ID信息。
時(shí)鐘模塊16,連接于微控制器15,時(shí)鐘模塊16用于設(shè)定延時(shí)時(shí)間。當(dāng)監(jiān)測(cè)到收發(fā)中斷值為0時(shí),則延時(shí)一預(yù)設(shè)之間后,再重新控制第一CAN收發(fā)器11接收數(shù)據(jù)或信息。本實(shí)施例中,延時(shí)時(shí)間設(shè)定為10ms。而且10ms的延時(shí)時(shí)間既保證了數(shù)據(jù)或信息的及時(shí)傳遞,也能夠有效的控制數(shù)據(jù)或信息不錯(cuò)亂,提高數(shù)據(jù)或信息的傳遞效率。
SWD模塊17用于程序的更新下載調(diào)試。
USB接口模塊18和RS485收發(fā)器19設(shè)有預(yù)留接口,可與微控制器15實(shí)現(xiàn)USB和485通信,與CAN總線2組合可實(shí)現(xiàn)CAN總線2轉(zhuǎn)USB通信和CAN總線2轉(zhuǎn)485通信,具體根據(jù)情況選擇,使中繼器1接入和通信實(shí)現(xiàn)柔性化。
指示燈模塊10包括第一指示燈、第二指示燈、第三指示燈,第一指示燈用于指示第一CAN收發(fā)器11的工作狀態(tài),如第一指示燈閃爍時(shí)表示第一CAN收發(fā)器11正在接收數(shù)據(jù)或信息,當(dāng)接收中斷標(biāo)志的值為1時(shí),則第一指示燈取反;第二指示燈用于指示第二CAN收發(fā)器12的工作狀態(tài),如第二指示燈閃爍時(shí)表示第二CAN收發(fā)器12正在發(fā)送數(shù)據(jù)或信息,當(dāng)接收中斷標(biāo)志的值為0時(shí),則第二指示燈取反;;第三指示燈表示計(jì)數(shù)器次數(shù)判斷時(shí)程序的運(yùn)行狀態(tài),如當(dāng)計(jì)時(shí)器的次數(shù)達(dá)到所預(yù)設(shè)的值時(shí),本實(shí)施例中為預(yù)設(shè)值為1000,則第三指示燈取反。
為了充分的說(shuō)明上述實(shí)施例,以下提供了一種上述中繼器工作時(shí)數(shù)據(jù)傳遞控制方法。
如圖5所示,一種中繼器的數(shù)據(jù)傳遞控制方法,包括以下步驟。
S1)手動(dòng)設(shè)置第一撥碼開關(guān)13,配置一ID信息。手動(dòng)設(shè)置第二撥碼開關(guān)14,配置一第一波特率、第二波特率以及中繼器的BOOT模式。在該步驟中,通過撥動(dòng)8位撥碼來(lái)設(shè)置,如撥動(dòng)第二撥碼器的前2位來(lái)設(shè)置微控制器的BOOT模式,撥動(dòng)第二撥碼器的第3到5位來(lái)設(shè)置第一CAN收發(fā)器11第一波特率,撥動(dòng)第二撥碼器的第6到8位來(lái)設(shè)置第二CAN收發(fā)器12第二波特率,波特率是按照傳輸距離來(lái)設(shè)置的。
S2)啟動(dòng)中繼器1。首先初始化設(shè)置中繼器1的部分模塊和單元,如步驟S21)初始化設(shè)置時(shí)鐘模塊16、指示燈模塊10和GPIO模塊,包括設(shè)置時(shí)鐘模塊16的延時(shí)時(shí)間。
在步驟S22)中定義微控制器15的接收中斷標(biāo)志(receivestate)。如receivestate=1是,則說(shuō)明第一CAN收發(fā)器11接收中斷,receivestate=0是,則說(shuō)明第一CAN收發(fā)器11接收中斷中止。
微控制器15從所述第一撥碼開關(guān)13讀取所述ID信息,并將所述ID信息配置為所述中繼器1的ID信息。中繼器1將該ID信息作為與與之連接的CAN總線2進(jìn)行通信地址。
S3)初始化設(shè)置第一CAN收發(fā)器11、第二CAN收發(fā)器12。初始化設(shè)置包括以下步驟。
S31)微控制器15從所述第二撥碼開關(guān)14讀取所述第一波特率、第二波特率以并將所述第一波特率配置給所述第一CAN收發(fā)器11,將所述第二波特率配置給所述第二CAN收發(fā)器12。
S32)微控制器15根據(jù)所述第一波特率、第二波特率配置所述第一CAN收發(fā)器11、第二CAN收發(fā)器12的分頻系數(shù)。
S33)微控制器15將所述ID信息配置為第一CAN收發(fā)器11和第二CAN收發(fā)器12的數(shù)據(jù)幀標(biāo)準(zhǔn)ID信息。
初始化設(shè)置第一CAN收發(fā)器11、第二CAN收發(fā)器12是為了通過微控制器15分別分頻分時(shí)控制第一CAN收發(fā)器11、第二CAN收發(fā)器12的收發(fā),使收發(fā)步驟能夠按序進(jìn)行。
S4)微控制器15控制第一CAN收發(fā)器11、第二CAN收發(fā)器12數(shù)據(jù)或信息的接收和發(fā)送。
所述步驟S4)還包括以下步驟。
S41)微控制器15控制第一CAN收發(fā)器11接收與之相連接的CAN總線2的數(shù)據(jù)或信息。即在接收中斷標(biāo)志中止階段,第一CAN收發(fā)器11接收數(shù)據(jù)或信息。
S42)微控制器15實(shí)時(shí)監(jiān)聽第一CAN收發(fā)器11以及讀取接收中斷標(biāo)志的值。該步驟是實(shí)時(shí)監(jiān)聽的作用,以便能夠及時(shí)的分頻控制第一CAN收發(fā)器11中斷接收和控制第二CAN收發(fā)器12發(fā)送打包的數(shù)據(jù)或信息,其具體判斷步驟如下。
S43)判斷接收中斷標(biāo)志的值是否為1,若為1,則進(jìn)入步驟S44);若不為1,則進(jìn)入步驟S45)。
S44)若接收中斷標(biāo)志的值為1,表示此時(shí)第一CAN收發(fā)器11接收中斷,微控制器15將所述第一CAN收發(fā)器11接收到的數(shù)據(jù)或信息按照所述第二CAN收發(fā)器12的通信協(xié)議打包,控制第二CAN收發(fā)器12將該打包的數(shù)據(jù)或信息傳遞至與第二CAN收發(fā)器12相連的CAN總線2,同時(shí),所述微控制器15將所述接收中斷標(biāo)志的值賦為0。
S45)若接收中斷標(biāo)志的值為0,表示此時(shí)第一CAN收發(fā)器11接收未中斷,則所述微控制器15觸發(fā)時(shí)鐘模塊16,所述時(shí)鐘模塊16計(jì)時(shí)延時(shí)時(shí)間;
S46)當(dāng)達(dá)到延時(shí)時(shí)間后,返回步驟S41)。
所述步驟S46)還包括以下步驟。
S461)所述時(shí)鐘模塊16的計(jì)數(shù)器記錄數(shù)據(jù)收發(fā)的循環(huán)次數(shù);
S462)所述微控制器15判定該循環(huán)次數(shù)是否達(dá)到所設(shè)上限;若沒有達(dá)到,則返回步驟S41);若達(dá)到,則進(jìn)入步驟S463)
S463)所述微控制器15記錄該數(shù)據(jù)收發(fā)循環(huán)上限,同時(shí)將所述計(jì)數(shù)器的值賦為0,并重新返回步驟S41)。
應(yīng)當(dāng)指出,對(duì)于經(jīng)充分說(shuō)明的本發(fā)明來(lái)說(shuō),還可具有多種變換及改型的實(shí)施方案,并不局限于上述實(shí)施方式的具體實(shí)施例。上述實(shí)施例僅僅作為本發(fā)明的說(shuō)明,而不是對(duì)本發(fā)明的限制??傊景l(fā)明的保護(hù)范圍應(yīng)包括那些對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)說(shuō)顯而易見的變換或替代以及改型。