猜你喜欢
RISC-V架构嵌入式系统原理与应用——CH32V103单片机编程与项目实践

RISC-V架构嵌入式系统原理与应用——CH32V103单片机编程与项目实践

书籍作者:裴晓芳 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


产品特色