《嵌入式系统原理与接口技术》已经出版

时间:2022-01-02 19:20:48

《嵌入式系统原理与接口技术》已经出版

最新更新

本书已经出版,各大网络书城均有销售,本书的主要定位是教材,部分内容在博客里都有写,各位如果觉得不错的话欢迎支持。

关于本书


这本书写作花了半年多的时间,到今年和出版社校稿有陆续花了几个月时间,如今将由电子工业出版社出版,由于本身的水平有限,更多做的是一个整理和融合的工作,在此期间阅读了大量的相关书籍、技术博客、芯片手册等,尽量把相关内容系统,有逻辑的表述出来。由于导师的时间要求,本书部分内容有妥协的结果,部分内容借鉴了芯片手册,同时由于作为教材的定位,在内容安排上也有所限制,但是这仍然是一本花了心思,尽力做到最好的书籍。如果有和意见或者建议欢迎通过博客中涉及的联系方式与我联系。

自己平时的过程中经常查阅下书籍,时间久了发现国内的一些书籍是在是难以入目(国内最多的是北航出版社的书),很多高校老师是为了写书而写书,经常传出一个老师一年弄了多少本教材,这些老师只注重自己出了多少教材多少专著,却从来不在乎书究竟如何。因此在开始写的时候本着的第一原则就是不制造垃圾,尽管水平有限,一定要多花时间做到更好。

本书的部分内容在一年前就发表在本博客的相关分类中,后续还会整理部分章节,同时PPT、实验教程、视频教程、程序代码也会陆续更新,欢迎有兴趣的同学关注。

写作的一些想法


嵌入式系统本身是一个很宽泛的概念,基本上电气类的专业也都开设这门课程,目前市场上类似的教材和书籍也都非常多,很多书都追求大而全,然而仅凭一门课一本书根部无法去学习嵌入式如此丰富的内容,因此,本书选取功能强大、易于上手,方便从传统单片机过渡的Cortex-M3处理器为例,结合具体的应用介绍嵌入式系统的一些基本知识。本书内容有限,所选取例子和内容也不能有绝对的代表性,但是在本书的编写过程中侧重嵌入式系统设计中相通的部分,一方面通过和生活的紧密联系普及嵌入式系统知识,另一方面结合具体应用传授嵌入式系统设计的一般方法。

嵌入式系统是一门实践性和理论性都很强的课程,但是嵌入式系统的学习,最终还是为了工程实践当中的应用,因此嵌入式系统的教学不能脱离实际应用。很多教材都具有全面、深入的特点,然而在实际教学中,由于一个学期的学时限制,很多教师根本无法对涉及的内容进行深入讲解。而且很多高校的课堂教学和实验仍然偏重于ARM处理器的内部结构、指令系统、汇编程序设计等部分,虽然学习了部分基础知识,然而很多学生对嵌入式系统却仍然缺乏一个整体的认识,同时枯燥的理论知识学习也极大地降低了同学们的学习兴趣,因此即使在嵌入式系统的课程学习之后,很多同学面对相关的工程设计仍然束手无策。

本书从嵌入式工程实践入手,以基于ARM Cortex-M3内核STM32F103系列微处理器为例,针对嵌入式应用中最直接相关的部分——接口技术,不追求能够全面、深入、细致的介绍相关的理论知识(如教材中经常出现的寄存器、存储器、中断异常、指令集、汇编程序设计等),但是希望通过理论与实践相结合的讲解方式能够让同学们对嵌入式系统、嵌入式系统设计方法以及嵌入式系统设计过程中相通的接口技术和思维方式能够有一个直观的了解。由于嵌入式系统相关的知识和理论较多,本书无法一一讲述,但是本书根据学以致用的原则对相关的知识进行搭配,侧重于对嵌入式系统的整体认识和工程实践,希望能够摆脱以往嵌入式系统枯燥的学习模式。

 

目 录

第1章 绪论··· 1

1.1 嵌入式系统概述··· 1

1.1.1 嵌入式系统的概述··· 1

1.1.2 嵌入式系统的特征··· 2

1.1.3 嵌入式系统的组成··· 5

1.1.4 嵌入式系统的现状及发展趋势··· 6

1.2 嵌入式处理器··· 8

1.2.1 哈佛结构和冯·诺依曼结构··· 8

1.2.2 CISC指令集与RISC指令集··· 9

1.2.3 x86指令集和ARM指令集:··· 11

1.2.4 通用处理器(x86)与嵌入式处理器(ARM)小结··· 12

