<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > 基于C8051F040的CAN總線(xiàn)與RS-232通信設計

基于C8051F040的CAN總線(xiàn)與RS-232通信設計

作者: 時(shí)間:2018-09-03 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要:為了實(shí)現對串口需求,提出了一種基于單片機的數據通信方案,并完成系統設計。分析了串口的通信特點(diǎn),介紹了單片機硬件,并對軟件的設計思路與流程做了詳盡描述,完成功能檢測。實(shí)驗結果表明,該設計達到了要求。

本文引用地址:http://dyxdggzs.com/article/201809/388275.htm

目前工業(yè)設備之間的通信很多采用接口,但由于RS-232通信距離短、接口易損,而且只能進(jìn)行點(diǎn)到點(diǎn)通信,不能直接組成多點(diǎn)通信網(wǎng)絡(luò )。而CAN通信速率高、容易實(shí)現、且性?xún)r(jià)比高等諸多特點(diǎn),本文介紹一種可以實(shí)現RS-232與通信的方法,以更好地適應現代工業(yè)發(fā)展的需要。

控制器局域網(wǎng)CAN(Controller Area Network)是德國B(niǎo)osch公司為解決現代汽車(chē)中眾多的控制與測試儀器之間的數據交換而應用開(kāi)發(fā)的一種通信協(xié)議。在國外,尤其是歐洲,CAN網(wǎng)絡(luò )已被廣泛地應用在汽車(chē)上,如BENZ、BMW、PORSCHE、ROLLS、ROYCE、JAGUAR等車(chē)。

它是一種串行通信網(wǎng)絡(luò ),支持分布式實(shí)時(shí)控制,最大傳輸速度可達1 Mbids,最大傳輸距離為10 km。CAN規范已被ISO國際標準組織制訂為國際標準,即CAN標準,現在最常用的是2.0標準,分為2.0A和2.0B。其區別僅在通信數據位數,前者是11位的標準幀,后者是29位的擴展幀。CAN協(xié)議建立在國際標準組織的開(kāi)放系統互連參考模型基礎上的,主要工作在數據鏈路層和物理層,用戶(hù)可在其基礎上開(kāi)發(fā)適合系統實(shí)際需要的應用層通信協(xié)議。而串口RS-232作為標準計算機串行接口,與CAN網(wǎng)的結構、通信協(xié)議、傳輸特性等方面都不相同,所以不同設備間無(wú)法進(jìn)行直接通信。因此實(shí)現二者之間的信息數據交互成為問(wèn)題的關(guān)鍵。

本設計完成了CAN總線(xiàn)與RS-232軟件設計。本設計的創(chuàng )新點(diǎn)是:CAN總線(xiàn)與RS-232接口數據通信速率以及通信幀格式都不同,解決了這兩點(diǎn)不同,從而實(shí)現了數據在CAN總線(xiàn)與RS-232接口之間的交互傳輸。本文完成了基于單片機控制的CAN與RS-232轉換的研究與設計,設計了單片機對RS-232串口和CAN總線(xiàn)的控制,解決了CAN總線(xiàn)與RS-232接口數據通信速率以及通信幀格式不同的技術(shù)問(wèn)題,實(shí)現了RS-232接口數據與CAN總線(xiàn)數據的相互傳輸。

1 概述

1. 1 CAN總線(xiàn)

Silicon Labs CAN的工作位速率可達1M位/秒,實(shí)際速率可能受CAN總線(xiàn)上所選擇的傳輸數據的物理層的限制。CAN處理器有32個(gè)消息對象,可以被配置為發(fā)送或接收數據。輸入數據、消息對象及其標識掩碼存儲在CAN消息RAM中。

標準CAN的標志符長(cháng)度是11位,而擴展格式CAN的標志符長(cháng)度可達29位。CAN協(xié)議2.0A版本規定CAN控制器必須有一個(gè)11位的標識符。而2.0B版本中規定,CAN控制器的標志符長(cháng)度可以是11位或者29位。遵循CAN2.0B協(xié)議的CAN控制器可以發(fā)送和接收11位標識符的標準格式報

