基於C8051F040單片機的CAN總線和RS-232串口通信設計

2020-12-08 電子發燒友

為了實現對CAN總線和RS-232串口雙向通信需求,提出了一種基於C8051F040單片機的數據通信方案,並完成系統設計。分析了CAN總線和RS-232串口的通信特點,介紹了單片機硬體,並對軟體的設計思路與流程做了詳盡描述,完成功能檢測。實驗結果表明,該設計達到了要求。

目前工業設備之間的通信很多採用RS-232接口,但由於RS-232通信距離短、接口易損,而且只能進行點到點通信,不能直接組成多點通信網絡。而CAN通信速率高、容易實現、且性價比高等諸多特點,本文介紹一種可以實現RS-232與CAN總線通信的方法,以更好地適應現代工業發展的需要。

控制器區域網CAN(Controller Area Network)是德國Bosch公司為解決現代汽車中眾多的控制與測試儀器之間的數據交換而應用開發的一種通信協議。在國外,尤其是歐洲,CAN網絡已被廣泛地應用在汽車上,如BENZ、BMW、PORSCHE、ROLLS、ROYCE、JAGUAR等車。

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

本設計完成了CAN總線與RS-232軟體設計。本設計的創新點是:CAN總線與RS-232接口數據通信速率以及通信幀格式都不同,解決了這兩點不同,從而實現了數據在CAN總線與RS-232接口之間的交互傳輸。本文完成了基於C8051F040單片機控制的CAN與RS-232轉換的研究與設計,設計了C8051F040單片機對RS-232串口和CAN總線的控制,解決了CAN總線與RS-232接口數據通信速率以及通信幀格式不同的技術問題,實現了RS-232接口數據與CAN總線數據的相互傳輸。

1 概述

1. 1 CAN總線

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

標準CAN的標誌符長度是11位,而擴展格式CAN的標誌符長度可達29位。CAN協議2.0A版本規定CAN控制器必須有一個11位的標識符。而2.0B版本中規定,CAN控制器的標誌符長度可以是11位或者29位。遵循CAN2.0B協議的CAN控制器可以發送和接收11位標識符的標準格式報文或29位標識符的標準格式報文。如果禁止CAN2.0B,則CAN控制器只能發送和接收11位標識符的標準格式報文,而忽略擴展格式的報文結構,但不會出現錯誤。C8051F040所集成的CAN控制器為2.0B。

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

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

1)幀起始:標誌數據幀的起始,僅由一個「顯性」位組成,只在總線空閒時才允許節點開始發送信號;2)仲裁場:標準格式幀與擴展格式幀的仲裁場格式不同。標準格式裡,仲裁場由11位識別符和遠程發送請求位組成,識別符位為ID-28~ID-18。擴展格式裡,仲裁場包括29位識別符、替代遠程請求位、識別符擴展位和遠程發送請求位。其識別符為ID-28~ID-0;3)控制場:由6個位構成,前2位為保留位,為顯性,後4位為數據長度碼,表示數據場中數據的字節數,必須在0~8範圍內變化;4)數據場:由被發送數據組成,數目為控制場中決定的0~8個字節,第一個字節的最高位首先被發送;5)CRC場:包括CRC序列和CRC界定符;6)ACK場:長度為2位,包含應答間隙和應答界定符;7)幀結尾:由7個位「隱形」位組成,此期間無位填充。

1. 2 RS-232

RS-232是PC機與通信工業中應用最廣泛的一種串行接口,具有連線簡單、通訊距離長等優點。同樣也有一些缺點,接口的信號電平值較高,易損壞接口電路的晶片,傳輸速率較低,傳輸距離有限等。RS-232被定義為在低速率串行通訊中增加通訊距離的單端標準。RS-232採取不平衡傳輸方式,即所謂單端通訊。UART通信可用查詢TI和RI或通過中斷來控制通信。UART有兩種中斷源:數據發送完畢時,TI置1;數據完整接受到時,RI置1。TI和RI中任何一個標誌位置1,均能引發UART中斷。TI和RI中斷標誌位需軟體清0。

2 系統硬體描述

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

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

C8051F040的MCU內部有兩個增強型全雙工UART、一個增強型SPI總線和SMBus/I2C。每種串行總線都完全用硬體實現,都能向CIP-51產生中斷,因此需要很少的CPU幹預。這些串行總線不「共享」定時器、中斷或埠I/O等資源,所以可以使用任何一個或同時使用多個。

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

3 軟體設計

系統採用Keil uVision4軟體編程,Keil uVision4是ARM公司推出軟體開發平臺,其編譯器、調試工具實現與ARM器件的完美匹配。程序由初始化和死循環兩部分構成。初始化完成對器件數據設置,循環完成數據在RS-232和CAN總線之間的雙向通信。