1.2.5 嵌入式处理器的分类··· 13

1.3 嵌入式操作系统··· 16

1.3.1 嵌入式操作系统的概述··· 16

1.3.2 常见的嵌入式操作系统··· 16

第2章 嵌入式系统工程设计概述··· 20

2.1 嵌入式系统设计的基本流程··· 20

2.1.1 需求分析··· 20

2.1.2 详细说明··· 21

2.1.3 结构设计··· 21

2.1.4 组件设计··· 24

2.1.5 系统集成··· 25

2.2 嵌入式系统设计的流程模型··· 26

2.2.1 瀑布模型··· 26

2.2.2 逐步求精模型··· 27

2.2.3 螺旋模型··· 27

2.3 嵌入式系统的开发模式··· 28

2.3.1 面向硬件的开发模式··· 29

2.3.2 面向软件的开发模式··· 29

2.3.3 两种开发模式的区别与联系··· 29

第3章 ARM嵌入式处理器··· 31

3.1 ARM嵌入式处理器简介··· 31

3.1.1 ARM处理器的特点··· 32

3.1.2 ARM体系结构的版本及系列··· 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 操作模式和特权级别··· 44

3.2.4 向量中断控制器··· 45

3.2.5 存储器映射··· 46

3.2.6 总线接口··· 46

3.2.7 存储器保护单元··· 47

3.2.8 指令集··· 47

3.2.9 中断和异常··· 48

3.2.10 调试支持··· 49

3.3 Cortex-M3指令系统与汇编语言基础··· 49

3.3.1 汇编语言基础··· 49

3.3.2 指令集··· 52

3.3.3 汇编语言初步应用··· 56

第4章 嵌入式系统的开发环境··· 67

4.1 嵌入式集成开发环境··· 68

4.1.1 嵌入式集成开发环境概述··· 68

4.1.2 嵌入式系统集成开发环境的组成··· 70

4.2 常见的嵌入式开发环境··· 71

4.2.1 Keil 71

4.2.2 IAR Embedded Workbench· 72

4.2.3 TKStudio· 74

4.2.4 GCC·· 81

4.2.5 其他开发环境··· 81

4.3 ARM嵌入式集成开发环境的对比与选择··· 83

4.3.1 主要ARM嵌入式集成开发环境的对比··· 83

4.3.2 ARM嵌入式集成开发环境的选择··· 86

4.4 开发调试工具··· 86

4.4.1 JTAG仿真器··· 86

4.4.2 其他开发调试工具··· 90

第5章 STM32系列微控制器开发基础··· 91

5.1 STM32系列微控制器概述··· 91

5.1.1 STM32系列微控制器概述··· 91

5.1.2 STM32系列微控制器的优势··· 92

5.1.3 STM32系列微控制器的应用··· 92

5.2 STM32F103系列微控制器··· 93

5.2.1 主要特点··· 93

5.2.2 总体结构··· 95

5.2.3 功能概述··· 98

5.2.4 片上外设概述··· 100

5.3 基于标准外设库的软件开发··· 104

5.3.1 STM32标准外设库概述··· 104

5.3.2 使用标准外设库开发的优势··· 105

5.3.3 STM32F10xxx标准外设库结构与文件描述··· 105

5.3.4 STM32F10xxx标准外设库的使用··· 109

5.4 使用Keil MDK以及标准外设库创建STM32工程··· 117

5.4.1 开发工具与开发环境··· 118

5.4.2 MDK的操作与设置··· 119

5.4.3 使用Keil MDK运行第一个STM32F10x程序··· 126

第6章 STM32系列微控制器 存储器与外设··· 138

6.1 存储器和总线结构··· 138

6.1.1 系统结构··· 138

6.1.2 存储器组织··· 140

6.1.3 存储器映射··· 140

6.1.4 启动配置··· 141

6.2 电源控制··· 142

6.2.1 电源··· 142

6.2.2 电源管理··· 144

6.2.3 低功耗模式··· 145

6.2.4 睡眠模式··· 146

6.2.5 停止模式··· 147

6.2.6 待机模式··· 148

6.2.7 低功耗模式下的自动唤醒(AWU)··· 149

6.3 复位和时钟··· 150

6.3.1 复位··· 150

6.3.2 时钟··· 151

6.4 GPIO·· 156

6.4.1 GPIO简介··· 156

6.4.2 GPIO功能描述··· 157

6.4.3 GPIO配置··· 158

6.5 中断和事件··· 160

6.5.1 嵌套向量中断控制器··· 160

