Small RTOS51 下CAN總線數(shù)據(jù)收發(fā)實(shí)現(xiàn)
1 CAN總線簡介
現(xiàn)場總線技術(shù)FCS(Fieldbus Control System)成為當(dāng)今工業(yè)自動(dòng)化技術(shù)發(fā)展的熱點(diǎn),德國Bosch公司的CAN(1Mbit/s)是國際標(biāo)準(zhǔn)之一,也是Controller Area Network 的應(yīng)用標(biāo)準(zhǔn)。它屬于現(xiàn)場總線范疇,是一種有效支持分布式控制或?qū)崟r(shí)控制的串行通信網(wǎng)絡(luò)。由于其高性能、高可靠性、及獨(dú)特設(shè)計(jì),CAN總線已成為目前國外最普及和實(shí)時(shí)性最高的現(xiàn)場總線。CAN總線在可靠性和實(shí)時(shí)性方面遠(yuǎn)遠(yuǎn)優(yōu)于RS-485等工業(yè)現(xiàn)線CAN總線主要有下列特征:
1. 數(shù)據(jù)信號(hào)采用差分電壓傳輸,兩條信號(hào)線”CAN_H”和” CAN_L”。
2. 傳輸介質(zhì)可用雙絞線、同軸電纜或光纖,具有較強(qiáng)的抗干擾能力。直接通信距離最大可達(dá)10km(速率小于5kbit/s),最高通信速率可達(dá)1Mbit/s(此時(shí)距離最長為40m)。
3. 節(jié)點(diǎn)不分主從,節(jié)點(diǎn)任意時(shí)刻可向其他節(jié)點(diǎn)發(fā)送信息,依據(jù)優(yōu)先權(quán)進(jìn)行總線訪問,滿足不同的實(shí)時(shí)要求。
4. 采用非破壞性基于優(yōu)先權(quán)總線仲裁技術(shù)。
5. 采用短幀結(jié)構(gòu),每幀為8bit,保證了數(shù)據(jù)出錯(cuò)率低。
6. 可以點(diǎn)對(duì)點(diǎn)、點(diǎn)對(duì)多點(diǎn)及全局廣播方式傳送接收數(shù)據(jù)。
7. 發(fā)送期間若丟失仲裁或由于出錯(cuò)而遭破壞的幀可自動(dòng)重發(fā)送。
2Small RTOS51簡介
Small RTOS51 是一個(gè)用于8051系列單片機(jī)的多任務(wù)實(shí)時(shí)操作系統(tǒng)。8051系列單片機(jī)一般只有很少的ROM和RAM資源,如P89C51只有4KB Flash和128字節(jié)RAM。一般的實(shí)時(shí)操作系統(tǒng)如RTX Tiny 雖然小,但是任務(wù)沒有優(yōu)先級(jí)和中斷管理,也無源代碼,而uc/os-II規(guī)模太大,需要大量外部RAM?;诖?,Small RTOS51是專為51 單片機(jī)編寫嵌入式操作系統(tǒng),它使用了RTX51 Tiny 的堆棧管理機(jī)制,并像uc/os-II一樣是搶占式的。
3 一個(gè)典型的CAN節(jié)點(diǎn)
3.1.CAN總線接口的結(jié)構(gòu)
一個(gè)CAN總線接口有3 部分組成,如圖(a)所示,它們分別對(duì)應(yīng)于CAN總線的物理層、數(shù)據(jù)鏈路層和應(yīng)用層。
最上層為微控制器,主要負(fù)責(zé)上層應(yīng)用以及系統(tǒng)控制,包括CAN協(xié)議的應(yīng)用層協(xié)議的實(shí)現(xiàn),協(xié)調(diào)各系統(tǒng)設(shè)備的工作。(本設(shè)計(jì)采用的MCU是8051)
中間層為CAN控制器,CAN控制器負(fù)責(zé)處理數(shù)據(jù)幀,完成數(shù)據(jù)的打包、解包,錯(cuò)誤界定,并提供報(bào)文緩沖和傳輸濾波。(本設(shè)計(jì)采用的CAN總線控制器是Philips公司生產(chǎn)SJA1000)
最底層為CAN收發(fā)器,主要是接口電平的轉(zhuǎn)換,接口電器特性的處理。(本設(shè)計(jì)采用82C250)
(a)CAN接口結(jié)構(gòu)
3.2.節(jié)點(diǎn)電路設(shè)計(jì)
(1)SJA1000與單片機(jī)接口電路
(b)SJA1000與單片機(jī)接口電路
SJA1000 的AD0-AD7與單片機(jī)的數(shù)據(jù)總線相連,地址A17作為SJA1000的片選使能端,由ALE、WR、RD控制SJA1000 數(shù)據(jù)的發(fā)送和接收。注意SJA1000復(fù)位端的連接,單片機(jī)是高電平復(fù)位,而SJA1000是低電平復(fù)位,因此復(fù)位信號(hào)要通過一個(gè)反相器與SJA1000復(fù)位端相連。另外SJA1000的11腳MODE接高電平,選擇Intel二分頻模式 。SJA1000的16腳時(shí)中斷信號(hào)輸出,在中斷允許情況下,有中斷發(fā)生時(shí),16腳出現(xiàn)有高電平到低電平的跳變。因此16腳可以直接與單片機(jī)的外部中斷輸入腳相連接。
SJA1000的ODE引腳可選擇接口模式:
◆Intel模式MODE高
◆M0torola模式MODE低
評(píng)論