具體描述
內容簡介
CAN總綫嵌入式開發—從入門到實戰(第2版)
CAN總綫通信技術廣泛應用於工業自動化、汽車電子、樓宇建築、醫療器械、電梯網絡、工程機械等行業,市場每年對該類控製産品需求量巨大。本書從目前幾種流行的CAN通信控製電路的器件入手,結閤CAN總綫通信學習闆,詳細介紹瞭CAN總綫嵌入式應用開發技術。
本書內容主要包括CAN控製器和單片機的接口技術、CAN總綫在A/D采集控製闆傳輸中的應用、支持片上CANopen協議的LPC11Cxx係列微控製器的CAN應用設計及CAN總綫在酒店客房智能化係統中的工程應用。每一種實例都從方案論證、硬件電路設計、軟件程序設計方麵進行庖丁解牛式的論述,並且書中所有硬件電路均製作齣電路闆,所有程序均在電路闆上調試運行通過。本書是再版書,相比第1版,本書更正瞭一些錯誤,並增加瞭部分內容。
本書旨在為廣大嵌入式CAN總綫通信技術的研發者提供實戰化的軟、硬件技術參考,書中的電路圖和源程序可以直接拿來參考運用,大大提高瞭工程師的工作效率。
目錄
第1章 CAN 總綫基礎知識………………………………………………………… 1
1.1 CAN 總綫簡介………………………………………………………………… 1
1.2 CAN 總綫基本工作原理……………………………………………………… 2
1.3 CAN 的標準格式和擴展格式………………………………………………… 3
1.4 CAN 的節點硬件構成………………………………………………………… 3
1.5 CAN 控製器…………………………………………………………………… 4
1.6 CAN 收發器…………………………………………………………………… 5
1.7 CAN 總綫接口電路保護器件………………………………………………… 6
1.7.1 共模扼流圈……………………………………………………………… 6
1.7.2 ESD防護………………………………………………………………… 7
1.7.3 CAN 總綫網絡保護……………………………………………………… 7
1.8 CAN 總綫通信過程…………………………………………………………… 8
1.9 CAN 總綫控製器芯片濾波器的作用………………………………………… 9
1.10 CAN 總綫的報文格式……………………………………………………… 10
1.10.1 數據幀………………………………………………………………… 10
1.10.2 遠程幀………………………………………………………………… 13
1.10.3 錯誤幀………………………………………………………………… 14
1.10.4 過載幀………………………………………………………………… 15
1.10.5 幀間空間……………………………………………………………… 16
1.11 振蕩器容差………………………………………………………………… 17
1.12 位定時要求………………………………………………………………… 17
1.13 同 步……………………………………………………………………… 18
1.14 位流編碼及位填充………………………………………………………… 19
1.15 CAN 總綫錯誤處理………………………………………………………… 20
1.15.1 錯誤類型……………………………………………………………… 20
1.15.2 錯誤標誌……………………………………………………………… 20
1.16 故障界定…………………………………………………………………… 21
1.16.1 故障界定的方法……………………………………………………… 21
1.16.2 錯誤計數規則………………………………………………………… 21
1.16.3 錯誤標記及錯誤中斷類型…………………………………………… 22
1.17 CAN 網絡與節點的總綫拓撲結構………………………………………… 23
1.17.1 總綫結構拓撲………………………………………………………… 23
1.17.2 CAN 總綫通信距離…………………………………………………… 24
1.17.3 CAN 中繼器…………………………………………………………… 25
1.17.4 CAN 網橋……………………………………………………………… 27
1.17.5 CAN 集綫器…………………………………………………………… 28
1.17.6 CAN 網關……………………………………………………………… 28
1.18 CAN 總綫傳輸介質………………………………………………………… 29
1.18.1 雙絞綫………………………………………………………………… 29
1.18.2 光 縴………………………………………………………………… 33
1.19 改善電磁兼容性的措施…………………………………………………… 34
1.19.1 增加電阻值抑製共模乾擾…………………………………………… 34
1.19.2 分開的總綫終端……………………………………………………… 35
1.19.3 斜率控製……………………………………………………………… 35
1.20 CAN 網絡的實時性能及通信波特率的設置……………………………… 36
1.20.1 網絡延時……………………………………………………………… 36
1.20.2 CAN 網絡通信速率選擇……………………………………………… 37
1.20.3 CAN 網絡通信速率的一緻性………………………………………… 38
1.21 CAN 總綫節點設備的電源………………………………………………… 40
第2章 CAN 控製器SJA1000與8051係列單片機接口設計…………………… 44
2.1 CAN 控製器SJA1000 ……………………………………………………… 44
2.1.1 SJA1000引腳排列及其功能…………………………………………… 44
2.1.2 BasicCAN 模式下內部寄存器地址錶………………………………… 47
2.1.3 PeliCAN 模式下內部寄存器地址錶………………………………… 48
2.1.4 BasicCAN 和PeliCAN 模式的區彆…………………………………… 50
2.1.5 8051係列單片機控製SJA1000的方式……………………………… 50
2.1.6 SJA1000的濾波器設置………………………………………………… 51
2.1.7 CAN 總綫通信波特率的計算………………………………………… 56
2.1.8 SJA1000初始化流程…………………………………………………… 58
2.2 CAN 總綫驅動器…………………………………………………………… 59
2.2.1 TJA1040概述………………………………………………………… 59
2.2.2 TJA1040功能………………………………………………………… 60
2.3 CAN 總綫DC/DC光電隔離技術………………………………………… 61
2.3.1 DC/DC電源隔離模塊………………………………………………… 61
2.3.2 高速光耦6N137 ……………………………………………………… 64
2.4 51係列單片機CAN 總綫學習闆實物圖…………………………………… 64
2.5 51係列單片機CAN 總綫學習闆硬件電路設計…………………………… 66
2.5.1 電路原理圖……………………………………………………………… 66
2.5.2 SJA1000晶振的電路設計……………………………………………… 71
2.6 雙節點CAN 總綫通信……………………………………………………… 73
2.6.1 程序流程框圖設計……………………………………………………… 74
2.6.2 SJA1000的硬件接口地址定義………………………………………… 75
2.6.3 程序頭文件定義說明…………………………………………………… 76
2.6.4 子函數詳解……………………………………………………………… 80
2.6.5 完整的CAN 總綫學習闆發送源程序………………………………… 89
2.6.6 完整的CAN 總綫學習闆CAN 轉232串口源程序………………… 95
2.6.7 STC89C52單片機串口下載程序…………………………………… 102
2.7 多節點CAN 總綫係統的程序設計……………………………………… 104
2.7.1 多節點CAN 總綫係統的連接……………………………………… 104
2.7.2 多節點CAN 總綫係統地址的定義及功能實現…………………… 105
2.7.3 多節點CAN 總綫係統通信數據含義……………………………… 105
2.7.4 多節點CAN 總綫係統程序流程圖………………………………… 107
2.7.5 多節點CAN 總綫通信中的從節點源程序………………………… 108
2.8 CAN 總綫地址設置詳解…………………………………………………… 113
2.8.1 BasicCAN 的ID設置方法…………………………………………… 113
2.8.2 PeliCAN 的ID設置方法…………………………………………… 113
第3章 CAN 控製器MCP2515與8051係列單片機接口設計………………… 115
3.1 CAN 控製器MCP2515 …………………………………………………… 115
3.1.1 MCP2515概述………………………………………………………… 115
3.1.2 MCP2515的內部寄存器……………………………………………… 118
3.1.3 8051係列單片機怎樣控製MCP2515 ……………………………… 119
3.2 CAN 總綫學習闆(MCP2515)實物圖…………………………………… 119
3.3 CAN 總綫學習闆(MCP2515)硬件電路設計…………………………… 120
3.3.1 電路原理圖…………………………………………………………… 120
3.3.2 晶振的選擇及CAN 通信波特率的計算…………………………… 125
3.4 雙節點通信係統的程序設計……………………………………………… 127
3.4.1 程序頭文件定義說明………………………………………………… 127
3.4.2 子函數詳解…………………………………………………………… 132
3.4.3 完整的CAN 總綫學習闆發送源程序……………………………… 140
3.4.4 完整的CAN 總綫學習闆CAN 轉232串口源程序………………… 144
3.5 芯片SJA1000和MCP2515在濾波器設置時的區彆…………………… 147
第4章 CAN 總綫在A/D 采集控製闆傳輸中的應用…………………………… 149
4.1 ADμC812單片機簡介……………………………………………………… 149
4.1.1 ADμC812單片機主要性能及引腳說明……………………………… 149
4.1.2 ADμC812單片機8路12位ADC簡介…………………………… 151
4.1.3 ADμC812單片機ADC基準電壓…………………………………… 151
4.1.4 ADμC812單片機ADC的輸入驅動………………………………… 153
4.1.5 ADμC812單片機ADC工作模式…………………………………… 155
4.2 帶有CAN 總綫的A/D采集控製闆實物圖……………………………… 157
4.3 係統硬件電路設計………………………………………………………… 158
4.3.1 電路原理圖…………………………………………………………… 158
4.3.2 采集信號的調理……………………………………………………… 163
4.4 係統程序設計……………………………………………………………… 164
4.4.1 流程圖………………………………………………………………… 164
4.4.2 子函數詳解…………………………………………………………… 165
4.4.3 控製源程序…………………………………………………………… 165
4.4.4 ADμC812單片機CAN 總綫學習闆串口下載程序………………… 173
4.5 帶有Flash存儲器的CAN 總綫采集控製電路………………………… 176
4.5.1 28F320J5存儲器簡介………………………………………………… 176
4.5.2 存儲器芯片與單片機CPU 工作速度匹配問題…………………… 179
4.5.3 單片機與28F320J5的連接………………………………………… 179
4.5.4 ADμC812單片機構成的帶有存儲功能的振動測量控製闆………… 179
第5章 基於LPC11Cxx係列微控製器的CAN 應用設計……………………… 198
5.1 LPC11Cxx係列微控製器………………………………………………… 198
5.1.1 簡 介………………………………………………………………… 198
5.1.2 器件信息……………………………………………………………… 198
5.1.3 功能介紹……………………………………………………………… 199
5.1.4 引腳描述……………………………………………………………… 199
5.2 CAN 寄存器………………………………………………………………… 200
5.2.1 CAN 寄存器匯總……………………………………………………… 202
5.2.2 報文接口寄存器……………………………………………………… 207
5.2.3 報文處理程序寄存器………………………………………………… 216
5.2.4 CAN 時鍾分頻器寄存器……………………………………………… 219
5.3 LPC11Cxx係列微控製器的片上CAN 控製器的結構………………… 219
5.4 基於微控製器和非隔離CAN 收發器的電路…………………………… 220
5.4.1 器件簡介……………………………………………………………… 220
5.4.2 接口電路設計………………………………………………………… 221
5.5 基於微控製器和隔離CAN 收發器的電路……………………………… 222
5.5.1 器件簡介……………………………………………………………… 222
5.5.2 接口電路設計………………………………………………………… 223
5.6 無須擴展外部CAN 控製器與CAN 收發器的CAN 接口電路………… 223
5.7 基於通用驅動庫的CAN 應用編程……………………………………… 224
5.7.1 通用驅動庫簡介……………………………………………………… 224
5.7.2 CAN 應用編程流程…………………………………………………… 270
5.7.3 編程解決方案………………………………………………………… 271
5.8 應用示例———RS 232C/CAN 總綫轉換器……………………………… 293
5.8.1 示例簡介……………………………………………………………… 293
5.8.2 工具介紹……………………………………………………………… 294
5.8.3 實現原理……………………………………………………………… 301
5.8.4 演示步驟……………………………………………………………… 301
5.9 程序編寫…………………………………………………………………… 304
5.9.1 宏配置………………………………………………………………… 304
5.9.2 變量定義……………………………………………………………… 305
5.9.3 主程序………………………………………………………………… 305
5.9.4 程序分解……………………………………………………………… 308
5.10 示例運行…………………………………………………………………… 311
5.10.1 配置上位機軟件……………………………………………………… 311
5.10.2 運行示例程序………………………………………………………… 312
第6章 CAN 總綫在酒店客房智能化係統中的應用…………………………… 316
6.1 功能要求及方案論證……………………………………………………… 316
6.1.1 控製說明……………………………………………………………… 317
6.1.2 網絡結構……………………………………………………………… 319
6.1.3 硬件成本……………………………………………………………… 320
6.1.4 通信協議及CAN 地址分配………………………………………… 322
6.2 客房終端…………………………………………………………………… 322
6.3 客房終端硬件電路設計…………………………………………………… 323
6.3.1 電源部分電路設計…………………………………………………… 323
6.3.2 多按鍵中斷資源設計………………………………………………… 324
6.3.3 多繼電器驅動電路設計……………………………………………… 325
6.3.4 燈具調光電路設計…………………………………………………… 326
6.3.5 CAN 總綫通信電路設計……………………………………………… 326
6.4 軟件設計…………………………………………………………………… 328
6.4.1 程序流程圖…………………………………………………………… 328
6.4.2 SJA1000控製器CAN 字節協議…………………………………… 328
6.4.3 客房終端源程序……………………………………………………… 330
6.4.4 CAN 總綫控製模塊…………………………………………………… 345
6.4.5 CAN 總綫控製模塊原理……………………………………………… 346
6.4.6 CAN 總綫控製模塊源程序…………………………………………… 347
參考文獻……………………………………………………………………………… 356
前言/序言
自本書第1版和讀者見麵以來,我們可喜地看到CAN總綫技術在我國各行業的應用越來越廣泛。本書“電路共享、源碼開放”的寫作理念得到讀者的廣泛認可,這一點可以從讀者反饋及當當網的銷售評論中得以見證。
感謝行業內的讀者對該書第一版中的錯誤提齣的寶貴修改建議,本書第2版中已經對其進行瞭更正。應廣大讀者的要求,結閤近幾年的CAN項目工程實踐,本版次中增加瞭改善電磁兼容性的措施、CAN網絡的實時性能及通信波特率設置、CAN總綫節點設備的電源等與工程應用結閤非常緊密的內容。
本書在編寫的過程中,注重代碼程序的完整性,願意和那些注重代碼完整性的讀者交流,研討技術問題。有興趣的讀者可以發送電子郵件,期待和您進一步交流。
作者
2016年3月
CAN 總綫嵌入式開發—從入門到實戰(第2版) 深入淺齣,引領您掌握 CAN 總綫嵌入式開發的精髓與實踐。 隨著汽車電子、工業自動化、醫療設備等領域的飛速發展,高效、可靠的通信總綫技術成為支撐這些應用的關鍵。在眾多通信協議中,CAN(Controller Area Network)總綫以其獨特的優勢,在嵌入式係統中扮演著至關重要的角色。它以其高穩定性、低成本、強大的抗乾擾能力以及靈活的網絡拓撲,成為實現分布式控製的理想選擇。 本書《CAN 總綫嵌入式開發—從入門到實戰(第2版)》正是一本為緻力於掌握 CAN 總綫嵌入式開發技術的讀者量身打造的權威指南。作為該領域的經典之作的全新升級,本書在內容深度、廣度及實用性上都進行瞭全麵的梳理與拓展,旨在幫助讀者從零基礎迅速入門,逐步深入,最終能夠獨立完成復雜的 CAN 總綫嵌入式係統設計與開發。 本書的核心價值在於其係統性的知識體係構建和貼近實戰的開發流程展現。 第一部分:奠定堅實基礎,深入理解 CAN 總綫原理 在正式進入嵌入式開發之前,對 CAN 總綫本身有著深刻的理解至關重要。本書首先從最基礎的概念入手,詳細闡述瞭 CAN 總綫的曆史淵源、發展現狀及其在各個行業的應用場景。讀者將在這裏瞭解到 CAN 總綫為何能夠成為工業界和汽車界廣泛采用的標準,其核心優勢體現在何處。 接著,本書將逐一剖析 CAN 總綫的核心技術特性。這包括: 報文幀結構: 深入解析 CAN 報文的各個組成部分,例如仲裁場、控製場、數據場、CRC 校驗以及應答場等。讀者將理解不同字段的含義及其在保證通信可靠性中的作用。 通信機製: 詳細介紹 CAN 總綫的多主總綫和事件觸發通信方式。理解報文的優先級仲裁機製(基於 CSMA/CD+AMP)是掌握 CAN 總綫通信的關鍵。本書將通過大量的圖示和實例,清晰地解釋不同優先級報文如何進行競爭,以及最終如何保證高優先級報文的優先發送,從而實現高效穩定的數據傳輸。 錯誤檢測與處理: CAN 總綫之所以穩定可靠,很大程度上歸功於其強大的錯誤檢測和處理機製。本書將深入講解位錯誤、填充錯誤、CRC 錯誤、格式錯誤和確認錯誤等各種類型的錯誤,以及 CAN 控製器如何主動進行錯誤報告和錯誤幀的發送。同時,也會探討總綫關閉(Bus Off)等高級錯誤狀態的管理。 物理層與電氣特性: 瞭解 CAN 總綫的物理層設計,包括差分信號傳輸、總綫終端電阻的作用,以及不同 CAN 標準(如 CAN FD)在傳輸速率和數據吞吐量上的提升。 通過這一部分的學習,讀者將建立起對 CAN 總綫通信原理的全麵認知,為後續的嵌入式開發打下堅實的基礎。 第二部分:邁入實戰,掌握嵌入式開發的關鍵技能 理論的海洋固然重要,但脫離實踐的知識是空洞的。本書的精華之處在於將抽象的 CAN 總綫原理與具體的嵌入式開發緊密結閤,帶領讀者一步步走嚮實戰。 硬件選型與配置: 針對不同的嵌入式應用場景,本書將引導讀者選擇閤適的微控製器(MCU)平颱,並詳細介紹常見的 CAN 控製器接口。讀者將學習如何根據項目需求,從眾多的 MCU 係列中做齣明智的選擇,並瞭解不同 MCU 係列的 CAN 外設特性。 軟件開發環境搭建: 熟悉嵌入式開發流程的讀者會知道,高效的開發環境是事半功倍的保證。本書將詳細介紹常用的嵌入式集成開發環境(IDE),以及如何進行 CAN 驅動程序的開發和調試。無論是使用特定的 MCU SDK,還是利用通用的 RTOS(實時操作係統)框架,本書都會提供清晰的指導。 CAN 驅動程序設計: 這是本書的重頭戲。讀者將學習如何編寫底層的 CAN 驅動程序,包括: CAN 控製器初始化: 如何配置 CAN 控製器的波特率、工作模式(如正常模式、迴環模式、靜默模式等)以及郵箱(Mailbox)的分配。 報文發送: 講解如何構造 CAN 報文,填寫標識符、數據長度碼(DLC)以及數據內容,並將報文成功發送到總綫上。 報文接收: 介紹如何配置接收濾波,以精確地接收目標報文,並講解如何從接收郵箱中讀取接收到的報文數據。 中斷處理: 深入講解 CAN 中斷的原理,包括發送完成中斷、接收中斷、錯誤中斷等,並指導讀者如何編寫高效的中斷服務程序(ISR),以實現實時高效的數據處理。 RTOS 與 CAN 總綫集成: 在許多復雜的嵌入式係統中,實時操作係統(RTOS)是必不可少的。本書將重點講解如何將 CAN 總綫通信與 RTOS 相結閤。這包括: 任務設計: 如何設計獨立的任務來處理 CAN 報文的發送和接收,以及如何利用 RTOS 的同步機製(如信號量、消息隊列)來協調任務間的通信。 中斷與 RTOS 的配閤: 探討如何在 RTOS 的中斷上下文中安全地處理 CAN 中斷,以及如何通過發送信號量或消息隊列來喚醒等待的任務。 常用 RTOS 平颱的 CAN 示例: 可能會針對 FreeRTOS、RT-Thread 等流行的 RTOS,提供具體的 CAN 應用示例,幫助讀者快速上手。 第三部分:進階應用與實戰項目,夯實技術能力 在掌握瞭 CAN 總綫的基礎原理和核心開發技能後,本書將帶領讀者進入更高級的領域,並通過一係列貼近實際的開發項目,鞏固所學知識,提升解決實際問題的能力。 CAN FD(Flexible Data-Rate)深入解析: 隨著數據量的不斷增加,傳統的 CAN 2.0B 速率已顯不足。本書將詳細介紹 CAN FD 的優勢,包括更高的比特率、更大的數據載荷,以及如何對現有 CAN 應用進行升級以支持 CAN FD。讀者將學習 CAN FD 報文的幀結構差異,以及在硬件和軟件上需要進行的相應調整。 CAN 協議棧的理解與應用: 在實際應用中,我們往往需要更高級彆的協議來規範 CAN 總綫上的數據通信。本書將介紹一些常見的 CAN 協議棧,例如: J1939: 在商用車領域廣泛應用,本書將介紹 J1939 的基本概念、消息格式以及如何在嵌入式係統中實現 J1939 協議棧。 CANopen: 在工業自動化領域應用廣泛,本書將詳細講解 CANopen 的對象字典(Object Dictionary)、服務數據對象(SDO)、過程數據對象(PDO)和網絡管理(NMT)等關鍵概念,並提供相應的開發指南。 自定義協議設計: 對於一些特定的應用場景,可能需要設計自有的 CAN 通信協議。本書將提供設計高效、可靠自定義 CAN 協議的原則和方法。 CAN 總綫網絡設計與調試: 一個完整的 CAN 應用不僅僅是單個節點的開發,更重要的是整個網絡的協同工作。本書將討論: 網絡拓撲選擇: 如何根據應用需求選擇閤適的 CAN 網絡拓撲。 報文 ID 分配策略: 講解如何閤理分配 CAN 報文的標識符,以避免衝突,並優化總綫利用率。 總綫負載分析與優化: 如何通過工具和方法來分析 CAN 總綫的負載情況,並采取有效措施來降低總綫負載,提高通信效率。 CAN 總綫故障診斷與排除: 提供實用的方法和工具,幫助讀者快速定位和解決 CAN 總綫通信中齣現的各種問題。 典型實戰項目: 本書將提供幾個完整的、具有代錶性的實戰項目,例如: 多節點分布式數據采集係統: 使用 CAN 總綫連接多個傳感器節點,並將采集到的數據統一發送到主控節點。 電機控製係統: 通過 CAN 總綫實現主控製器與電機驅動器之間的通信,實現精確的電機速度和位置控製。 車載診斷(OBD-II)接口開發: 學習如何通過 CAN 總綫與車載診斷係統進行交互,讀取車輛故障碼和實時數據。 工業機器人通信: 使用 CANopen 或自定義協議實現機器人各關節模塊與主控製器之間的通信。 智能傢居總綫控製: 將 CAN 總綫應用於智能傢居設備的互聯互通。 這些實戰項目將涵蓋從硬件連接、軟件編寫、參數配置到整體調試的全過程,讓讀者在實踐中深化理解,掌握解決復雜問題的能力。 本書的亮點特色: 由淺入深,循序漸進: 結構清晰,邏輯嚴謹,從基礎概念到高級應用,層層遞進,適閤不同層次的讀者。 理論與實踐並重: 既有對 CAN 總綫原理的深入剖析,又有大量的代碼示例和實戰項目,確保讀者學以緻用。 權威性與前沿性結閤: 融閤瞭 CAN 總綫最新的發展趨勢,例如 CAN FD 的應用,以及各種主流的協議棧介紹。 豐富的圖示與案例: 大量的原理圖、時序圖、報文結構圖以及代碼片段,幫助讀者更直觀地理解抽象概念。 貼近實際開發環境: 針對當下流行的 MCU 平颱和 RTOS 進行瞭詳細介紹和示例演示。 強調調試技巧: 提供瞭實用的 CAN 總綫調試方法和工具使用指南,幫助讀者快速定位和解決問題。 適閤讀者群體: 嵌入式係統初學者: 希望快速掌握 CAN 總綫通信技術的工程師和學生。 有一定嵌入式開發經驗的工程師: 想要深入瞭解 CAN 總綫,並將其應用於實際項目的開發者。 汽車電子、工業自動化、醫療設備等行業的從業人員: 需要掌握 CAN 總綫技術以應對工作需求的專業人士。 對物聯網(IoT)和分布式控製係統感興趣的讀者。 《CAN 總綫嵌入式開發—從入門到實戰(第2版)》不僅僅是一本書,更是您在 CAN 總綫嵌入式開發領域的一位得力夥伴。它將陪伴您從零開始,逐步成長為一名齣色的 CAN 總綫開發者,為您的職業生涯開闢更廣闊的道路。無論您是想為下一代智能産品注入新的活力,還是想優化現有的工業控製係統,本書都將為您提供堅實的技術支撐和寶貴的實踐經驗。 立即翻開本書,開啓您的 CAN 總綫探索之旅!