《嵌入式系統開發基礎:基于ARM9微處理器C語言程序設計(第四版)/高等學校計算機應用規劃教材》對32位精簡指令系統嵌入式微處理器S3C2410的硬件系統和C語言驅動程序進行了詳細的講解,書中的源代碼和實例程序對學習或從事嵌入式系統設計的讀者都有很高的參考價值。在人機界面設計、系統初始化程序編寫、仿真器設置和復雜工程項目構建等方面給出了簡化做法,使初學者能夠輕松、快速地掌握嵌入式系統設計方法。本書以實用技術為主,內容通俗易懂,實例豐富,特別適合初學者和從事嵌入式系統設計工作的讀者使用。本書配套的電子課件、配套實驗講義、各章的習題答案和部分工具軟件可以到http://www.tupwk.com.cn網站下載。
嵌入式控制系統的教學現狀
嵌入式控制系統的教學一般分為兩個層次。
第一個層次,完成以MCS-51為代表的8位單片機教學。這在各個高校都得到了重視,大多數學校安排理論課64學時,實驗課32學時,課時比較充足。在這個層次上,無論是講授C語言程序設計,還是講授匯編語言程序設計,可供選擇的教材都比較多。
第二個層次,也就是以32位ARM為代表的嵌入式控制系統教學。目前,許多學校都沒有開設,主要有以下3個原因。
一是缺乏師資。畢竟,以ARM為代表的嵌入式控制系統設計是20世紀90年代才發展起來的新技術,它不僅包括高性能、功能豐富的硬件平臺,而且軟件開發的難度和嵌入式操作系統的應用,都對教師提出了更高的要求。
二是在課時安排上也有一定困難。這么復雜的軟硬件系統,包括嵌入式操作系統,即使是用96(包括實驗)學時,也不一定能講深講透。況且,整個教學計劃中也沒有很多的時間。
三是沒有合適的教材。特別是深入淺出、條理分明、適應本科生水平、課時比較合理的教材非常少。
為了克服上述困難,也為了滿足教學需要,作者根據多年科研和教學經驗編寫了本書。
作者的想法是:在32位ARM為代表的嵌入式控制系統教學中,不講述帶嵌入式操作系統的部分,而選擇一種有代表性的32位單片機(類似8位機中的MCS-51)。這里選擇韓國三星S3C2410 ARM9單片機。在ADS1.2 For Windows集成開發環境中,用C語言完成嵌入式控制系統的開發工作。理論課內容安排48學時,實驗課時間和內容由教師根據各校的時間和條件自行決定。
在48學時(16周,每周3學時)內,集中將S3C2410的最基本硬件結構、軟件資源學深學透,學會用C語言編寫應用程序。在用C語言編寫驅動程序時,盡量借助系統資源,參考例子程序,減少設計者的工作量。通過較短時間的學習,學生可以很快掌握嵌入式控制系統設計的方法,完成嵌入式控制系統的設計工作。
本書篇幅雖然不長,但程序源代碼較多,對于從事嵌入式系統開發和學習來說是非常寶貴的資源。但是,如果在課堂上講解和分析這些代碼,學時顯然不夠。建議教師主要講解S3C2410的硬件資源和編程方法,具體程序代碼留給學生課后慢慢消化理解。
教學實驗平臺介紹
有條件的學校,在完成理論課教學的同時,應安排一定的實驗課,教學效果會更好。
作者接觸的ARM9(SAMSUNG 2410)教學實驗系統有深圳英蓓特信息技術有限公司(http://www.embedinfo.com)的Embest EDUKIT-Ⅱ/Ⅲ、北京博創科技集團(http://www.up- tech.com)的UP-NETARM 2410教學實驗系統、北京精儀達盛科技公司(http://www. techshine.com)的EL-ARM-830教學實驗系統。上述教學實驗系統都有基于ARM9系統資源的C語言實驗程序例子,使用方便,可供選擇。隨書下載的實驗講義有兩冊:一是基于深圳英蓓特信息技術有限公司(http://www.embedinfo.com)的Embest EDUKIT-Ⅱ/Ⅲ,實驗時應配合Embest EDUKIT-Ⅱ/Ⅲ教學實驗系統平臺,并安裝Embest IDE;二是基于北京精儀達盛科技公司(http://www.techshine.com)的EL-ARM-830教學實驗系統,實驗時應配合EL-ARM-830教學實驗系統平臺。兩套實驗系統程序的執行都要去掉目錄中的中文目錄,并盡量縮短目錄深度。
本書主要內容和學習本書所需基礎知識
第1章:簡單講述嵌入式控制系統的定義、研究現狀和研究方法。
第2章:較詳細地講述基于ARM芯片的集成開發環境ADS 1.2的創建和使用。
第3章:講述ARM9芯片S3C2410的片上資源和編程參考項目2410test.mcp。
第4章:講述S3C2410的I/O口和I/O口操作。
第5章:講述S3C2410的中斷系統及編程。
第6章:講述S3C2410的串口UART。
第7章:講述S3C2410的A/D和D/A轉換控制。
第8章:講述ADC和觸摸屏控制。
第9章:講述S3C2410的實時時鐘(RTC)和編程。
第10章:講述直接存儲器存取(DMA)的工作原理及S3C2410的DMA控制器。
第11章:講述脈寬調制(PWM)的工作原理及S3C2410的PWM控制器。
第12章:講述看門狗(Watchdog)電路的工作原理及S3C2410的Watchdog控制。
第13章:講述雙向二線制同步串行總線 I C及S3C2410的I C控制電路。
第14章:講述數字音頻信號(I S)和S3C2410的I S控制。
第15章:對串行外設接口(SPI)進行了介紹。
第16章:講述S3C2410的人機界面設計。
第17章:講述程序的調試、燒寫和運行。
第18章:項目開發實訓。
以上各章內容除第1~5章外,其他各章內容基本獨立。教師如果覺得在48學時內完成教學比較困難,除第2、3、4、5章和第16、17章作為重點建議必講之外,其他各章可根據情況有選擇地刪節。
隨書提供軟件包一個,其中有本書的電子課件、S3C2410使用手冊、實驗講義、各章習題答案、ADS1.2、參考項目2410test.mcp、通用字模提取程序和部分例子程序,可以在清華大學出版社網站(http://www.tupwk.com.cn)上免費下載。
第四版課件由孫穎馨老師在第三版基礎上重新進行了制作,作者對她的工作表示感謝。
本書的特點是通過深入淺出的講述,將基于ARM9的嵌入式控制系統設計方法教給學生,使學生能夠在最短的時間內入門。
學習本書至少要有C語言基礎,如果有MCS-51單片機基礎,學習本書就會更加輕松。
第四版與第三版區別
為了滿足教學急需,第三版出書時間較緊,書中難免有錯誤或不足之處,在第四版中作者對書中內容進行了仔細斟酌研究,更正了已發現的錯誤,并根據多年教學經驗和指導學生參加全國和省級“嵌入式”和“電子設計”大賽體會,刪除了一些不適用的章節,增加了一部分新內容。
書中實驗程序的注釋是本書的重要內容,仔細閱讀這些注釋對于理解書中內容和練習編程非常重要。
為了使讀者正確理解原程序,凡是原參考文獻給出的注釋,書中仍然保留英文,凡是作者給出的注釋,用中文給出。
為了提高學生實踐動手能力,第四版增加了一章實訓內容(第18章項目開發實訓)。
根據讀者意見,為了使版面工整,方便閱讀,注釋采用分散方式對齊。
雖然做了很大努力,并請孫俊喜、才華兩位教授對書中內容進行審核校對,但百密一疏,難免有考慮不周或錯誤之處,真誠歡迎讀者多提寶貴意見和建議。我們的信箱是huchenhao@263.net,電話是010-62796045。
本書通用字模提取程序密碼:194512125019。
侯殿有
2015年6月
第1章 嵌入式控制系統簡介1
1.1 單片機和嵌入式控制系統的
定義和分類1
1.1.1 單片機和嵌入式控制系統
的定義1
1.1.2 嵌入式控制系統的設計方法2
1.1.3 嵌入式控制系統各種設計方法
的特點2
1.2 ARM處理器簡介4
1.2.1 ARM體系結構的發展4
1.2.2 ARM體系結構的存儲器格式8
1.3 習題9
第2章 ADS1.2開發環境
創建與簡介10
2.1 ADS1.2開發環境創建10
2.1.1 ADS1.2概述10
2.1.2 ADS1.2的安裝12
2.2 ADS集成開發環境的使用14
2.2.1 建立一個新工程14
2.2.2 開發環境設置14
2.2.3 其他開發環境介紹18
2.3 用AXD進行代碼仿真、
調試19
2.3.1 AXD簡介19
2.3.2 JTAG概述21
2.3.3 Nor和Nand Flash的區別和
使用22
2.3.4 燒寫Flash24
2.4 ARM C語言程序的基本規則和
系統初始化程序24
2.4.1 ARM使用C語言編程
基本規則24
2.4.2 初始化程序和開發環境設置25
2.5 習題27
第3章 ARM9微處理器S3C2410
資源28
3.1 S3C2410處理器介紹28
3.1.1 AMBA、AHB、APB總線
特點28
3.1.2 S3C2410處理器體系結構30
3.1.3 S3C2410處理器管理系統30
3.1.4 S3C2410處理器存儲器
映射30
3.1.5 S3C2410處理器時鐘和
電源管理31
3.2 S3C2410處理器片上資源的
定義和使用33
3.3 參考軟件資源2410test.mcp34
3.4 幾個常用的輸入/輸出函數39
3.5 def.h頭文件45
3.6 習題46
第4章 S3C2410的I/O口和 I/O口
操作47
4.1 S3C2410 I/O口描述47
4.2 I/O端口控制寄存器48
4.2.1 端口A控制寄存器和
功能配置48
4.2.2 端口B控制寄存器和
功能配置49
4.2.3 端口C控制寄存器和
功能配置50
4.2.4 端口D控制寄存器和
功能配置52
4.2.5 端口E控制寄存器和
功能配置53
4.2.6 端口F控制寄存器和
功能配置54
4.2.7 端口G控制寄存器和
功能配置55
4.2.8 端口H控制寄存器和
功能配置56
4.3 I/O口控制C語言編程實例57
4.3.1 硬件電路57
4.3.2 參考程序58
4.4 習題60
第5章 S3C2410的中斷系統61
5.1 S3C2410的中斷源61
5.2 S3C2410的中斷處理62
5.3 中斷控制63
5.3.1 中斷模式(INTMOD)
寄存器63
5.3.2 中斷掛起寄存器和中斷源
掛起寄存器64
5.3.3 中斷屏蔽寄存器(INTMSK)66
5.3.4 中斷優先級寄存器
(PRIORITY)66
5.4 子中斷源的中斷控制69
5.5 中斷向量設置70
5.6 其他常用寄存器70
5.7 中斷程序編寫中需注意的
問題72
5.8 中斷實驗和中斷程序編寫74
5.9 習題78
第6章 S3C2410的串口UART79
6.1 S3C2410的串口UART概述79
6.1.1 S3C2410串行通信(UART)
單元79
6.1.2 波特率的產生79
6.1.3 UART通信操作80
6.2 UART的控制寄存器80
6.2.1 UART線路控制寄存器
ULCONn(n=0~2)80
6.2.2 UART控制寄存器
UCONn(n=0~2)81
6.2.3 UART FIFO控制寄存器
UFCONn(n=0~2)81
6.2.4 UART調制解調器控制寄存器
UMCONn(n=0或1)81
6.2.5 發送寄存器UTXHn(n=0~2)和接收寄存器URXHn(n=0~2)82
6.2.6 UART TX/RX狀態寄存器
UTRSTATn(n=0~2)82
6.2.7 S3C2410 UART使用的
端口82
6.3 UART通信程序例子82
6.3.1 RS232接口電路83
6.3.2 UART實驗程序83
6.4 習題89
第7章 S3C2410的A/D、D/A
轉換控制90
7.1 S3C2410的A/D、D/A
轉換控制90
7.1.1 A/D轉換控制寄存器
(ADCCON)90
7.1.2 A/D轉換控制程序的
編制步驟91
7.2 參考程序91
7.3 習題94
第8章 觸摸屏控制95
8.1 觸摸屏結構和工作原理95
8.1.1 觸摸屏工作原理95
8.1.2 S3C2410的觸摸屏控制97
8.2 觸摸屏控制程序100
8.3 習題102
第9章 S3C2410的實時
時鐘(RTC)103
9.1 實時時鐘在嵌入式系統中的
作用103
9.1.1 S3C2410的實時時鐘單元103
9.1.2 S3C2410的實時時鐘
寄存器104
9.2 參考程序及說明106
9.3 習題112
第10章 直接存儲器存取(DMA)
控制113
10.1 DMA基礎知識113
10.2 S3C2410的DMA控制器115
10.3 DMA方式實現存儲器到
存儲器的數據傳送117
10.3.1 頭文件定義和函數聲明118
10.3.2 DMA方式實現存儲器到
存儲器的數據傳送118
10.4 習題123
第11章 S3C2410的PWM控制124
11.1 PWM定時器概述124
11.1.1 什么是脈寬調制124
11.1.2 S3C2410的脈寬調制
PWM控制124
11.1.3 S3C2410定時器特性126
11.1.4 定時器操作示例127
11.1.5 死區生成器127
11.2 PWM輸出電平控制128
11.2.1 PWM工作原理128
11.2.2 PWM輸出控制129
11.3 PWM定時器控制寄存器129
11.3.1 定時器配置寄存器0129
11.3.2 定時器配置寄存器1130
11.3.3 減法緩沖寄存器和比較緩
沖寄存器130
11.3.4 定時器控制寄存器131
11.3.5 減法計數器觀察寄存器131
11.4 PWM參考程序132
11.5 習題138
第12章 S3C2410的看門狗
電路控制140
12.1 看門狗電路的功能及
工作原理140
12.1.1 S3C2410的看門狗控制140
12.1.2 看門狗定時器控制
寄存器141
12.2 參考程序及說明142
12.3 習題143
第13章 S3C2410的I2C
總線控制144
13.1 I2C總線工作原理144
13.2 EEPROM讀/寫操作147
13.2.1 AT24C04結構與
應用簡述147
13.2.2 設備地址(DADDR)148
13.2.3 AT24CXX的數據
操作格式148
13.3 S3C2410處理器I2C接口148
13.3.1 S3C2410 I2C接口簡介149
13.3.2 使用S3C2410 I2C總線讀/
寫方法150
13.4 S3C2410 I2C總線讀/寫參考
程序編寫150
13.5 I2C實驗程序151
13.6 習題155
第14章 I2S介紹和S3C2410的I2S
控制156
14.1 數字音頻信號(I2S)介紹156
14.2 數字音頻計算機處理157
14.2.1 采樣頻率和采樣精度157
14.2.2 音頻編碼158
14.2.3 I2S數字音頻接口158
14.3 音頻芯片UDA1341TS
介紹158
14.3.1 硬件結構158
14.3.2 S3C2410和UDA1341TS的
連接160
14.3.3 UDA1341TS的
軟件編程161
14.3.4 UDA1341TS DATA0
編程162
14.3.5 UDA1341TS DATA1
編程165
14.3.6 UDA1341TS 控制寄存器
STATUS編程165
14.4 S3C2410中I2S總線控制
寄存器167
14.5 WAV聲音格式文件168
14.6 I2S實驗參考程序169
14.7 習題177
第15章 串行外設接口(SPI)介紹178
15.1 SPI接口及操作178
15.1.1 SPI接口原理178
15.1.2 SPI接口特性180
15.2 SPI接口控制寄存器180
15.2.1 SPI控制寄存器
(SPICONn)180
15.2.2 SPI狀態寄存器
(SPSTAn)180
15.2.3 SPI引腳控制寄存器
(SPPINn)181
15.2.4 SPI波特率預分頻寄存器
(SPPREn)181
15.2.5 SPI發送數據寄存器
(SPTDATn)182
15.2.6 SPI接收數據寄存器
(SPRDATn)182
15.2.7 SPI接口操作182
15.2.8 SPI接口編程182
15.2.9 SPI口的傳輸格式183
15.2.10 SPI通信模式184
15.3 參考程序184
15.4 習題188
第16章 S3C2410的人機
界面設計189
16.1 英文字符存儲與顯示原理189
16.1.1 ASCII碼189
16.1.2 英文字符的顯示190
16.2 漢字在計算機中的
表示和顯示191
16.2.1 漢字的內碼和區位碼191
16.2.2 漢字的顯示192
16.2.3 其他西文字符在計算機中的
存儲和顯示193
16.2.4 屏幕上“打點”194
16.2.5 字模提取與建立小字庫
概述194
16.3 字模提取與建立小字庫195
16.3.1 用C語言提取字模和建立
小字庫195
16.3.2 用Delphi提取字模和建立
小字庫199
16.3.3 通用字模提取程序MinFonBase
使用說明209
16.4 S3C2410顯示控制特點210
16.4.1 STN LCD顯示器210
16.4.2 TFT LCD顯示器211
16.4.3 LCD控制器特點211
16.5 S3C2410的LCD控制信號和
外部引腳211
16.5.1 LCD專用控制寄存器213
16.5.2 LCD專用控制寄存器的
設置218
16.5.3 LCD屏幕“打點”程序221
16.6 S3C2410的LCD
驅動程序224
16.6.1 S3C2410的LCD驅動程序
編寫步驟225
16.6.2 利用S3C2410顯示漢字與
曲線226
16.7 S3C2410在LCD驅動方面的
其他應用234
16.7.1 HD66421的硬件簡介235
16.7.2 HD66421的軟件編程236
16.7.3 HD66421與微處理器接口及
驅動程序240
16.8 在LCD屏上按一定格式顯示
漢字和曲線252
16.9 S3C6410 (ARM11)的漢字和
曲線顯示253
16.9.1 S3C6410 (ARM11)簡介253
16.9.2 S3C6410(ARM11)的漢字和
曲線顯示254
16.10 習題262
第17章 程序的調試、運行和
燒寫263
17.1 VIVI軟件的運行和使用263
17.1.1 VIVI軟件的運行263
17.1.2 VIVI的幾個常用命令263
17.2 VIVI軟件的安裝265
17.3 程序的調試運行267
17.4 程序的燒寫275
17.5 習題278
第18章 項目開發實例279
18.1 實例目的和軟硬件準備279
18.1.1 實例目的279
18.1.2 軟硬件準備279
18.2 字模提取、建小字庫279
18.2.1 漢字字模提取、建小漢
字庫279
18.2.2 西文和數學符號字模
提取280
18.2.3 ASCII碼字模處理、其他
圖形處理282
18.3 項目構建282
18.3.1 項目結構282
18.3.2 main.c程序簡單介紹283
18.4 項目調試284
18.4.1 開發環境設置285
18.4.2 項目編譯289
18.4.3 項目調試290
18.5 項目燒寫(固化)293
參考文獻296