文或29位標識符的標準格式報文。如果禁止CAN2.0B,則CAN控制器只能發(fā)送和接收11位標識符的標準格式報文,而忽略擴展格式的報文結構,但不會(huì )出現錯誤。C8051F040所集成的CAN控制器為2.0B。

數據幀是攜帶數據由發(fā)送器至接收器的幀,是CAN的4種幀格式之一,這4種幀格式分別是數據幀、遠程幀、出錯幀和超載幀,其中數據幀結構如圖1所示。

CAN總線(xiàn)數據幀由7個(gè)不同的位場(chǎng)組成:幀起始(stsrt of frame)、仲裁場(chǎng)(arbitration frame)、控制場(chǎng)(control frame)、數據場(chǎng)(data frame)、CRC場(chǎng)(CRC frame)、應答場(chǎng)(ACK frame)和幀結尾(end of frame)。數據場(chǎng)的長(cháng)度可以為0。

1)幀起始:標志數據幀的起始,僅由一個(gè)“顯性”位組成,只在總線(xiàn)空閑時(shí)才允許節點(diǎn)開(kāi)始發(fā)送信號;2)仲裁場(chǎng):標準格式幀與擴展格式幀的仲裁場(chǎng)格式不同。標準格式里,仲裁場(chǎng)由11位識別符和遠程發(fā)送請求位組成,識別符位為ID-28~ID-18。擴展格式里,仲裁場(chǎng)包括29位識別符、替代遠程請求位、識別符擴展位和遠程發(fā)送請求位。其識別符為ID-28~ID-0;3)控制場(chǎng):由6個(gè)位構成,前2位為保留位,為顯性,后4位為數據長(cháng)度碼,表示數據場(chǎng)中數據的字節數,必須在0~8范圍內變化;4)數據場(chǎng):由被發(fā)送數據組成,數目為控制場(chǎng)中決定的0~8個(gè)字節,第一個(gè)字節的最高位首先被發(fā)送;5)CRC場(chǎng):包括CRC序列和CRC界定符;6)ACK場(chǎng):長(cháng)度為2位,包含應答間隙和應答界定符;7)幀結尾:由7個(gè)位“隱形”位組成,此期間無(wú)位填充。

1. 2 RS-232

RS-232是PC機與通信工業(yè)中應用最廣泛的一種串行接口,具有連線(xiàn)簡(jiǎn)單、通訊距離長(cháng)等優(yōu)點(diǎn)。同樣也有一些缺點(diǎn),接口的信號電平值較高,易損壞接口電路的芯片,傳輸速率較低,傳輸距離有限等。RS-232被定義為在低速率串行通訊中增加通訊距離的單端標準。RS-232采取不平衡傳輸方式,即所謂單端通訊。UART通信可用查詢(xún)TI和RI或通過(guò)中斷來(lái)控制通信。UART有兩種中斷源:數據發(fā)送完畢時(shí),TI置1;數據完整接受到時(shí),RI置1。TI和RI中任何一個(gè)標志位置1,均能引發(fā)UART中斷。TI和RI中斷標志位需軟件清0。

2 系統硬件描述

Cygnal公司的51系列單片機C8051F040是集成在一塊芯片上的混合信號系統級單片機,在一個(gè)芯片內集成了構成一個(gè)單片機數據采集或控制的智能節點(diǎn)所需要的幾乎所有模擬和數字外設以及其他功能部件,代表了目前8位單片機控制系統的發(fā)展方向。芯片上有1個(gè)12位多通道ADC,2個(gè)12位DAC,2個(gè)電壓比較器,1個(gè)電壓基準,1個(gè)32kB的FLASH存儲器,與MCS-51指令集完全兼容的高速CIP-51內核,峰值速度可達25 MIPS,并且還有硬件實(shí)現的UART串行接口和完全支持CAN2.0A和CAN2.0B的CAN控制器。

