《普通高等教育“十二五”規劃教材·電子信息科學與工程類專業規劃教材:ARM Cortex-M3微控制器原理與應用》從基礎的理論知識到實際的應用開發,詳細地介紹了ARM Cortex-M3處理器的內核體系結構,包括其內核組件、總線結構、流水線、指令集、編程模型、存儲器系統、電源管理、系統時鐘和復位、異常模型以及調試系統等。《普通高等教育“十二五”規劃教材·電子信息科學與工程類專業規劃教材:ARM Cortex-M3微控制器原理與應用》選取恩智浦半導體(NXP)公司的ARM Cortex-M3系列芯片LPC176x處理器為例,詳細介紹了LPC1700系列處理器的內核結構與高級外設的工作原理與應用開發方法,以及基于CMSIS接口標準軟件設計方法。《普通高等教育“十二五”規劃教材·電子信息科學與工程類專業規劃教材:ARM Cortex-M3微控制器原理與應用》的例程已在LPCXpresso開發平臺上調試通過,該平臺可與本書配合使用。
隨著新一代信息通信技術的迅猛發展,嵌入式系統的應用無處不在。ARM公司是目前公認的業界領先的32位嵌入式RISC(精簡指令計算機)微處理器設計公司,目前全世界有200多家領先的半導體廠商獲得了ARM授權,基于ARM內核的微處理器占領了32位嵌入式系統的大部分份額。ARM Cortex-M處理器系列是一系列可向上兼容的高能效、易操作的處理器,采用ARM公司最新的微控制器ARMv7版本內核體系結構。ARM Cortex-M3作為Cortex-M系列的第一款處理器,集8位單片機的價格和32位ARM處理器的性能于一身,毫不夸張地說,可以看做MCS-51單片機時代的終結者。
NXP公司的LPC1700系列處理器,采用的是第二代Cortex-M3內核,時鐘速度可達120MHz,可以實現更低的功耗和維持更久的電池壽命,在調試和解決疑難問題的過程中,具有更好的靈活性,在電子儀表、照明、工業網絡、報警系統、白色家電和電機控制等領域中得到廣泛的應用。本書主要以LPC1700系列微處理器為硬件平臺,詳細介紹ARM Cortex-M3處理器的原理與應用開發技術。
第1章簡要介紹ARM Cortex-M3內核的基礎知識,包括ARM Cortex-M3體系結構和內核分類,并列舉NXP公司的Cortex-M3系列產品,為處理器的選型提供參考。
第2章介紹Cortex-M3內核,包括Cortex-M3處理器內核結構、編程模型和指令集知識,以及存儲器映射、時鐘、異常和電源管理等內容。通過本章的閱讀,可使讀者了解Cortex-M3的內部結構和基本工作原理。
第3章介紹LPC1700系列微控制器基本結構,包括系統控制單元、存儲器總線結構、電源管理、時鐘、引腳配置、嵌套中斷向量控制器、定時器和調試接口等。
第4章介紹LPC1700系列微控制器高級接口,包括串行口UART、SPI、I2C、PWM、正交編碼接口QEI、A/D和D/A轉換器、USB總線等。
第5章介紹基于CMSIS接口標準軟件設計,包括Cortex微控制器軟件接口標準CMSIS的基本構架、如何在LPCXpresso軟件中使用CMSIS等。通過本章的閱讀,讀者可以掌握基于CMSIS接口標準的函數的使用。
本書由張永輝博士組織編寫和完成。在此感謝海南大學信息科學技術學院院長杜文才教授對于本書編寫工作的大力支持,團隊成員沈重教授、陳褒丹高級工程師、白勇博士、任佳博士和易家傅、丁潔等多位同事參與了本書的編寫工作,蔡繼興、李青倩、金鑫、黃瀟和潘奇等碩士研究生負責了本書編寫過程中的資料整理工作。本書的出版得到了海南大學211工程專項資金支持,編寫過程中得到了NXP公司金宇杰先生、王朋朋女士、張宇先生以及北京勝創特公司羅光軍先生的大力支持和幫助,在此表示感謝!
鑒于Cortex-M3的強大功能和LPC1700系列微處理器的豐富外設,限于篇幅本書只對部分內容進行了介紹,關于通用DMA、SSP、I2S、CAN總線和以太網部分,請讀者參考LPC1700用戶手冊。由于編者的水平有限,書中難免存在遺漏與不足之處,懇請讀者批評指正。
編者
2013年2月
張永輝,副教授,海南大學信息學院。2006年從大連理工大學博士畢業,到海南大學信息學院任教至今。
第1章 ARM Cortex-M3微處理器
1.1 ARM CORTEX系列微處理器簡介
1.1.1 Cortex-A系列
1.1.2 Cortex-R系列
1.1.3 Cortex-M系列
1.1.4 經典ARM處理器的Cortex替代方案
1.2 ARM CORTEX-M3微處理器
1.2.1 Cortex-M3的版本
1.2.2 Cortex-M3處理器應用領域
1.2.3 Cortex-M3處理器的實現
1.3 從ARM7升級到ARM CORTEX-M
1.4 NXP公司CORTEX-M3系列微處理器
1.4.1 LPC1300系列
1.4.2 LPC1700系列
1.4.3 LPC1800系列
1.5 ARM CORTEX-M3微處理器開發工具
1.5.1 Cortex-M3開發套件
1.5.2 嵌入式操作系統支持
習題
第2章 ARM Cortex-M3內核體系結構
2.1 CORTEX-M3處理器組件
2.1.1 處理器內核
2.1.2 嵌套向量中斷控制器NVIC
2.1.3 總線矩陣
2.1.4 存儲器保護單元MPU
2.1.5 系統調試組件
2.1.6 調試端口SW/SWJ-DP
2.1.7 AHB訪問端口AHB-AP
2.1.8 喚醒中斷控制器WIC
2.1.9 ROM表
2.2 總線結構
2.3 流水線
2.4 指令集
2.5 編程模型
2.5.1 工作模式
2.5.2 工作狀態
2.5.3 特權訪問和用戶訪問
2.5.4 主堆棧和進程堆棧
2.5.5 寄存器組
2.5.6 數據類型
2.6 存儲器系統
2.6.1 存儲器映射
2.6.2 位帶操作
2.6.3 存儲器格式
2.7 系統時鐘和復位
2.7.1 時鐘
2.7.2 復位
2.7.3 復位序列
2.8 電源管理
2.9 異常
2.9.1 異常模型
2.9.2 異常類型
2.9.3 異常優先級
2.9.4 異常處理
2.10 調試系統
習題
第3章 LPC1700系列微處理器基礎
3.1 LPC1700微處理器結構
3.2 存儲器系統
3.2.1 存儲器映射
3.2.2 APB外設地址
3.2.3 存儲器重映射
3.2.4 片上Flash存儲器系統
3.2.5 片上靜態RAM
3.2.6 Flash存儲器加速器
3.2.7 Flash存儲器接口和編程
3.3 系統控制單元
3.3.1 復位電路
3.3.2 掉電檢測
3.3.3 外部中斷輸入
3.3.4 系統控制和狀態寄存器
3.4 系統時鐘
3.4.1 振蕩器
3.4.2 時鐘源選擇多路復用
3.4.3 鎖相環PLL
3.4.4 鎖相環PLL
3.4.5 時鐘分頻器
3.4.6 外部時鐘輸出引腳
3.5 實時時鐘RTC
3.5.1 RTC引腳描述和配置
3.5.2 寄存器描述
3.5.3 RTC中斷
3.5.4 校準過程
3.5.5 RTC基本操作
3.5.6 RTC使用注意事項
3.6 電源管理
3.6.1 功率模式控制寄存器
3.6.2 外設功率控制寄存器
3.6.3 睡眠模式
3.6.4 深度睡眠模式
3.6.5 掉電模式
3.6.6 深度掉電模式
3.6.7 喚醒定時器
3.7 引腳及I/O功能配置
3.7.1 引腳布局
3.7.2 引腳連接模塊
3.8 通用輸入/輸出GPIO
3.8.1 GPIO引腳描述
3.8.2 GPIO寄存器描述
3.8.3 GPIO使用示例
3.9 嵌套向量中斷控制器NVIC
3.9.1 中斷源
3.9.2 向量表的重新映射
3.9.3 寄存器描述
3.10 定時器
3.10.1 通用定時器0/1/2/
3.10.2 重復中斷定時器RIT
3.10.3 看門狗定時器WDT
3.10.4 系統節拍定時器
3.11 調試接口
3.11.1 概述
3.11.2 調試端口引腳
3.11.3 調試接口電路
3.11.4 調試注意事項
習 題
第4章 LPC1700系列微處理器
高級接口
4.1 通用異步收發器UART
4.1.1 概述
4.1.2 UART接口引腳與配置
4.1.3 UART接口電路設計
4.1.4 寄存器功能描述
4.1.5 UART基本操作
4.1.6 UART程序示例
4.2 串行總線接口SPI和I2C
4.2.1 SPI接口
4.2.2 I2C接口
4.3 脈寬調制器PWM
4.3.1 概述
4.3.2 引腳描述和配置
4.3.3 寄存器描述
4.3.4 PWM波形舉例
4.3.5 PWM程序示例
4.4 正交編碼接口QEI
4.4.1 QEI簡介
4.4.2 功能概述
4.4.3 引腳描述和配置
4.4.4 寄存器描述
4.4.5 QEI基本操作
4.5 模數轉換器和數模轉換器
4.5.1 模數轉換器
4.5.2 數模轉換器
4.6 USB總線接口
4.6.1 USB設備控制器
4.6.2 USB主機控制器
4.6.3 USB OTG控制器
4.6.4 USB固件庫
習題
第5章 基于CMSIS接口標準
軟件設計
5.1 CMSIS標準簡介
5.2 CMSIS代碼規范
5.3 CMSIS文件結構
5.4 CMSIS例子程序
習題
附錄A Cortex-M3指令集
A.1 指令集匯總
A.2 內在函數
附錄B 縮寫
附錄C 術語表
參考文獻