书籍作者:裴晓芳 | ISBN:9787512435070 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:6125 |
创建日期:2021-10-07 | 发布日期:2021-10-07 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
本书以南京沁恒微电子股份有限公司自主研发的基于RISC-V内核的CH32V103单片机基本结构与原理为主线,详细阐述CH32V103的功能结构与应用系统开发的一般技术。
全书共19章。前3章简要叙述RISC-V架构的背景知识,第4章和第5章介绍CH32V103单片机的软硬件开发环境,第6~17章介绍CH32V103单片机的外设模块及应用实例,第18章和第19章是蓝牙加密U盘和智能家居应用两个综合实验案例。
本书可作为高等学校电子信息工程、通信工程、计算机科学与技术、物联网工程、自动化等专业的教材,也可作为对RISC-V处理器感兴趣或者有应用需求的工程技术人员的参考书。
书中相关例程下载请见前言。
裴晓芳,南京信息工程大学滨江学院电子信息工程学院副教授,一线授课老师。
RISC-V 架构诞生于2010年,由美国加州大学伯克利分校的多位教授联合推出。经过十多年的发展,RISC-V 架构得到越来越多的关注。当前国内外众多院校与公司都在研究RISC-V 架构,并将其应用于学术或工程应用中。
目前,针对嵌入式技术与应用的图书多以ARM 内核单片机为主,以STM32为基础器件来介绍,而通用RISC-V 芯片与开发板较少,图书资料更少。但是高校师生和应用开发者都需要一本有详细例程、可指导实际操作的参考书,以便快速了解RISC-V,进行基于RISC-V芯片的应用程序开发。
本书基于CH32V103单片机介绍RISC-V 架构嵌入式系统原理与应用。CH32V103是一款自主研发的国产单片机芯片,主要面向对RISC-V 处理器感兴趣的高校师生、有应用需求的工程师或者研究人员。书中以应用领域的实例为先导,讲述RISC-V 基础知识和RISC-V 应用案例,帮助读者深入了解和学习使用RISC-V 处理器。主要内容包括:RISC-V 基础理论知识、软件开发环境、基础类案例、综合类案例和应用设计类案例,可满足不同层次读者的需求;从功能分析、硬件设计、软件设计、系统调试对案例进行详细介绍,读者可以按照书中的有关内容完成案例的自主开发,提高实践能力。本书的应用案例具有“模块化”“设计性”和“实用性”的鲜明特色。本书第一部分介绍嵌入式系统,将ARM 架构和RISC-V 架构进行对比,概述RISC-V 架构的指令集特点。第二部分介绍CH32V103单片机的软硬件开发环境,帮助读者迅速了解RISC-V 架构的单片机特点,熟悉软件应用开发环境。第三部分介绍CH32V103单片机的外设模块并给出应用实例,所有应用代码都已经过验证。最后一部分列举2个综合设计案例,蓝牙加密U 盘和智能家居应用,可以提高读者综合设计与开发的能力。
本书具有以下特点:
① 将单片机开发项目实战的思想和方法贯穿全过程,引导读者快速掌握开发实践要旨。
② 具有“从入门到实践”的属性,详细讲解RISC-V 内核以及CH32V103单片机,读者可熟练掌握RISC-V 单片机开发工具的使用方法,快速搭建RISC-V 单片机进行应用开发。
③ 本书内容覆盖开发的主要环节,从系统框图介绍、外设模块介绍、程序库函数介绍到应用实例设计,各个外设模块均有配套实验例程。
④ 本书配套开发板的原理图与PCB文件、相关例程代码可从沁恒微电子社区获取,下载链接:http://www.wch.cn/bbs/forum 106-1.html。
本书的编写得到了南京信息工程大学滨江学院横向课题(2020H022)、南京沁恒微电子股份有限公司及北京航空航天大学出版社的大力支持或资助,在此表示衷心的感谢!
由于作者水平有限,书中的不足之处,恳请读者批评指正。
编 者
2021年2月
第1章 嵌入式系统简介 1
1.1 嵌入式系统概述 1
1.1.1 嵌入式系统特点 1
1.1.2 嵌入式系统发展趋势 2
1.2 ARM 架构介绍 3
1.2.1 ARM 的历史背景 3
1.2.2 ARM 系列简介 4
1.2.3 ARM 的发展趋势 6
1.3 RISC-V架构介绍 7
1.3.1 RISC-V架构的历史背景 7
1.3.2 RISC-V架构的发展趋势 7
本章小结 7
第2章 RISC-V指令集架构简介 8
2.1 RISC-V架构设计特点 8
2.2 RISC-V架构特性 8
2.3 RISC-V与其他架构的比较 14
2.4 RISC-V与CH32V103的关系 15
本章小结 15
第3章 RISC-V架构的中断和异常 16
3.1 RISC-V中断和异常概述 16
3.1.1 中断概述 16
3.1.2 异常概述 16
3.2 RISC-V中断机制 17
3.2.1 中断类型 17
3.2.2 中断屏蔽 17
3.2.3 中断级别、优先级与仲裁 18
3.2.4 进入中断处理 18
3.2.5 退出中断处理 18
3.2.6 中断嵌套 19
3.3 RISC-V异常机制 19
3.3.1 异常屏蔽 19
3.3.2 异常的优先级 20
3.3.3 进入异常处理模式 20
3.3.4 退出异常处理模式 20
3.3.5 异常服务程序 20
3.4 CSR寄存器介绍 21
本章小结 26
第4章 CH32V103硬件基础 27
4.1 CH32系列单片机外部结构 28
4.1.1 CH32系列单片机命名规则 28
4.1.2 CH32系列单片机引脚功能 29
4.2 CH32V103单片机内部结构 30
4.2.1 CH32V103单片机内部总线结构 30
4.2.2 CH32V103单片机内部时钟系统 32
4.2.3 CH32V103单片机内部复位系统 34
4.2.4 CH32V103单片机内部存储器结构 35
4.3 CH32V103最小系统设计 36
本章小结 38
第5章 CH32V103软件开发环境 39
5.1 开发软件MRS简介与安装 39
5.2 软件环境 42
5.3 创建项目 43
5.4 编译代码 45
5.5 下载代码 51
5.6 调试代码 52
本章小结 55
第6章 CH32单片机的输入/输出接口GPIO 56
6.1 GPIO主要特征 56
6.2 GPIO功能说明 58
6.2.1 工作模式 58
6.2.2 外部中断 58
6.2.3 复用功能 58
6.2.4 锁定机制 59
6.3 GPIO库函数 59
6.4 GPIO使用流程 63
6.4.1 普通GPIO配置 63
6.4.2 引脚复用功能配置 63
6.5 项目实战:流水灯 66
6.5.1 硬件设计 66
6.5.2 软件设计 66
6.5.3 系统调试 68
本章小结 69
第7章 CH32单片机外部中断EXTI 70
7.1 CH32V103中断系统组成结构 70
7.1.1 中断源及中断向量 70
7.1.2 外部中断系统结构 73
7.2 中断控制 74
7.2.1 中断屏蔽控制 74
7.2.2 中断优先级控制 75
7.3 中断控制常用库函数介绍 76
7.3.1 快速可编程中断控制器库函数 76
7.3.2 CH32V103外部中断EXTI库函数 78
7.4 外部中断使用流程 82
7.4.1 PFIC配置 82
7.4.2 中断端口设置 82
7.4.3 中断处理 83
7.5 项目实战:按键中断控制LED灯 84
7.5.1 硬件设计 84
7.5.2 软件设计 84
7.5.3 系统调试 89
本章小结 89
第8章 通用同步异步收发器USART 90
8.1 串行通信简介 90
8.1.1 串行通信与并行通信 90
8.1.2 单工通信、半双工通信与双工通信 91
8.1.3 同步通信与异步通信 91
8.1.4 串行异步通信的数据传输格式 91
8.2 USART的结构及工作方式 92
8.2.1 结构框图 92
8.2.2 工作模式 94
8.2.3 CH32V103串行异步通信的工作方式 95
8.3 常用库函数介绍 96
8.4 使用流程 103
8.5 项目实战:串口数据查询方式收发 104
8.5.1 硬件设计 104
8.5.2 软件设计 105
8.5.3 系统调试 107
本章小结 108
第9章 定时器TIM 109
9.1 CH32V103定时器概述 109
9.1.1 定时器类型 109
9.1.2 计数模式 110
9.1.3 主要功能介绍 110
9.2 CH32V103通用定时器的结构 111
9.2.1 输入时钟 112
9.2.2 核心计数器 112
9.2.3 比较捕获通道 112
9.2.4 通用定时器的功能寄存器 113
9.2.5 通用定时器的外部触发及输入/输出通道 113
9.3 CH32V103通用定时器的功能 113
9.3.1 输入捕获模式 114
9.3.2 比较输出模式 114
9.3.3 强制输出模式 115
9.3.4 PWM 输入模式 115
9.3.5 PWM 输出模式 115
9.3.6 单脉冲模式 116
9.3.7 编码器模式 116
9.3.8 定时器同步模式 117
9.3.9 调试模式 117
9.4 通用定时器常用库函数 117
9.5 通用定时器使用流程 128
9.5.1 PFIC设置 128
9.5.2 定时器中断配置 128
9.5.3 定时器中断处理 129
9.6 项目实战1:精确定时实验 129
9.6.1 硬件设计 129
9.6.2 软件设计 129
9.6.3 系统调试 131
9.7 项目实战2:脉宽调制 131
9.7.1 硬件设计 131
9.7.2 软件设计 132
9.7.3 系统调试 133
本章小结 134
第10章 看门狗定时器 135
10.1 CH32V103看门狗概述 135
10.2 独立看门狗 135
10.2.1 独立看门狗主要特征 135
10.2.2 独立看门狗结构框图 136
10.3 窗口看门狗 136
10.3.1 窗口看门狗主要特征 136
10.3.2 窗口看门狗结构框图 136
10.3.3 窗口看门狗功能说明 137
10.4 常用库函数介绍 138
10.5 看门狗使用流程 144
10.5.1 独立看门狗使用流程 144
10.5.2 窗口看门狗使用流程 144
10.6 项目实战1:独立看门狗应用 145
10.6.1 硬件设计 145
10.6.2 软件设计 145
10.6.3 系统调试 148
10.7 项目实战2:窗口看门狗应用 149
10.7.1 硬件设计 149
10.7.2 软件设计 149
10.7.3 系统调试 153
本章小结 153
第11章 直接存储器访问控制DMA 154
11.1 CH32V103的DMA控制器 154
11.2 DMA功能描述 155
11.2.1 仲裁优先级 155
11.2.2 DMA配置 155
11.2.3 循环模式 156
11.2.4 DMA处理状态 156
11.2.5 可编程的数据传输总量/数据位宽/对齐方式 156
11.2.6 DMA请求映射 156
11.3 DMA常用库函数 158
11.4 DMA使用流程 163
11.4.1 PFIC设置 163
11.4.2 DMA模式及中断配置 163
11.4.3 DMA中断服务程序 164
11.5 项目实战:DMA存储器到存储器 164
11.5.1 硬件设计 164
11.5.2 软件设计 164
11.5.3 系统调试 168
本章小结 168
第12章 串行设备通信接口SPI 169
12.1 SPI总线通信简介 169
12.1.1 SPI总线的组成 169
12.1.2 SPI总线的功能 170
12.2 SPI结构框图 170
12.3 SPI功能描述 171
12.3.1 从选择管理 171
12.3.2 时钟相位与极性 172
12.3.3 主模式 173
12.3.4 从模式 173
12.3.5 单工模式 173
12.3.6 CRC校验 174
12.3.7 DMA的SPI通信 174
12.3.8 错误状态 174
12.3.9 中 断 174
12.4 SPI常用库函数 175
12.5 SPI使用流程 181
12.6 项目实战:W25Q16读写实验 182
12.6.1 硬件设计 183
12.6.2 软件设计 183
12.6.3 系统调试 189
本章小结 189
第13章 内部集成电路总线I2C 190
13.1 I2C总线通信简介 190
13.1.1 I2C总线特点 190
13.1.2 I2C总线术语 191
13.1.3 I2C物理层 191
13.1.4 I2C协议层 192
13.1.5 数据传输格式 193
13.2 CH32V103的I2C功能与结构框图 195
13.3 I2C的通信模式 196
13.3.1 主模式 196
13.3.2 从模式 198
13.3.3 错 误 199
13.3.4 时钟延长 199
13.3.5 SMBus 200
13.3.6 DMA 200
13.3.7 中 断 201
13.3.8 包错误校验 202
13.4 I2C常用库函数介绍 202
13.5 I2C使用流程 213
13.6 项目实战:读写EEPROM 芯片AT24C02 213
13.6.1 硬件设计 213
13.6.2 软件设计 217
13.6.3 系统调试 221
本章小结 222
第14章 实时时钟RTC 223
14.1 CH32V103的RTC概述 223
14.1.1 CH32V103的RTC 223
14.1.2 UNIX时间戳 223
14.2 RTC结构框图 224
14.3 常用库函数介绍 225
14.4 使用流程 230
14.5 项目实战:利用RTC实现万年历 231
14.5.1 硬件设计 231
14.5.2 软件设计 232
14.5.3 系统调试 238
本章小结 238
第15章 循环冗余校验CRC 239
15.1 CRC校验概述 239
15.2 CH32V103中的CRC计算单元 239
15.2.1 主要特征 239
15.2.2 功能描述 239
15.2.3 结构框图 240
15.3 CRC应用 240
15.4 常用库函数介绍 240
15.5 项目实战:CRC数据校验 243
15.5.1 硬件设计 243
15.5.2 软件设计 243
15.5.3 系统调试 244
本章小结 244
第16章 模/数转换器ADC 245
16.1 ADC概述 245
16.1.1 ADC分类 245
16.1.2 ADC性能指标 245
16.2 CH32V103的ADC简介 246
16.3 CH32V103的ADC结构框图 246
16.4 ADC的功能描述 248
16.4.1 开关、时钟及通道 248
16.4.2 转换模式控制 249
16.4.3 中断和DMA请求 250
16.4.4 其他功能 251
16.5 ADC常用库函数介绍 253
16.6 ADC使用流程 269
16.7 项目实战:外部电压采集 269
16.7.1 硬件设计 269
16.7.2 软件设计 270
16.7.3 系统调试 272
本章小结 273
第17章 USB全速主机/设备控制器USBHD 274
17.1 USB简介及协议基础 274
17.1.1 USB简介 274
17.1.2 USB的电气特性 274
17.1.3 USB的插入检测机制 274
17.1.4 USB的描述符 275
17.1.5 USB包的结构 276
17.1.6 USB的四种传输类型 277
17.2 CH32V103的USBHD主要特征 278
17.3 功能说明 278
17.3.1 USB全局寄存器 278
17.3.2 USB设备控制寄存器 278
17.3.3 USB主机控制寄存器 279
17.4 库函数介绍 279
17.5 项目实战1:U盘文件读写 282
17.5.1 硬件设计 282
17.5.2 软件设计 282
17.5.3 系统调试 286
17.6 项目实战2:实现CDC串口 287
17.6.1 硬件设计 287
17.6.2 软件设计 287
17.6.3 系统调试 288
本章小结 289
第18章 综合案例:蓝牙加密U盘 290
18.1 蓝牙加密U盘介绍 290
18.2 CH573简介 290
18.2.1 概 述 290
18.2.2 功能说明 291
18.2.3 系统框图 292
18.2.4 无线通信介绍 293
18.3 CH569简介 293
18.3.1 CH569概述 293
18.3.2 功能说明 293
18.3.3 系统框图 294
18.3.4 SD/EMMC控制器介绍 296
18.3.5 USB 3.0控制器介绍 296
18.4 硬件设计 296
18.5 软件设计 299
18.6 系统调试 304
18.6.1 CH573程序下载 304
18.6.2 蓝牙调试 306
18.6.3 U盘功能测试 308
本章小结 308
第19章 行业应用案例实战:智能家居应用 309
19.1 机智云物联网开发步骤 309
19.1.1 创建新项目 309
19.1.2 安装手机App 311
19.1.3 自动生成代码 313
19.1.4 虚拟设备调试 314
19.1.5 Wi Fi模块固件烧录 316
19.1.6 移植机智云代码 317
19.1.7 App绑定设备 317
19.2 功能分析 318
19.3 硬件设计 318
19.4 软件设计 319
19.4.1 主程序功能软件设计 319
19.4.2 温湿度检测软件设计 319
19.4.3 机智云控制设计 321
19.4.4 物联网功能实现 321
19.5 系统调试 322
本章小结 324
附录A RISC-V伪指令集 325
附录B RISC-V寄存器介绍 327
B1 通用寄存器 327
B2 控制和状态寄存器 328
附录C RISC-V指令编码列表 336
C1 RV32I指令编码 336
C2 RV32M指令编码 337
C3 RV32F指令编码 337
C4 RV32A指令编码 338
C5 RV32D指令编码 338
C6 RV32Q指令编码 339
C7 RV32C指令编码 339
参考文献 341