控制器局域網(wǎng)(CAN2.0B)控制器,具有32個(gè)消息對象,每個(gè)消息對象有其自己的標識全速、非侵入式的在系統調試接口 (片內)。C8051 F040器件內部有一個(gè)控制器局域網(wǎng)(CAN)控制器,使用CAN協(xié)議實(shí)現串行通信。該CAN控制器符合Bosch規范2.0A(基本CAN)和2.0B(全功能CAN),方便了CAN網(wǎng)絡(luò )通信設計。CAN控制器包含一個(gè)CAN核、消息RAM(獨立于C8051的RAM)、一個(gè)消息處理狀態(tài)機以及控制寄存器。CAN控制器可以工作在高達1M位/秒的位速率。Silicon Labs的CAN有32個(gè)消息對象,每個(gè)消息對象有其自己的標識掩碼,該標識掩碼用于對接收到的消息進(jìn)行過(guò)濾。輸入數據、消息對象和標識掩碼存儲在CAN消息RAM中。與數據發(fā)送和接收過(guò)濾有關(guān)的所有協(xié)議處理均由CAN控制器完成,不需C8051 MCU干預。這就使得用于CAN通信的CPU帶寬最小。C8051通過(guò)特殊功能控制器(SFR)配置CAN控制器,讀取接收的數據,寫(xiě)入要發(fā)送的數據。

C8051F040的MCU內部有兩個(gè)增強型全雙工UART、一個(gè)增強型SPI總線(xiàn)和SMBus/I2C。每種串行總線(xiàn)都完全用硬件實(shí)現,都能向CIP-51產(chǎn)生中斷,因此需要很少的CPU干預。這些串行總線(xiàn)不“共享”定時(shí)器、中斷或端口I/O等資源,所以可以使用任何一個(gè)或同時(shí)使用多個(gè)。

CAN總線(xiàn)數據和RS-232串口數據的速率、數據格式都不同,為實(shí)現相互傳輸的功能需求,就需要RAM緩存。硬件結構圖如圖2所示。

3 軟件設計

系統采用Keil uVision4軟件編程,Keil uVision4是ARM公司推出軟件開(kāi)發(fā)平臺,其編譯器、調試工具實(shí)現與ARM器件的完美匹配。程序由初始化和死循環(huán)兩部分構成。初始化完成對器件數據設置,循環(huán)完成數據在RS-232和CAN總線(xiàn)之間的。

3. 1 初始化

初始化就是通過(guò)單片機向其片內的各個(gè)寄存器寫(xiě)入控制字的過(guò)程。void RS232_INI()函數設置UART為模式1,8位可變波特率通信。void CAN_INI()函數用來(lái)初始化CAN,總線(xiàn)接收、發(fā)送信道,并設置波特率。

3.2 RS-232轉CAN總線(xiàn)

RS-232傳輸1字節,而CAN總線(xiàn)傳輸的是8字節,這要求在通信過(guò)程中實(shí)現數據匹陪、格式匹配。該模塊采用,在串口接收中斷中,直接把接收到的串口數據存到8字節的緩存中,計數滿(mǎn)八位。則標志位置1,主函數中調用函數send_can1(),將數據發(fā)送到CAN總線(xiàn)。從而實(shí)現將數據從RS-232傳輸到CAN總線(xiàn)的功能。流程圖如圖3所示。

3.3 CAN總線(xiàn)轉RS-232

CAN總線(xiàn)數據發(fā)送到串口,原理相同,過(guò)程相反。CAN總線(xiàn)的數據接收也是在中斷中實(shí)現,這樣實(shí)時(shí)性好。CAN總線(xiàn)的接收緩存中有數據,則這8個(gè)字節的數據依次調用RS-232功能函數void RS232_PUTCHAR(),發(fā)送到串口。從而實(shí)現將數據從CAN總線(xiàn)傳輸到RS-232串口的功能。流程圖如圖4所示。

4 實(shí)驗檢測

為了驗證設計的正確性,文中使用Kvaser CanKing和SecureCRT軟件來(lái)測試。Kvaser CanKing用來(lái)接收、發(fā)送CAN總線(xiàn)數據,SecureCRT用來(lái)接收、發(fā)送串口數據,二者都有顯示功能。實(shí)驗結果如圖5所示,其證實(shí)了設計的正確性。

5 結束語(yǔ)

數據通信在嵌入式系統的功能中占據重要地位,串口通信與CAN總線(xiàn)相互通信都具有各自的重要作用,而兩者的交互通信也越來(lái)越重要,本文的設計功能明確、結構簡(jiǎn)單、具有很強的通用性和實(shí)用性,并通過(guò)了測試驗證。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>