3. 1 初始化

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

3.2 RS-232轉CAN總線

RS-232傳輸1位元組,而CAN總線傳輸的是8位元組,這要求在通信過程中實現數據匹陪、格式匹配。該模塊採用,在串口接收中斷中,直接把接收到的串口數據存到8位元組的緩存中,計數滿八位。則標誌位置1,主函數中調用函數send_can1(),將數據發送到CAN總線。從而實現將數據從RS-232傳輸到CAN總線的功能。流程圖如圖3所示。

3.3 CAN總線轉RS-232

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

4 實驗檢測

為了驗證設計的正確性,文中使用Kvaser CanKing和SecureCRT軟體來測試。Kvaser CanKing用來接收、發送CAN總線數據,SecureCRT用來接收、發送串口數據,二者都有顯示功能。實驗結果如圖5所示,其證實了設計的正確性。

5 結束語

數據通信在嵌入式系統的功能中佔據重要地位,串口通信與CAN總線相互通信都具有各自的重要作用,而兩者的交互通信也越來越重要,本文的設計功能明確、結構簡單、具有很強的通用性和實用性,並通過了測試驗證。

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • 串口、COM口、UART、TTL、USB、RS-232、RS-485、I2C、SPI、CAN、1...
    串行接口簡稱為串口,也叫串行通信接口,一般也叫COM口,這是一個統稱,採用串行通信的接口都叫作串口,串口是一個硬體接口。 二、UART   UART是Universal Asynchronous Receiver/Transmitter的簡稱,意為通用異步收發傳輸器,UART包含TTL電平的串口和RS-232電平的串口
  • 基於CAN總線的分布式熱電阻智能節點的設計
    3.2 節點與上位機的can通信智能節點與主控卡或上位機的通信主要基於can通信協議來完成,它的優點是能夠實時處理數據、在惡劣環境下正常工作、成本低且擁有比較高的帶寬。由於上位機內部無can網絡適配器,因此需外接rs-232/can轉接卡,實現上位機與智能節點的通信。
  • 基於RS485總線的溫溼度監控系統設計
    系統採用兩級主從式總線型網絡拓撲結構。由1臺PC機(作為上位機)、若干臺AT89S52單片機(作為下位機)和RS-485總線通訊網絡組成。整個系統在監控系統治理軟體的控制下,同一協調工作,完成設計功能。
  • 基於C167單片機和CAN總線實現數位化電梯控制系統的設計
    基於C167單片機和CAN總線實現數位化電梯控制系統的設計 李炳宇,梁正峰,趙 發表於 2020-12-04 09:55:04 1 引言 國民經濟的飛速發展
  • 基於TMS320F2812和USB100的CAN-USB總線通信系統設計[圖]
    摘要:介紹了一種基於DSP的CAN控制器和USB晶片的USB總線和CAN總線的通信模塊的設計,提出了一種使用USB接口實現CAN總線網絡與計算機連接的方案。利用USB100晶片可在不了解任何USB協議的情況下,完成計算機RS 232串口升級為USB接口,同時CAN接口採用DSP片上CAN控制器,硬體設計極為簡單。
  • 基於樹莓派的多串口多總線伺服器設計
    引言本文引用地址:http://www.eepw.com.cn/article/201609/304386.htm工業控制中,各設備的信號採集和監控只靠串口總線難以實現擴展,要將現場控制網絡和信息網絡相連,就需要解決串口通信協議和網際網路通信協議的轉換問題,即把原有設備轉換為具備網絡接口的外設,這樣可以將傳統串行鏈路上的數據傳輸到信息網絡上,而無需更換原有設備。
  • RS-232-C串口、串口線的使用說明
    串行接口簡稱串口,也稱串行通信接口(通常指COM接口),是採用串行通信方式的擴展接口。串口按接口來分類的話,有RS-232、RS-422和RS-485幾種,其中RS-232串口是最常用的一種串行通訊接口,也稱標準串口。其全名是「數據終端設備(DTE)和數據通訊設備(DCE)之間串行二進位數據交換接口技術標準」。
  • 基於單片機和CAN總線技術實現雙電源雙風機保護系統的設計
    基於單片機和CAN總線技術實現雙電源雙風機保護系統的設計 李澤焱,牟龍華, 發表於 2020-03-24 07:44:00 引 言
  • 基於單片機的氣壓式高度計設計
    摘要:採用集成度高的壓阻式矽氣壓傳感器,運用模塊化設計方法完成了基於C8051F353單片機的數字式氣壓高度、單片機、A/D轉換、精密參考電壓、顯示驅動模塊、串口通信模塊、電源模塊等幾部分組成。
  • 基於CPLD晶片和C8051F020實現聲探測系統數字電路的設計
    本文正是基於聲探測技術原理和成熟的微電子技術, 採用TI公司的32位浮點DSP晶片TMS320VC33-150來實現聲源目標的探測定位算法,並輔之以ADC、CPLD、單片機等器件來實現聲源信號的採集、系統邏輯控制以及通信功能。對於數字電路的邏輯控制功能,本文選用了Altera公司的CPLD晶片EPM7128AETC100-10來實現。
  • 基於C8051F02X的無線數據傳輸系統設計方案介紹【詳解】
    本文介紹的一種基於C8051F02X的無線數據傳輸系統應用了計算機技術和GSM網絡通信技術,是一種新型無線通信系統。該系統依託GSM網絡,採用短消息進行數據通信,即在傳統的單片機數據採集系統中增加支持短消息、數據通信等業務的GPRS模塊,並為其分配一個獨立的SIM卡,結合單片機系統通過串行通信接口,實現了數據的遠程無線傳輸。
  • 基於單片機和CPLD的PLC背板總線協議接口晶片設計(一)
    摘要:設計了一組基於CPLD的PLC背板總線協議接口晶片,協議晶片可以區分PLC的背板總線的周期性數據和非周期性數據。背板總線的技術水平決定了PLC 產品的I/O 擴展能力,是PLC 設計製造的核心技術。目前,PLC 大多採用串行通信技術實現背板總線,串行總線引線少、硬體成本低,跟並行總線相比不容易受幹擾,串行總線可以提高在惡劣的工廠和工業環境下自動化設備的可靠性。用於串行通信技術的可選類型包括I2C、UART、SPI、USB 和乙太網等,一般來說,很多作為PLC 主晶片的單片機自身都集成了這些外設部件。
  • 基於卡爾曼濾波器和CAN智能從站技術實現開關磁阻電機調速系統設計
    因此,設計研製一種基於開關磁阻電機的遠程控制系統(SRD)具有十分重要的現實意義。 Controller Area Network(簡稱CAN),與一般的總線相比,CAN總線的數據通信具有突出的可靠性、實時性和靈活性。本文主要探討基於RS-485與CAN總線的開關磁阻電機遠程監控系統的構成。SRD調速系統通常採用傳統PID控制策略,系統很難保守良好性能。
  • 基於MFC串口連續通信的簡易實現
    之間的時間間隔T1,將間隔本文引用地址:http://www.eepw.com.cn/article/201610/306451.htm串口通信適用於長距離控制與數據傳輸,許多單片機在內部均集成了串口通信模塊,而計算機的作業系統也內嵌有對串口通信的支持。
  • 計算機串口通信基礎
    計算機串口通信基礎 李倩 發表於 2018-07-12 08:08:37 串口通信是非常重要的,首先了解下基礎 計算機串口通信基礎 隨著多微機系統的廣泛應用和計算機網絡技術的普及
  • 基於CAN總線的運動控制系統設計
    基於CAN總線的運動控制系統設計 電子工程網 發表於 2019-09-18 15:50:55 1 總體設計 主節點採用ARM7內核的LPC2294微控制器
  • 嵌入式PROFIBUS現場總線通信接口設計
    基於上述需求,嵌入式PROFIBUS-DP從站通信接口的設計為自主開發具有PROFIBUS-DP通信功能產品的用戶提供了一種快速、高效的解決方案。 1實現方法 (1)電路設計製作:使用PROFIBUS通信專用ASIC晶片SPC3實現協議相 關內容,選用合適的CPU,外圍加帶光電隔離的RS-485驅動; (2)單片機+Firmware軟體:需要在單片機中編程(Firmware軟體),實現單片機與ASIC的結合; (3)用戶產品的CPU通過串行接口向PROFIBUS-DP從站通信接口板讀/寫輸入
  • 淺談硬體串口通信基礎概念
    串口通信(Serial Communication),是指外設和計算機間通過數據信號線、地線等按位進行傳輸數據的一種通信方式,屬於串行通信方式。串口是一種接口標準,它規定了接口的電氣標準,沒有規定接口插件電纜以及使用的協議。
  • 基於USB總線和89C51單片機的數據採集系統設計
    摘要:本文介紹了基於USB總線的數據採集設備的開發方法,包括硬體設計、firmware(固件)設計、基於windows驅動程序模型(WDM)的設備驅動程序設計以及應用軟體的設計,同時也介紹了基於
  • 總線式原油盤庫數據採集子系統的設計
    為大力提高其自動化水平,本文根據該採油廠各聯合站分散採集、集中監視的特點,設計了基於RS-485總線和主從單片機結構的數據採集子系統方案。由位於監控室的主單片機作為中樞,通過RS-485總線採集各從單片機收集到的原油參數並通過串口上傳到上位機中。