第1章 CAN總線基礎(chǔ)知識 1
1.1 CAN總線簡介 1
1.2 CAN總線基本工作原理 3
1.3 CAN的標(biāo)準(zhǔn)格式和擴(kuò)展格式 4
1.4 CAN的節(jié)點硬件構(gòu)成 4
1.5 CAN控制器 5
1.6 CAN收發(fā)器 6
1.7 CAN總線接口電路保護(hù)器件 7
1.7.1 共模扼流圈 7
1.7.2 ESD防護(hù) 8
1.7.3 CAN總線網(wǎng)絡(luò)保護(hù) 8
1.8 CAN總線通信過程 9
1.9 CAN總線控制器芯片濾波器的作用 10
1.10 CAN總線的報文格式 11
1.10.1 數(shù)據(jù)幀 11
1.10.2 遠(yuǎn)程幀 14
1.10.3 錯誤幀 15
1.10.4 過載幀 16
1.10.5 “幀間”空間 17
1.11 振蕩器容差 18
1.12 位定時要求 18
1.13 同 步 19
1.14 位流編碼及位填充 23
1.15 CAN總線錯誤處理 23
1.15.1 錯誤類型 23
1.15.2 錯誤標(biāo)志 24
1.16 故障界定 24
1.16.1 故障界定的方法 24
1.16.2 錯誤計數(shù)規(guī)則 24
1.16.3 錯誤標(biāo)記及錯誤中斷類型 26
1.17 CAN網(wǎng)絡(luò)與節(jié)點的總線拓?fù)浣Y(jié)構(gòu) 26
1.17.1 總線結(jié)構(gòu)拓?fù)? 27
1.17.2 CAN總線通信距離 27
1.17.3 CAN中繼器 28
1.17.4 CAN網(wǎng)橋 30
1.17.5 CAN集線器 31
1.17.6 CAN網(wǎng)關(guān) 31
1.18 CAN總線傳輸介質(zhì) 32
1.18.1 雙絞線 32
1.18.2 光 纖 36
1.19 改善電磁兼容性的措施 37
1.19.1 增加電阻值抑制共模干擾 37
1.19.2 分開的總線終端 38
1.19.3 斜率控制 38
1.20 CAN網(wǎng)絡(luò)的實時性能及通信波特率的設(shè)置 39
1.20.1 網(wǎng)絡(luò)延時 39
1.20.2 CAN網(wǎng)絡(luò)通信速率選擇 40
1.20.3 CAN網(wǎng)絡(luò)通信速率的一致性 41
1.21 CAN總線節(jié)點設(shè)備的電源 43
第2章 CAN控制器SJA1000與8051系列單片機(jī)接口設(shè)計 47
2.1 CAN控制器SJA1000 47
2.1.1 SJA1000引腳排列及其功能 47
2.1.2 BasicCAN模式下內(nèi)部寄存器地址表 50
2.1.3 PeliCAN模式下內(nèi)部寄存器地址表 51
2.1.4 BasicCAN和PeliCAN模式的區(qū)別 53
2.1.5 8051系列單片機(jī)控制SJA1000的方式 53
2.1.6 SJA1000的濾波器設(shè)置 54
2.1.7 CAN總線通信波特率的計算 59
2.1.8 SJA1000初始化流程 61
2.2 CAN總線驅(qū)動器 62
2.2.1 TJA1040概述 62
2.2.2 TJA1040功能 63
2.3 CAN總線DC/DC光電隔離技術(shù) 64
2.3.1 DC/DC電源隔離模塊 64
2.3.2 高速光耦6N137 67
2.4 51系列單片機(jī)CAN總線學(xué)習(xí)板實物圖 67
2.5 51系列單片機(jī)CAN總線學(xué)習(xí)板硬件電路設(shè)計 69
2.5.1 電路原理圖 69
2.5.2 SJA1000晶振的電路設(shè)計 70
2.6 雙節(jié)點CAN總線通信 76
2.6.1 程序流程框圖設(shè)計 77
2.6.2 SJA1000的硬件接口地址定義 78
2.6.3 程序頭文件定義說明 79
2.6.4 子函數(shù)詳解 83
2.6.5 完整的CAN總線學(xué)習(xí)板發(fā)送源程序 92
2.6.6 完整的CAN總線學(xué)習(xí)板CAN轉(zhuǎn)232串口源程序 98
2.6.7 STC89C52單片機(jī)串口下載程序 105
2.7 多節(jié)點CAN總線系統(tǒng)的程序設(shè)計 107
2.7.1 多節(jié)點CAN總線系統(tǒng)的連接 107
2.7.2 多節(jié)點CAN總線系統(tǒng)地址的定義及功能實現(xiàn) 108
2.7.3 多節(jié)點CAN總線系統(tǒng)通信數(shù)據(jù)含義 108
2.7.4 多節(jié)點CAN總線系統(tǒng)程序流程圖 110
2.7.5 多節(jié)點CAN總線通信中的從節(jié)點源程序 111
2.8 CAN總線地址設(shè)置詳解 116
2.8.1 BasicCAN的ID設(shè)置方法 116
2.8.2 PeliCAN的ID設(shè)置方法 116
2.9 如何監(jiān)測CAN網(wǎng)絡(luò)節(jié)點的工作狀態(tài) 117
2.9.1 問題的引出 117
2.9.2 只有2個節(jié)點的簡單CAN總線網(wǎng)絡(luò) 118
2.9.3 大于2個節(jié)點的CAN總線網(wǎng)絡(luò) 119
2.9.4 CAN總線應(yīng)用層協(xié)議中的節(jié)點狀態(tài)監(jiān)測 122
第3章 CAN控制器 MCP2515與8051系列單片機(jī)接口設(shè)計 123
3.1 CAN控制器 MCP2515 123
3.1.1 MCP2515概述 123
3.1.2 MCP2515的內(nèi)部寄存器 126
3.1.3 8051系列單片機(jī)怎樣控制 MCP2515 127
3.2 CAN總線學(xué)習(xí)板(MCP2515)實物圖 127
3.3 CAN總線學(xué)習(xí)板(MCP2515)硬件電路設(shè)計 128
3.3.1 電路原理圖 128
3.3.2 晶振的選擇及CAN通信波特率的計算 133
3.4 雙節(jié)點通信系統(tǒng)的程序設(shè)計 135
3.4.1 程序頭文件定義說明 135
3.4.2 子函數(shù)詳解 140
3.4.3 完整的CAN總線學(xué)習(xí)板發(fā)送源程序 148
3.4.4 完整的CAN總線學(xué)習(xí)板CAN轉(zhuǎn)232串口源程序 152
3.5 芯片SJA1000和 MCP2515在濾波器設(shè)置時的區(qū)別 155
第4章 基于STM32的CAN2.0A協(xié)議通信程序 157
4.1 基于STM32的CAN總線學(xué)習(xí)板硬件電路設(shè)計實例 157
4.2 學(xué)習(xí)板實現(xiàn)的功能 157
4.3 學(xué)習(xí)板硬件選擇及電路構(gòu)成 159
4.4 STM32F103RBT6的CAN接口 161
4.5 程序流程圖 174
第5章 CAN總線在A/D采集控制板傳輸中的應(yīng)用 176
5.1 ADμC812單片機(jī)簡介 176
5.1.1 ADμC812單片機(jī)主要性能及引腳說明 176
5.1.2 ADμC812單片機(jī)8路12位 ADC簡介 178
5.1.3 ADμC812單片機(jī) ADC基準(zhǔn)電壓 178
5.1.4 ADμC812單片機(jī) ADC的輸入驅(qū)動 180
5.1.5 ADμC812單片機(jī) ADC工作模式 182
5.2 帶有CAN總線的A/D采集控制板實物圖 184
5.3 系統(tǒng)硬件電路設(shè)計 K鎋y喺搌_譢'3185
5.3.1 電路原理圖 185
5.3.2 采集信號的調(diào)理 190
5.4 系統(tǒng)程序設(shè)計 191
5.4.1 流程圖 191
5.4.2 子函數(shù)詳解 192
5.4.3 控制源程序 192
5.4.4 ADμC812單片機(jī)CAN總線學(xué)習(xí)板串口下載程序 200
5.5 帶有Flash存儲器的CAN總線采集控制電路 203
5.5.1 28F320J5存儲器簡介 203
5.5.2 存儲器芯片與單片機(jī)CPU工作速度匹配問題 206
5.5.3 單片機(jī)與28F320J5的連接 206
5.5.4 ADμC812單片機(jī)構(gòu)成的帶有存儲功能的振動測量控制板 206
第6章 基于LPC11Cxx系列微控制器的CAN應(yīng)用設(shè)計 225
6.1 LPC11Cxx系列微控制器 225
6.1.1 簡 介 225
6.1.2 器件信息 225
6.1.3 功能介紹 226
6.1.4 引腳描述 226
6.2 CAN寄存器 227
6.2.1 CAN寄存器匯總 229
6.2.2 報文接口寄存器 234
6.2.3 報文處理程序寄存器 243
6.2.4 CAN時鐘分頻器寄存器 246
6.3 LPC11Cxx系列微控制器的片上CAN控制器的結(jié)構(gòu) 246
6.4 基于微控制器和非隔離CAN收發(fā)器的電路 247
6.4.1 器件簡介 247
6.4.2 接口電路設(shè)計 248
6.5 基于微控制器和隔離CAN收發(fā)器的電路 249
6.5.1 器件簡介 249
6.5.2 接口電路設(shè)計 250
6.6 無須擴(kuò)展外部CAN控制器與CAN收發(fā)器的CAN接口電路 250
6.7 基于通用驅(qū)動庫的CAN應(yīng)用編程 251
6.7.1 通用驅(qū)動庫簡介 251
6.7.2 CAN應(yīng)用編程流程 297
6.7.3 編程解決方案 298
6.8 應(yīng)用示例———RS 232C/CAN總線轉(zhuǎn)換器 320
6.8.1 示例簡介 320
6.8.2 工具介紹 321
6.8.3 實現(xiàn)原理 328
6.8.4 演示步驟 328
6.9 程序編寫 331
6.9.1 宏配置 331
6.9.2 變量定義 332
6.9.3 主程序 332
6.9.4 程序分解 335
6.10 示例運(yùn)行 338
6.10.1 配置上位機(jī)軟件 338
6.10.2 運(yùn)行示例程序 339
第7章 CAN 總線在酒店客房智能化系統(tǒng)中的應(yīng)用 343
7.1 功能要求及方案論證 343
7.1.1 控制說明 344
7.1.2 網(wǎng)絡(luò)結(jié)構(gòu) 346
7.1.3 硬件成本 347
7.1.4 通信協(xié)議及CAN地址分配 349
7.2 客房終端 349
7.3 客房終端硬件電路設(shè)計 350
7.3.1 電源部分電路設(shè)計 350
7.3.2 多按鍵中斷資源設(shè)計 351
7.3.3 多繼電器驅(qū)動電路設(shè)計 352
7.3.4 燈具調(diào)光電路設(shè)計 353
7.3.5 CAN總線通信電路設(shè)計 353
7.4 軟件設(shè)計 355
7.4.1 程序流程圖 355
7.4.2 SJA1000控制器CAN字節(jié)協(xié)議 355
7.4.3 客房終端源程序 357
7.4.4 CAN總線控制模塊 372
7.4.5 CAN總線控制模塊原理 373
7.4.6 CAN總線控制模塊源程序 374
參考文獻(xiàn) 383