本書以工程實踐和應(yīng)用設(shè)計作為主線,以工業(yè)領(lǐng)域常用的32位ARM Cortex-M3處理器STM32F103系列為核心,重點(diǎn)闡述了嵌入式系統(tǒng)設(shè)計過程中的共性方法和共性關(guān)鍵技術(shù)。在講解嵌入式系統(tǒng)設(shè)計方法和原理的過程中,融入了作者在嵌入系統(tǒng)設(shè)計方面的科研成果和開發(fā)經(jīng)驗,具有理論與實踐、軟件與硬件、科研與教學(xué)的有機(jī)結(jié)合并協(xié)同交互之特色。便于讀者通過具體的工程實踐案例,輕松掌握枯燥的理論知識、復(fù)雜的設(shè)計方法,在實踐中全面掌握嵌入式系統(tǒng)的基本原理、設(shè)計方法和接口技術(shù),以建立和提高對復(fù)雜嵌入式系統(tǒng)的抽象能力。
前 言
嵌入式系統(tǒng)是一種專用的計算機(jī)系統(tǒng),具有體積小、功耗低、計算資源豐富、網(wǎng)絡(luò)通信功能強(qiáng)、軟硬件資源可裁剪等特點(diǎn),涉及人類生活的方方面面。嵌入式系統(tǒng)可獨(dú)立運(yùn)行與應(yīng)用,也可作為智能裝置或設(shè)備的一部分,在汽車電子、消費(fèi)電子、航空航天、現(xiàn)代電力行業(yè)、醫(yī)療儀器、工業(yè)儀器儀表及其智能裝備等領(lǐng)域應(yīng)用極為廣泛。
近年來,嵌入式系統(tǒng)得到了廣泛的應(yīng)用和飛速的發(fā)展,涉及人類生活、工作和學(xué)習(xí)的各個方面。據(jù)不完全統(tǒng)計,一個人一天當(dāng)中會接觸到50多個嵌入式系統(tǒng)設(shè)備。由于嵌入式系 前 言
嵌入式系統(tǒng)是一種專用的計算機(jī)系統(tǒng),具有體積小、功耗低、計算資源豐富、網(wǎng)絡(luò)通信功能強(qiáng)、軟硬件資源可裁剪等特點(diǎn),涉及人類生活的方方面面。嵌入式系統(tǒng)可獨(dú)立運(yùn)行與應(yīng)用,也可作為智能裝置或設(shè)備的一部分,在汽車電子、消費(fèi)電子、航空航天、現(xiàn)代電力行業(yè)、醫(yī)療儀器、工業(yè)儀器儀表及其智能裝備等領(lǐng)域應(yīng)用極為廣泛。
近年來,嵌入式系統(tǒng)得到了廣泛的應(yīng)用和飛速的發(fā)展,涉及人類生活、工作和學(xué)習(xí)的各個方面。據(jù)不完全統(tǒng)計,一個人一天當(dāng)中會接觸到50多個嵌入式系統(tǒng)設(shè)備。由于嵌入式系統(tǒng)涉及的應(yīng)用領(lǐng)域非常廣泛,彼此之間的特點(diǎn)也相當(dāng)明顯。例如,智能手機(jī)、PDA、車載導(dǎo)航、工控、軍工、多媒體通信終端、網(wǎng)關(guān)、數(shù)字電視等。針對不同的應(yīng)用領(lǐng)域,微處理器的選型、接口技術(shù)、集成開發(fā)環(huán)境、操作系統(tǒng)及應(yīng)用軟件等方面有很大的差異。組織和編寫一部能夠反映嵌入式系統(tǒng)共性技術(shù)的教材,以滿足學(xué)生和工程技術(shù)人員在短期內(nèi)掌握嵌入式系統(tǒng)的原理和設(shè)計方法的學(xué)習(xí)需求就顯得尤為重要。作者經(jīng)過廣泛調(diào)研和論證,結(jié)合近十年在嵌入式技術(shù)領(lǐng)域的教學(xué)實踐經(jīng)驗、嵌入式系統(tǒng)設(shè)計方面的科研經(jīng)歷和長期指導(dǎo)各項電子設(shè)計類競賽經(jīng)驗,將理論與實踐、軟件與硬件、科研成果與教學(xué)經(jīng)驗有機(jī)融合,編寫此教材。本書的章節(jié)設(shè)置和內(nèi)容安排便于讀者通過具體的工程案例輕松掌握枯燥的理論知識、復(fù)雜的設(shè)計方法,在實踐中全面掌握嵌入式系統(tǒng)的基本原理、設(shè)計方法和接口技術(shù),以建立和提高對復(fù)雜嵌入式系統(tǒng)的抽象能力。
本書分為9章,第1~4章介紹嵌入式系統(tǒng)設(shè)計和開發(fā)的基礎(chǔ)知識、基本方法及相關(guān)開發(fā)工具。第5~9章以STM32系列微處理器為核心,結(jié)合嵌入式系統(tǒng)設(shè)計和開發(fā)中的共性關(guān)鍵技術(shù),通過工程案例學(xué)習(xí)和掌握嵌入式系統(tǒng)的基本原理及在工程應(yīng)用中涉及的通用技術(shù)、設(shè)計思想和方法。作者力圖通過本書的學(xué)習(xí)和實踐,引導(dǎo)讀者既能快速入門,全面掌握嵌入式系統(tǒng)的基本原理和應(yīng)用開發(fā)方法,又達(dá)到舉一反三的目的,拓展嵌入式系統(tǒng)的設(shè)計理念和方法,為今后從事更先進(jìn)的嵌入式系統(tǒng)設(shè)計和開發(fā)打下扎實的基礎(chǔ)。
本書理論聯(lián)系實際、內(nèi)容新穎,可供普通高等院校通信工程、電子科學(xué)與技術(shù)、計算機(jī)科學(xué)與技術(shù)、控制科學(xué)與工程領(lǐng)域的本科生或碩士生作為嵌入式系統(tǒng)課程教學(xué)教材,也可供嵌入式領(lǐng)域技術(shù)人員學(xué)習(xí)參考。
由于作者水平有限,書中錯誤和不當(dāng)之處在所難免,敬請讀者批評指正。
本書涉及的工程案例來源于作者的科研項目,相關(guān)項目得到國家自然科學(xué)基金“基于仿生視覺感知機(jī)理的金屬板帶表面缺陷在線檢測方法研究”(61273170)、教育部博士點(diǎn)基金“水下目標(biāo)檢測識別與跟蹤若干問題研究”(20120094120023)和常州市機(jī)器人與智能裝備科技專項“基于機(jī)器視覺的銅帶表面缺陷在線檢測系統(tǒng)”(CE20120101)的資助,在此表示感謝!
作 者
張學(xué)武,河海大學(xué)物聯(lián)網(wǎng)工程學(xué)院副院長,主要從事仿生智能傳感與計算、圖像處理與計算機(jī)視覺等方面的研究。目前主持國家自然科學(xué)基金(面上項目)、教育部高等學(xué)校博士學(xué)科點(diǎn)專項科研基金和常州市機(jī)器人和智能裝備科技專項各1項。在國內(nèi)外期刊和國際學(xué)術(shù)會議上發(fā)表論文70 余篇,其中SCI/EI/ISTP三大檢索論文30 余篇。獲授權(quán)中國發(fā)明專利10 項,獲授權(quán)計算機(jī)軟件著作權(quán)10 項。獲河海大學(xué)青年教師講課競賽二等獎,第十屆全國“挑戰(zhàn)杯”大學(xué)生課外科技學(xué)術(shù)競賽教師優(yōu)秀指導(dǎo)教師、獲中國電子學(xué)會通信電子信息類實踐教學(xué)成果一等獎1 項、獲中國電子學(xué)會電子信息科學(xué)技術(shù)三等獎1 項。
第1章 緒 論 1
1.1 嵌入式系統(tǒng)概述 1
1.1.1 嵌入式系統(tǒng)的概述 1
1.1.2 嵌入式系統(tǒng)的特征 2
1.1.3 嵌入式系統(tǒng)的組成 5
1.1.4 嵌入式系統(tǒng)的現(xiàn)狀及發(fā)展趨勢 6
1.2 嵌入式處理器 8
1.2.1 哈佛結(jié)構(gòu)和馮諾依曼結(jié)構(gòu) 8
1.2.2 CISC指令集與RISC指令集 9
1.2.3 x86指令集和ARM指令集 11
1.2.4 通用處理器(x86)與嵌入式處理器(ARM)小結(jié) 12
1.2.5 嵌入式處理器的分類 13
1.3 嵌入式操作系統(tǒng) 16
1.3.1 嵌入式操作系統(tǒng)的概述 16
1.3.2 常見的嵌入式操作系統(tǒng) 16
第1章 緒 論 1
1.1 嵌入式系統(tǒng)概述 1
1.1.1 嵌入式系統(tǒng)的概述 1
1.1.2 嵌入式系統(tǒng)的特征 2
1.1.3 嵌入式系統(tǒng)的組成 5
1.1.4 嵌入式系統(tǒng)的現(xiàn)狀及發(fā)展趨勢 6
1.2 嵌入式處理器 8
1.2.1 哈佛結(jié)構(gòu)和馮諾依曼結(jié)構(gòu) 8
1.2.2 CISC指令集與RISC指令集 9
1.2.3 x86指令集和ARM指令集 11
1.2.4 通用處理器(x86)與嵌入式處理器(ARM)小結(jié) 12
1.2.5 嵌入式處理器的分類 13
1.3 嵌入式操作系統(tǒng) 16
1.3.1 嵌入式操作系統(tǒng)的概述 16
1.3.2 常見的嵌入式操作系統(tǒng) 16
第2章 嵌入式系統(tǒng)工程設(shè)計概述 20
2.1 嵌入式系統(tǒng)設(shè)計的基本流程 20
2.1.1 需求分析 20
2.1.2 詳細(xì)說明 21
2.1.3 結(jié)構(gòu)設(shè)計 21
2.1.4 組件設(shè)計 24
2.1.5 系統(tǒng)集成 25
2.2 嵌入式系統(tǒng)設(shè)計的流程模型 26
2.2.1 瀑布模型 26
2.2.2 逐步求精模型 27
2.2.3 螺旋模型 27
2.3 嵌入式系統(tǒng)的開發(fā)模式 28
2.3.1 面向硬件的開發(fā)模式 29
2.3.2 面向軟件的開發(fā)模式 29
2.3.3 兩種開發(fā)模式的區(qū)別與聯(lián)系 29
第3章 ARM嵌入式處理器 31
3.1 ARM嵌入式處理器簡介 31
3.1.1 ARM處理器的特點(diǎn) 32
3.1.2 ARM體系結(jié)構(gòu)的版本及系列 32
3.1.3 ARM處理器核系列 34
3.1.4 綜述 40
3.2 ARM Cortex-M3處理器簡介 41
3.2.1 概述 41
3.2.2 寄存器組 42
3.2.3 操作模式和特權(quán)級別 44
3.2.4 向量中斷控制器 45
3.2.5 存儲器映射 46
3.2.6 總線接口 46
3.2.7 存儲器保護(hù)單元 47
3.2.8 指令集 47
3.2.9 中斷和異常 48
3.2.10 調(diào)試支持 49
3.3 Cortex-M3指令系統(tǒng)與匯編語言基礎(chǔ) 49
3.3.1 匯編語言基礎(chǔ) 49
3.3.2 指令集 52
3.3.3 匯編語言初步應(yīng)用 56
第4章 嵌入式系統(tǒng)的開發(fā)環(huán)境 66
4.1 嵌入式集成開發(fā)環(huán)境 67
4.1.1 嵌入式集成開發(fā)環(huán)境概述 67
4.1.2 嵌入式系統(tǒng)集成開發(fā)環(huán)境的組成 69
4.2 常見的嵌入式開發(fā)環(huán)境 70
4.2.1 Keil 70
4.2.2 IAR Embedded Workbench 71
4.2.3 TKStudio 73
4.2.4 GCC 80
4.2.5 其他開發(fā)環(huán)境 80
4.3 ARM嵌入式集成開發(fā)環(huán)境的對比與選擇 82
4.3.1 主要ARM嵌入式集成開發(fā)環(huán)境的對比 82
4.3.2 ARM嵌入式集成開發(fā)環(huán)境的選擇 85
4.4 開發(fā)調(diào)試工具 85
4.4.1 JTAG仿真器 85
4.4.2 其他開發(fā)調(diào)試工具 89
第5章 STM32系列微控制器開發(fā)基礎(chǔ) 90
5.1 STM32系列微控制器概述 90
5.1.1 STM32系列微控制器概述 90
5.1.2 STM32系列微控制器的優(yōu)勢 91
5.1.3 STM32系列微控制器的應(yīng)用 91
5.2 STM32F103系列微控制器 92
5.2.1 主要特點(diǎn) 92
5.2.2 總體結(jié)構(gòu) 94
5.2.3 功能概述 97
5.2.4 片上外設(shè)概述 99
5.3 基于標(biāo)準(zhǔn)外設(shè)庫的軟件開發(fā) 103
5.3.1 STM32標(biāo)準(zhǔn)外設(shè)庫概述 103
5.3.2 使用標(biāo)準(zhǔn)外設(shè)庫開發(fā)的優(yōu)勢 104
5.3.3 STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫結(jié)構(gòu)與文件描述 104
5.3.4 STM32F10xxx標(biāo)準(zhǔn)外設(shè)庫的使用 108
5.4 使用Keil MDK以及標(biāo)準(zhǔn)外設(shè)庫創(chuàng)建STM32工程 116
5.4.1 開發(fā)工具與開發(fā)環(huán)境 117
5.4.2 MDK的操作與設(shè)置 118
5.4.3 使用Keil MDK運(yùn)行第一個STM32F10x程序 125
第6章 STM32系列微控制器 存儲器與外設(shè) 137
6.1 存儲器和總線結(jié)構(gòu) 137
6.1.1 系統(tǒng)結(jié)構(gòu) 137
6.1.2 存儲器組織 139
6.1.3 存儲器映射 139
6.1.4 啟動配置 140
6.2 電源控制 141
6.2.1 電源 141
6.2.2 電源管理 143
6.2.3 低功耗模式 144
6.2.4 睡眠模式 145
6.2.5 停止模式 146
6.2.6 待機(jī)模式 147
6.2.7 低功耗模式下的自動喚醒(AWU) 148
6.3 復(fù)位和時鐘 149
6.3.1 復(fù)位 149
6.3.2 時鐘 150
6.4 GPIO 155
6.4.1 GPIO簡介 155
6.4.2 GPIO功能描述 156
6.4.3 GPIO配置 157
6.5 中斷和事件 158
6.5.1 嵌套向量中斷控制器 158
6.5.2 外部中斷/事件控制器 161
6.6 DMA控制器 166
6.6.1 簡介 166
6.6.2 功能描述 167
6.6.3 DMA應(yīng)用實例 171
第7章 嵌入式系統(tǒng)接口應(yīng)用基礎(chǔ) 173
7.1 嵌入式系統(tǒng)的接口類型 173
7.2 嵌入式系統(tǒng)的電平匹配 174
7.2.1 電平匹配概述 174
7.2.2 接口相關(guān)電路及概念 177
7.2.3 電平匹配的電路設(shè)計 180
7.3 嵌入式系統(tǒng)通信形式的匹配 184
7.4 嵌入式系統(tǒng)的電氣隔離 185
7.4.1 電氣隔離概述 185
7.4.2 供電系統(tǒng)的隔離 186
7.4.3 數(shù)字信號的隔離 187
7.4.4 模擬信號的隔離 193
7.4.5 嵌入式系統(tǒng)的電氣隔離設(shè)計 198
7.5 嵌入式系統(tǒng)接口的保護(hù) 199
7.5.1 嵌入式系統(tǒng)接口的電源保護(hù) 199
7.5.2 靜電保護(hù) 201
7.6 嵌入式系統(tǒng)接口的控制方式 202
7.6.1 程序輪詢方式 202
7.6.2 中斷處理方式 202
7.6.3 直接存儲器存取DMA傳送方式 202
第8章 基于STM32系列微控制器的接口應(yīng)用實踐 204
8.1 USART串行接口及其應(yīng)用 204
8.1.1 USART串行接口簡介 204
8.1.2 STM32F10x系列USART功能描述 206
8.1.3 STM32 USART接口應(yīng)用實例 214
8.2 SPI串行接口及其應(yīng)用 218
8.2.1 SPI串行接口簡介 218
8.2.2 STM32 SPI功能描述 222
8.2.3 STM32 SPI總線應(yīng)用實例 223
8.3 I2C總線及其應(yīng)用 225
8.3.1 I2C總線簡介 225
8.3.2 STM32 I2C簡介 228
8.3.3 STM32 I2C功能描述 229
8.3.4 STM32 I2C總線應(yīng)用實例 233
8.4 CAN總線及其應(yīng)用 240
8.4.1 CAN總線簡介 240
8.4.2 CAN總線的系統(tǒng)結(jié)構(gòu)及數(shù)據(jù)傳輸 241
8.5 STM32 bxCAN 244
8.5.1 功能特點(diǎn) 244
8.5.2 bxCAN總體描述 245
8.5.3 bxCAN工作模式 246
8.5.4 測試模式 247
8.5.5 bxCAN功能描述 248
8.6 FSMC接口及其應(yīng)用 254
8.6.1 STM32 FSMC 254
8.6.2 STM32 FSMC外部設(shè)備地址映像 256
8.6.3 FSMC應(yīng)用實例 257
8.7 USB串行接口及其應(yīng)用 264
8.7.1 USB總線概述 264
8.7.2 USB總線數(shù)據(jù)傳輸 266
8.7.3 USB OTG 266
8.7.4 USB接口器件 267
8.7.5 STM32 USB功能描述 267
8.8 1-Wire單總線及其應(yīng)用 269
8.8.1 1-Wire單總線及其連接 269
8.8.2 1-Wire單總線器件DS18B20的應(yīng)用 271
8.8.3 基于STM32的DS18B20操作實例 275
8.9 數(shù)據(jù)采集接口及其應(yīng)用設(shè)計 279
8.9.1 數(shù)據(jù)采集概述 279
8.9.2 數(shù)據(jù)采集系統(tǒng)的結(jié)構(gòu) 280
8.9.3 A/D轉(zhuǎn)換器的量化與編碼 286
8.9.4 STM32F10x 系列內(nèi)置ADC簡介 288
8.9.5 STM32F10x 系列內(nèi)置ADC功能描述 289
8.10 常用人機(jī)交互接口及其應(yīng)用設(shè)計 293
8.10.1 常用鍵盤接口設(shè)計 293
8.10.2 LED顯示器件及接口設(shè)計 297
8.10.3 串口屏 300
第9章 嵌入式系統(tǒng)工程開發(fā)實戰(zhàn) 302
9.1 需求分析 302
9.1.1 需求背景 302
9.1.2 主要功能 303
9.2 詳細(xì)說明 303
9.3 結(jié)構(gòu)設(shè)計 304
9.3.1 系統(tǒng)架構(gòu)設(shè)計 304
9.3.2 主要元器件與開發(fā)平臺的選擇 305
9.3.3 主要功能模塊的連接 307
9.3.4 控制器最終結(jié)構(gòu) 308
9.4 組件設(shè)計 308
9.4.1 硬件電路的設(shè)計 308
9.4.2 主要軟件部分的設(shè)計 318
9.4.3 控制器的PCB設(shè)計 327
9.5 系統(tǒng)集成 328
9.5.1 子功能模塊之間的集成 328
9.5.2 系統(tǒng)的集成測試 328
參考文獻(xiàn) 329