6.5.2 外部中断/事件控制器··· 163

6.6 DMA控制器··· 167

6.6.1 简介··· 167

6.6.2 功能描述··· 168

6.6.3 DMA应用实例··· 172

第7章 嵌入式系统接口应用基础··· 174

7.1 嵌入式系统的接口类型··· 174

7.2 嵌入式系统的电平匹配··· 175

7.2.1 电平匹配概述··· 175

7.2.2 接口相关电路及概念··· 178

7.2.3 电平匹配的电路设计··· 181

7.3 嵌入式系统的通信形式的匹配··· 185

7.4 嵌入式系统的电气隔离··· 186

7.4.1 电气隔离概述··· 186

7.4.2 供电系统的隔离··· 187

7.4.3 数字信号的隔离··· 188

7.4.4 模拟信号的隔离··· 194

7.4.5 嵌入式系统的电气隔离设计··· 199

7.5 嵌入式系统接口的保护··· 200

7.5.1 嵌入式系统接口的电源保护··· 200

7.5.2 静电保护··· 202

7.6 嵌入式系统接口的控制方式··· 203

7.6.1 程序轮询方式··· 203

7.6.2 中断处理方式··· 203

7.6.3 直接存储器存取DMA传送方式··· 203

第8章 基于STM32系列微控制器的 接口应用实践··· 205

8.1 USART串行接口及其应用··· 205

8.1.1 USART串行接口简介··· 205

8.1.2 STM32F10x系列USART功能描述··· 207

8.1.3 STM32 USART接口应用实例··· 216

8.2 SPI串行接口及其应用··· 219

8.2.1 SPI串行接口简介··· 219

8.2.2 STM32 SPI功能描述··· 223

8.2.3 STM32 SPI总线应用实例··· 224

8.3 I2C总线及其应用··· 226

8.3.1 I2C总线简介··· 226

8.3.2 STM32 I2C简介··· 229

8.3.3 STM32 I2C功能描述··· 230

8.3.4 STM32 I2C总线应用实例··· 234

8.4 CAN总线及其应用··· 241

8.4.1 CAN总线简介··· 241

8.4.2 CAN总线的系统结构及数据传输··· 242

8.5 STM32 bxCAN·· 245

8.5.1 功能特点··· 245

8.5.2 bxCAN总体描述··· 246

8.5.3 bxCAN工作模式··· 247

8.5.4 测试模式··· 248

8.5.5 bxCAN功能描述··· 249

8.6 FSMC接口及其应用··· 255

8.6.1 STM32 FSMC·· 255

8.6.2 STM32 FSMC外部设备地址映像··· 257

8.6.3 FSMC应用实例··· 258

8.7 USB串行接口及其应用··· 265

8.7.1 USB总线概述··· 265

8.7.2 USB总线数据传输··· 267

8.7.3 USB OTG·· 267

8.7.4 USB接口器件··· 268

8.7.5 STM32 USB功能描述··· 268

8.8 1-Wire单总线及其应用··· 270

8.8.1 1-Wire单总线及其连接··· 270

8.8.2 1-Wire单总线器件DS18B20的应用··· 272

8.8.3 基于STM32的DS18B20操作实例··· 276

8.9 数据采集接口及其应用设计··· 280

8.9.1 数据采集概述··· 280

8.9.2 数据采集系统的结构··· 281

8.9.3 A/D转换器的量化与编码··· 287

8.9.4 STM32F10x 系列内置ADC简介··· 289

8.9.5 STM32F10x 系列内置ADC功能描述··· 290

8.10 常用人机交互接口及其应用设计··· 294

8.10.1 常用键盘接口设计··· 294

8.10.2 LED显示器件及接口设计··· 298

8.10.3 串口屏··· 301

第9章 嵌入式系统工程开发实战··· 303

9.1 需求分析··· 303

9.1.1 需求背景··· 303

9.1.2 主要功能··· 304

9.2 详细说明··· 304

9.3 结构设计··· 305

9.3.1 系统架构设计··· 305

9.3.2 主要元器件与开发平台的选择··· 306

9.3.3 主要功能模块的连接··· 308

9.3.4 控制器最终结构··· 309

9.4 组件设计··· 309

9.4.1 硬件电路的设计··· 309

9.4.2 主要软件部分的设计··· 319

9.4.3 控制器的PCB设计··· 328

9.5 系统集成··· 329

9.5.1 子功能模块之间的集成··· 329

9.5.2 系统的集成测试··· 329

参考文献··· 330