本書以南京沁恒微電子的RISC-v內(nèi)核的CH32系列微控制器為藍本、以知識要素為核心、以構(gòu)件化為基礎闡述嵌入式系統(tǒng)開發(fā)實踐,同時本書隨附實踐硬件系統(tǒng)。全書共13章,其中第1章在運行一個嵌入式系統(tǒng)實例基礎上簡要闡述嵌入式系統(tǒng)的知識體系、學習誤區(qū)與學習建議;第2章給出RISC-v處理器簡介;第3章給出MCU存儲映像、中斷源與硬件最小系統(tǒng)。第4章以GPI0為例給出規(guī)范的工程組織框架,闡述底層驅(qū)動應用方法;第5章闡述嵌入式硬件構(gòu)件與底層驅(qū)動構(gòu)件基本規(guī)范。第6章給出串行通信接口UART及第一個帶中斷的實例。第1-6章囊括了學習一個微控制器入門環(huán)節(jié)的完整要素。第7-12章分別介紹了RTC、TIM、PVIM、F1ash、ADC、DAC、SPI、I2C、CAN、DMA、USB、ESIG、系統(tǒng)時鐘、看門狗、復位模塊及電源控制模塊等。第13章給出了RTOS、嵌入式人工智能、NB-IoT、4G、Wi-Fi及WSN等應用案例。
① 作者資深。主編王宜懷教授為蘇州大學嵌入式系統(tǒng)與物聯(lián)網(wǎng)□□□所長,蘇州大學-沁恒RISC-V協(xié)同創(chuàng)新中心主任,江蘇省計算機學會嵌入式系統(tǒng)與物聯(lián)網(wǎng)專業(yè)委員會主任,中國軟件行業(yè)協(xié)會嵌入式系統(tǒng)分會理事,教學、科研成果顯著,撰寫嵌入式系統(tǒng)方面著作十余部,獲得發(fā)明專利三十余項。
② 結(jié)構(gòu)科學。書中以嵌入式硬件構(gòu)件及底層軟件構(gòu)件設計為主線,基于嵌入式軟件工程的思想,按照“通用知識—驅(qū)動構(gòu)件使用方法—測試實例—構(gòu)件制作過程”的線條,逐步闡述電子系統(tǒng)智能化嵌入式應用的軟件與硬件設計。
③ 內(nèi)容新穎。本書在蘇州大學嵌入式團隊幾十年教學積累的基礎上,基于沁恒微電子的RISC-V架構(gòu)CH3□V307微控制器構(gòu)建通用嵌入式計算機GEC生態(tài)系統(tǒng),形成了相對完備的教學及實踐系統(tǒng)。
④ 實例化教學。書中設計了大量的測試用例,也提供了所有模板完整的底層驅(qū)動構(gòu)件化封裝程序。
⑤ 本書設計了可直接進行實踐的硬件系統(tǒng)AHL- CH3□V307,該系統(tǒng)簡捷、便利,可邊學邊實踐,詳情見書中介紹。
嵌入式計算機系統(tǒng)簡稱為嵌入式系統(tǒng),其概念□初源于傳統(tǒng)測控系統(tǒng)對計算機的需求.隨著以微處理器(MPU)為內(nèi)核的微控制器(MCU)制造技術的不斷進步,計算機領域在通用計算機系統(tǒng)與嵌入式計算機系統(tǒng)這兩大分支上分別得以發(fā)展.通用計算機已經(jīng)在科學計算、通信、日常生活等各個領域產(chǎn)生了重要影響.在后PC時代,嵌入式系統(tǒng)的廣泛應用是計算機發(fā)展的重要特征.一般來說,嵌入式系統(tǒng)的應用領域可以粗略分為兩大類:一類是電子系統(tǒng)的智能化(如工業(yè)控制、汽車電子、數(shù)據(jù)采集、測控系統(tǒng)、家用電器、現(xiàn)代農(nóng)業(yè)、嵌入式人工智能及物聯(lián)網(wǎng)應用等),這類應用也被稱為微控制器MCU 領域;另一類是計算機應用的延伸(如平板電腦、手機、電子圖書等),這類應用也被稱為應用處理器MAP領域.不論如何分類,嵌入式系統(tǒng)的技術基礎都是不□的,即要想完成一個嵌入式系統(tǒng)產(chǎn)品的設計,就需要有硬件、軟件及行業(yè)領域的相關知識.但是,隨著嵌入式系統(tǒng)中的軟件規(guī)模日益增大,對嵌入式底層驅(qū)動軟件的封裝提出了更高的要求,可復用性與可移植性受到特別的關注,嵌入式軟硬件構(gòu)件化開發(fā)方法逐步被業(yè)界所重視。
□0□0年以來,RISC V 架構(gòu)處理器在我國得以快速發(fā)展.本書在蘇州大學嵌入式團隊幾十年教學積累的基礎上,基于沁恒微電子公司的RISC-V 架構(gòu)CH3□V307微控制器構(gòu)建的通用嵌入式計算機GEC生態(tài)系統(tǒng),形成了相對完備的教學及實踐體系.本書內(nèi)容是在作者前期撰寫的普通高等教育“十一五”“十二五”□□□規(guī)劃教材、□□□□□本科課程教學實踐的基礎上,以CH3□V307微控制器為藍本重新撰寫的.同時,在南京沁恒微電子公司及北京航空航天大學出版社的支持下,隨書配備了可以直接進行實踐的硬件系統(tǒng)AHL- CH3□V307,該系統(tǒng)具有簡捷、便利、邊學邊實踐等優(yōu)點,克服了實驗箱模式的冗余、不方便帶出實驗室、不易升級等缺點,以逐步探索嵌入式教學的新模式。
書中以嵌入式硬件構(gòu)件及底層軟件構(gòu)件設計為主線,基于嵌入式軟件工程的思想,按照“通用知識—驅(qū)動構(gòu)件使用方法—測試實例—構(gòu)件制作過程”的脈絡,逐步闡述電子系統(tǒng)智能化嵌入式應用的軟件與硬件設計.需要特別說明的是,雖然書籍的撰寫與相關課程的教學必須以某一特定芯片為藍本,但作為嵌入式技術的基礎,本書試圖闡述嵌入式通用知識要素.因此,本書以知識要素為基本立足點,設計芯片的底層驅(qū)動,使得應用程序與芯片無關,使其具有通用嵌入式計算機(GEC)的性質(zhì).書中將大部分驅(qū)動的使用方法提前闡述,而將驅(qū)動構(gòu)件的設計方法后置,目的是先學會使用構(gòu)件進行實際編程,再理解構(gòu)件的設計方法。因為理解構(gòu)件的設計方法有一定難度,所以對于不同要求的教學場景,可以不要求學生理解全部構(gòu)件的設計方法,僅講解一兩個即可。
本書具有以下特點:
(1)把握通用知識與芯片相關知識之間的平衡。書中對于嵌入式“通用知識”的基本原理,以應用為立足點,進行語言簡潔、邏輯清晰的闡述,并注意與芯片相關知識的銜接,使讀者在更好地理解基本原理的基礎上,理解芯片應用的設計;同時反過來,加深對通用知識的理解。
(2)把握硬件與軟件的關系。嵌入式系統(tǒng)是軟件與硬件的綜合體,嵌入式系統(tǒng)設計是一個軟件、硬件協(xié)同設計的工程,不能像通用計算機那樣,將軟件、硬件完全分開來看.特別對電子系統(tǒng)智能化嵌入式應用來說,沒有對硬件的理解就不可能寫好嵌入式軟件,同樣沒有對軟件的理解也不可能設計好嵌入式硬件.因此,本書注重把握硬件知識與軟件知識之間的關系。
(3)對底層驅(qū)動進行構(gòu)件化封裝。書中對每個模塊均給出根據(jù)嵌入式軟件工程基本原則并按照構(gòu)件化封裝要求編制底層驅(qū)動程序,同時給出詳細、規(guī)范的注釋及對外接口,為實際應用提供底層構(gòu)件,方便移植與復用,可以為實際項目開發(fā)節(jié)省大量時間。
(4)設計合理的測試用例。書中所有源程序均經(jīng)測試通過,并將測試用例保留在本書的網(wǎng)上教學資源中,避免因例程書寫或固有的錯誤給讀者帶來煩惱.這些測試用例也為讀者驗證與理解相關知識帶來方便。
(5)本書網(wǎng)上的電子資源提供了所有模塊完整的底層驅(qū)動構(gòu)件化封裝程序與測試用例。需要使用PC機的測試用例程序,還提供了PC機的C#源程序、芯片資料、使用文檔和硬件說明等,網(wǎng)上電子資源的版本會適時更新。
本書由蘇州大學王宜懷統(tǒng)稿,楊勇、施連敏、游輝敏參與編寫.蘇州大學嵌入式系統(tǒng)與物聯(lián)網(wǎng)□□□的研究生參與了程序開發(fā)、書稿整理及有關資源建設,他們卓有成效的工作使得本書內(nèi)容更加充實。南京沁恒微電子公司的司云騰、李天培、陶玉凱、陳瑤、劉琪等給予了技術支持并校對書稿。蘇州大學的劉純平、趙雷、章曉芳、楊璐、劉曉升等老師,宿遷學院的王志超、陳林、萬娟、史洪瑋等老師,為本書提出了許多建設性意見,在此一并表示誠摯的感謝。
鑒于作者水平有限,對于書中存在的不足和錯誤之處,懇望讀者提出寶貴意見和建議。
蘇州大學 王宜懷
2022年2月
王宜懷,博士,蘇州大學計算機科學與技術學院教授、軟件工程系主任、博士生導師;蘇州大學嵌入式系統(tǒng)與物聯(lián)網(wǎng)□□□所長;蘇州大學-沁恒RISC-V協(xié)同創(chuàng)新中心主任,江蘇省計算機學會嵌入式系統(tǒng)與物聯(lián)網(wǎng)專業(yè)委員會主任,中國軟件行業(yè)協(xié)會嵌入式系統(tǒng)分會理事。曾獲福建省八五期間電子信息應用先進個人、全國高等學校計算機教學成果獎一等獎、□□本科課程、江蘇省高等教育教學成果一等獎、蘇州大學五四青年特別感謝獎、蘇州大學高尚師德獎等。致力于嵌入式系統(tǒng)與物聯(lián)網(wǎng)、嵌入式人工智能、嵌入式軟件工程等方向研究與教學工作,撰寫嵌入式系統(tǒng)方面著作十余部,獲得發(fā)明專利三十余項。
第1章 概 述 1
。保薄〕踝R嵌入式系統(tǒng) 1
1.1.1 運行硬件系統(tǒng) 1
。保保病嵺`體系簡介 3
1.1.3 編譯、下載與運行□□個嵌入式程序 4
。保病∏度胧较到y(tǒng)的定義、發(fā)展簡史、分類及特點 6
。保玻薄∏度胧较到y(tǒng)的定義 6
。保玻病∏度胧较到y(tǒng)的由來及發(fā)展簡史 7
。保玻场∏度胧较到y(tǒng)的分類 8
。保玻础∏度胧较到y(tǒng)的特點 9
。保场∏度胧较到y(tǒng)的學習困惑、知識體系及學習建議 10
1.3.1 嵌入式系統(tǒng)的學習困惑 10
。保常病∏度胧较到y(tǒng)的知識體系 13
。保常场』A階段的學習建議 14
。保础∥⒖刂破髋c應用處理器簡介 16
1.4.1 MCU簡介 16
。保矗病∫ MCU為核心的嵌入式測控產(chǎn)品的基本組成 17
1.4.3 MAP簡介 19
。保怠∏度胧较到y(tǒng)常用術語 20
。保担薄∨c硬件相關的術語 20
1.5.2 與通信相關的術語 21
。保担场∨c功能模塊相關的術語 22
本章小結(jié) 23
習 題 24
第2章 RISC V架構(gòu)微處理器 25
2.1 RISC V概述與青稞 V4F微處理器簡介 25
。玻保薄ISC V概述 25
。玻保病∏囡 V4F微處理器內(nèi)部結(jié)構(gòu)概要 27
2.1.3 寄存器通用基礎知識及相關基本概念 28
。玻保础∏囡 V4F微處理器的內(nèi)部寄存器 29
。玻病ぶ贩绞脚c機器碼的獲取方法 30
2.2.1 指令保留字簡表與尋址方式 31
。玻玻病C器碼的獲取方法 32
。玻场ISC V基本指令分類解析 34
2.3.1 數(shù)據(jù)傳送類指令 34
。玻常病(shù)據(jù)操作類指令 36
2.3.3 跳轉(zhuǎn)類指令 37
。玻常础SR類指令 38
。玻常怠∑渌噶 39
。玻础R編語言的基本語法 39
。玻矗薄R編語言的格式 39
。玻矗病〕S脗沃噶詈喗 41
本章小結(jié) 43
習 題 44
第3章 存儲器映像、中斷源與硬件□小系統(tǒng) 45
3.1 CH32V307系列 MCU概述 45
。常保薄H32V307系列 MCU命名規(guī)則 45
。常保病H32V307存儲器映像 46
。常保场H32V307中斷源 47
3.2 CH32V307的引腳圖與硬件□小系統(tǒng) 50
3.2.1 CH32V307的引腳圖 50
。常玻病H32V307硬件□小系統(tǒng)原理圖 52
。常场∮ MCU構(gòu)建通用嵌入式計算機 54
3.3.1 嵌入式□□開發(fā)方式存在的問題與解決辦法 55
。常常病√岢鯣EC概念的時機、GEC的定義與特點 56
3.3.3 由CH32V307VCT6構(gòu)成的GEC 57
本章小結(jié) 62
習 題 62
第4章 GPIO及程序框架 64
。矗薄PIO通用基礎知識 64
。矗保薄PIO概念 64
。矗保病≥敵鲆_的基本接法 64
。矗保场∩侠吕娮枧c輸入引腳的基本接法 65
。矗病≤浖深A硬件的方法 66
。矗玻薄PIO構(gòu)件 API 66
。矗玻病 酢鮽C語言工程:控制小燈閃爍 68
4.3 認識工程框架 70
4.3.1 工程框架及所含文件簡介 70
。矗常病×私鈾C器碼文件及芯片執(zhí)行流程 72
。矗础PIO構(gòu)件的制作過程 74
。矗矗薄《丝谂cGPIO模塊———對外引腳與內(nèi)部寄存器 74
。矗矗病PIO基本編程步驟并點亮一盞小燈 77
。矗矗场PIO構(gòu)件的設計 78
4.5 □□個匯編語言工程:控制小燈閃爍 83
。矗担薄R編工程文件的組織 83
4.5.2 匯編語言小燈測試工程主程序 84
。矗丁嶒炓弧 熟悉實驗開發(fā)環(huán)境及GPIO編程 88
本章小結(jié) 91
習 題 92
第5章 嵌入式硬件構(gòu)件與底層驅(qū)動構(gòu)件基本規(guī)范 93
。担薄∏度胧接布䴓(gòu)件 93
。担保薄∏度胧接布䴓(gòu)件概念與嵌入式硬件構(gòu)件分類 93
。担保病』谇度胧接布䴓(gòu)件的電路原理圖設計簡明規(guī)則 94
5.2 嵌入式底層驅(qū)動構(gòu)件的概念與層次模型 97
。担玻薄∏度胧降讓域(qū)動構(gòu)件的概念 98
5.2.2 嵌入式硬件構(gòu)件與軟件構(gòu)件結(jié)合的層次模型 98
。担玻场∏度胧杰浖䴓(gòu)件分類 99
。担场〉讓域(qū)動構(gòu)件的封裝規(guī)范 100
。担常薄(gòu)件設計的基本思想與基本原則 100
。担常病【幋a風格基本規(guī)范 102
5.3.3 頭文件的設計規(guī)范 105
。担常础≡闯绦蛭募脑O計規(guī)范 107
。担础∮布䴓(gòu)件及其驅(qū)動構(gòu)件的復用與移植方法 108
5.4.1 硬件構(gòu)件的復用與移植 108
。担矗病◎(qū)動構(gòu)件的移植 109
本章小結(jié) 110
習 題 111
第6章 串行通信模塊及□□個中斷程序結(jié)構(gòu) 112
6.1 異步串行通信的通用基礎知識 112
。叮保薄〈型ㄐ诺幕靖拍 112
。叮保病S232和RS485總線標準 114
。叮保场TL USB串口 115
6.1.4 串行通信編程模型 116
。叮病』跇(gòu)件的串行通信編程方法 117
。叮玻薄H32V307VCT6芯片的 UART對外引腳 117
。叮玻病ART構(gòu)件API 118
。叮玻场ART構(gòu)件API的發(fā)送測試方法 119
。叮玻础rintf的設置方法與使用 120
。叮场ART構(gòu)件的制作過程 121
。叮常薄ART寄存器概述 121
。叮常病±弥苯拥刂凡僮鞯拇诎l(fā)送打通程序 121
。叮常场ART構(gòu)件設計 125
6.4 中斷機制及中斷編程步驟 129
。叮矗薄£P于中斷的通用基礎知識 129
。叮矗病ISC V非內(nèi)核模塊中斷編程結(jié)構(gòu) 132
6.4.3 CH32V307VCT6中斷編程步驟———以串口接收中斷為例 134
。叮怠嶒灦〈谕ㄐ偶爸袛鄬嶒 137
本章小結(jié) 139
習 題 139
第7章 定時器相關模塊 141
。罚薄《〞r器的通用基礎知識 141
7.2 CH32V307VCT6中的定時器 141
。罚玻薄∏囡 V4F內(nèi)核中的系統(tǒng)定時器SysTick 142
7.2.2 實時時鐘RTC模塊 146
。罚玻场imer模塊的基本定時功能 149
7.3 脈寬調(diào)制 151
。罚常薄∶}寬調(diào)制PWM 的通用基礎知識 151
。罚常病』跇(gòu)件的PWM 編程方法 154
。罚常场∶}寬調(diào)制構(gòu)件的制作過程 157
。罚础≥斎氩东@與輸出比較 162
7.4.1 輸入捕獲與輸出比較的通用基礎知識 162
。罚矗病』跇(gòu)件的輸入捕獲和輸出比較編程方法 162
。罚怠嶒炄《〞r器及PWM 實驗 167
本章小結(jié) 168
習 題 169
第8章 Flash在線編程、ADC與DAC 170
。福薄lash在線編程 170
8.1.1 Flash在線編程的通用基礎知識 170
。福保病』跇(gòu)件的Flash在線編程方法 171
。福保场lash構(gòu)件的制作過程 173
。福病DC 176
8.2.1 ADC的通用基礎知識 176
。福玻病』跇(gòu)件的ADC編程方法 180
。福玻场DC構(gòu)件的制作過程 183
。福场AC 186
。福常薄AC的通用基礎知識 186
8.3.2 基于構(gòu)件的DAC編程方法 187
。福础嶒炈摹DC實驗 189
本章小結(jié) 190
習 題 190
第9章 SPI、I2C與TSC模塊 192
。梗薄〈型庠O接口SPI模塊 192
。梗保薄PI的通用基礎知識 192
9.1.2 基于構(gòu)件的SPI通信編程方法 195
。梗病〖呻娐坊ヂ(lián)總線I2C模塊 199
。梗玻薄2C的通用基礎知識 199
。梗玻病』跇(gòu)件的I2C通信編程方法 204
。梗场∮|摸感應控制器TSC模塊 208
9.3.1 TSC的基本原理 208
。梗常病』跇(gòu)件的TSC編程方法 209
9.4 實驗五 SPI通信實驗 212
本章小結(jié) 214
習 題 214
第10章 DMA與CAN總線編程 216
。保埃薄AN總線 216
。保埃保薄AN總線的通用基礎知識 216
。保埃保病』跇(gòu)件的CAN編程方法 220
。保埃病MA 223
。保埃玻薄MA的通用基礎知識 223
。保埃玻病』跇(gòu)件的DMA編程方法 225
本章小結(jié) 228
習 題 228
第11章 USB與嵌入式以太網(wǎng)模塊 229
。保保薄SB的通用基礎知識 229
。保保保薄SB概述 229
11.1.2 與 USB相關的基本概念 232
。保保保场SB通信協(xié)議 237
11.1.4 從設備的枚舉看 USB數(shù)據(jù)傳輸 241
11.2 CH32V307的 USB模塊應用編程方法 246
。保保玻薄H32V307的 USB模塊簡介 246
。保保玻病H32V307作為 USB從機的編程方法 246
11.2.3 CH32V307作為 USB主機的編程方法 254
。保保场∏度胧揭蕴W(wǎng)的通用基礎知識 257
11.3.1 以太網(wǎng)的由來與協(xié)議模型 257
。保保常病∫蕴W(wǎng)中的主要物理設備 260
11.3.3 相關名詞解釋 262
。保保础H32V307的以太網(wǎng)模塊應用編程方法 265
。保保矗薄H32V307的以太網(wǎng)模塊簡介 265
。保保矗病∫蕴W(wǎng)底層驅(qū)動構(gòu)件 267
。保保矗场∫蕴W(wǎng)測試實例 269
。保保怠”菊滦〗Y(jié) 284
習 題 284
第12章 系統(tǒng)時鐘與其他功能模塊 286
12.1 時鐘系統(tǒng) 286
。保玻保薄r鐘系統(tǒng)概述 286
12.1.2 時鐘模塊寄存器概要 287
。保玻保场r鐘模塊編程實例 289
12.2 電源模塊與復位模塊 291
。保玻玻薄‰娫茨K 291
12.2.2 復位模塊 292
。保玻场】撮T狗 292
。保玻常薄—毩⒖撮T狗 293
12.3.2 系統(tǒng)窗口看門狗 294
。保玻础(shù)字□□接口與安全數(shù)字輸入/輸出 296
12.4.1 數(shù)字□□接口 296
。保玻矗病“踩珨(shù)字輸入/輸出 297
本章小結(jié) 298
習 題 298
第13章 應用案例 299
。保常薄∏度胧较到y(tǒng)穩(wěn)定性問題 299
。保常病⊥饨觽鞲衅骷皥(zhí)行部件的編程方法 300
。保常玻薄¢_關量輸出類驅(qū)動構(gòu)件 300
13.2.2 開關量輸入類驅(qū)動構(gòu)件 303
。保常玻场÷曇襞c加速度傳感器驅(qū)動構(gòu)件 305
。保常场崟r操作系統(tǒng)的簡明實例 306
。保常常薄o操作系統(tǒng)與實時操作系統(tǒng) 306
。保常常病TOS中常用的基本概念 307
。保常常场【程的三要素、四種狀態(tài)及三種基本形式 308
。保常常础TOS下的編程實例 311
。保常础∏度胧饺斯ぶ悄艿暮喢鲗嵗 312
。保常矗薄HLGEORS簡介 312
。保常矗病HLGEORS的數(shù)據(jù)采集與訓練過程 314
。保常矗场≡谕ㄓ们度胧接嬎銠CGEC上進行的推理過程 315
。保常怠∏吆 MCU的其他嵌入式實踐資源簡介 316
。保常担薄HLGCH573 316
。保常担病HLGCH573GNBGIoT 317
13.5.3 AHLGCH573GCAT1 318
參考文獻 320