猜你喜欢
RISC-V嵌入式开发实践——基于CH32V307微控制器

RISC-V嵌入式开发实践——基于CH32V307微控制器

书籍作者:王宜怀 ISBN:9787512437531
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:2605
创建日期:2023-03-30 发布日期:2023-03-30
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

本书以沁恒微电子公司(WCH)的RSIC-V内核的CH32V307系列微控制器为蓝本,以知识要素为核心,以构件化为基础,阐述嵌入式技术基础与实践。本书介绍的AHL-CH32V307 硬件系统可以满足基础实践的需要。

全书共13章,第1章简要阐述嵌入式系统的知识体系、学习误区与学习建议;第2章为RSIC-V架构微处理器简介;第3章介绍MCU存储器映像、中断源与硬件最小系统;第4章以GPIO为例给出规范的工程组织框架,阐述底层驱动应用与设计方法;第5章介绍嵌入式硬件构件与底层驱动构件的基本规范;第6章阐述串行通信接口UART,并给出第一个带中断的实例。第1-6章囊括了学习一个微控制器人门环节的完整要素第7-12 章分别介绍了 SysTick 、Tim町、RTC 、Flash 在线编程 、ADC、DAC、SPU2C、TSC、DMA 、CAN 、 USB 、以太网模块及其他模块。第13章给出了外接部件、RTOS、嵌人式人工智能等应用案例。

本书适用于高等学校嵌人式系统的教学或技术培训,也可供嵌人式系统与物联网应用技术人员研发时参考。



作者简介

王宜怀,博士,苏州大学计算机科学与技术学院教授、软件工程系主任、博士生导师;苏州大学嵌入式系统与物联网研究所所长;苏州大学-沁恒RISC-V协同创新中心主任,江苏省计算机学会嵌入式系统与物联网专业委员会主任,中国软件行业协会嵌入式系统分会理事。曾获福建省八五期间电子信息应用先进个人、全国高等学校计算机教学成果奖一等奖、一流本科课程、江苏省高等教育教学成果一等奖、苏州大学五四青年特别感谢奖、苏州大学高尚师德奖等。致力于嵌入式系统与物联网、嵌入式人工智能、嵌入式软件工程等方向研究与教学工作,撰写嵌入式系统方面著作十余部,获得发明专利三十余项。


编辑推荐

① 作者资深。主编王宜怀教授为苏州大学嵌入式系统与物联网研究所所长,苏州大学-沁恒RISC-V协同创新中心主任,江苏省计算机学会嵌入式系统与物联网专业委员会主任,中国软件行业协会嵌入式系统分会理事,教学、科研成果显著,撰写嵌入式系统方面著作十余部,获得发明专利三十余项。

② 结构科学。书中以嵌入式硬件构件及底层软件构件设计为主线,基于嵌入式软件工程的思想,按照“通用知识—驱动构件使用方法—测试实例—构件制作过程”的线条,逐步阐述电子系统智能化嵌入式应用的软件与硬件设计。

③ 内容新颖。本书在苏州大学嵌入式团队几十年教学积累的基础上,基于沁恒微电子的RISC-V架构CH32V307微控制器构建通用嵌入式计算机GEC生态系统,形成了相对完备的教学及实践系统。

④ 实例化教学。书中设计了大量的测试用例,也提供了所有模板完整的底层驱动构件化封装程序。

⑤ 本书设计了可直接进行实践的硬件系统AHL- CH32V307,该系统简捷、便利,可边学边实践,详情见书中介绍。


前言

嵌入式计算机系统简称为嵌入式系统,其概念最初源于传统测控系统对计算机的需求.随着以微处理器(MPU)为内核的微控制器(MCU)制造技术的不断进步,计算机领域在通用计算机系统与嵌入式计算机系统这两大分支上分别得以发展.通用计算机已经在科学计算、通信、日常生活等各个领域产生了重要影响.在后PC时代,嵌入式系统的广泛应用是计算机发展的重要特征.一般来说,嵌入式系统的应用领域可以粗略分为两大类:一类是电子系统的智能化(如工业控制、汽车电子、数据采集、测控系统、家用电器、现代农业、嵌入式人工智能及物联网应用等),这类应用也被称为微控制器MCU 领域;另一类是计算机应用的延伸(如平板电脑、手机、电子图书等),这类应用也被称为应用处理器MAP领域.不论如何分类,嵌入式系统的技术基础都是不变的,即要想完成一个嵌入式系统产品的设计,就需要有硬件、软件及行业领域的相关知识.但是,随着嵌入式系统中的软件规模日益增大,对嵌入式底层驱动软件的封装提出了更高的要求,可复用性与可移植性受到特别的关注,嵌入式软硬件构件化开发方法逐步被业界所重视。

2020年以来,RISC V 架构处理器在我国得以快速发展.本书在苏州大学嵌入式团队几十年教学积累的基础上,基于沁恒微电子公司的RISC-V 架构CH32V307微控制器构建的通用嵌入式计算机GEC生态系统,形成了相对完备的教学及实践体系.本书内容是在作者前期撰写的普通高等教育“十一五”“十二五”国家级规划教材、国家级一流本科课程教学实践的基础上,以CH32V307微控制器为蓝本重新撰写的.同时,在南京沁恒微电子公司及北京航空航天大学出版社的支持下,随书配备了可以直接进行实践的硬件系统AHL- CH32V307,该系统具有简捷、便利、边学边实践等优点,克服了实验箱模式的冗余、不方便带出实验室、不易升级等缺点,以逐步探索嵌入式教学的新模式。

书中以嵌入式硬件构件及底层软件构件设计为主线,基于嵌入式软件工程的思想,按照“通用知识—驱动构件使用方法—测试实例—构件制作过程”的脉络,逐步阐述电子系统智能化嵌入式应用的软件与硬件设计.需要特别说明的是,虽然书籍的撰写与相关课程的教学必须以某一特定芯片为蓝本,但作为嵌入式技术的基础,本书试图阐述嵌入式通用知识要素.因此,本书以知识要素为基本立足点,设计芯片的底层驱动,使得应用程序与芯片无关,使其具有通用嵌入式计算机(GEC)的性质.书中将大部分驱动的使用方法提前阐述,而将驱动构件的设计方法后置,目的是先学会使用构件进行实际编程,再理解构件的设计方法。因为理解构件的设计方法有一定难度,所以对于不同要求的教学场景,可以不要求学生理解全部构件的设计方法,仅讲解一两个即可。

本书具有以下特点:

(1)把握通用知识与芯片相关知识之间的平衡。书中对于嵌入式“通用知识”的基本原理,以应用为立足点,进行语言简洁、逻辑清晰的阐述,并注意与芯片相关知识的衔接,使读者在更好地理解基本原理的基础上,理解芯片应用的设计;同时反过来,加深对通用知识的理解。

(2)把握硬件与软件的关系。嵌入式系统是软件与硬件的综合体,嵌入式系统设计是一个软件、硬件协同设计的工程,不能像通用计算机那样,将软件、硬件完全分开来看.特别对电子系统智能化嵌入式应用来说,没有对硬件的理解就不可能写好嵌入式软件,同样没有对软件的理解也不可能设计好嵌入式硬件.因此,本书注重把握硬件知识与软件知识之间的关系。

(3)对底层驱动进行构件化封装。书中对每个模块均给出根据嵌入式软件工程基本原则并按照构件化封装要求编制底层驱动程序,同时给出详细、规范的注释及对外接口,为实际应用提供底层构件,方便移植与复用,可以为实际项目开发节省大量时间。

(4)设计合理的测试用例。书中所有源程序均经测试通过,并将测试用例保留在本书的网上教学资源中,避免因例程书写或固有的错误给读者带来烦恼.这些测试用例也为读者验证与理解相关知识带来方便。

(5)本书网上的电子资源提供了所有模块完整的底层驱动构件化封装程序与测试用例。需要使用PC机的测试用例程序,还提供了PC机的C#源程序、芯片资料、使用文档和硬件说明等,网上电子资源的版本会适时更新。

本书由苏州大学王宜怀统稿,杨勇、施连敏、游辉敏参与编写.苏州大学嵌入式系统与物联网研究所的研究生参与了程序开发、书稿整理及有关资源建设,他们卓有成效的工作使得本书内容更加充实。南京沁恒微电子公司的司云腾、李天培、陶玉凯、陈瑶、刘琪等给予了技术支持并校对书稿。苏州大学的刘纯平、赵雷、章晓芳、杨璐、刘晓升等老师,宿迁学院的王志超、陈林、万娟、史洪玮等老师,为本书提出了许多建设性意见,在此一并表示诚挚的感谢。

鉴于作者水平有限,对于书中存在的不足和错误之处,恳望读者提出宝贵意见和建议。

苏州大学 王宜怀

2022年2月


目录

第1章 概 述 1

  1.1 初识嵌入式系统 1

    1.1.1 运行硬件系统 1

    1.1.2 实践体系简介 3

    1.1.3 编译、下载与运行第一个嵌入式程序 4

  1.2 嵌入式系统的定义、发展简史、分类及特点 6

    1.2.1 嵌入式系统的定义 6

    1.2.2 嵌入式系统的由来及发展简史 7

    1.2.3 嵌入式系统的分类 8

    1.2.4 嵌入式系统的特点 9

  1.3 嵌入式系统的学习困惑、知识体系及学习建议 10

    1.3.1 嵌入式系统的学习困惑 10

    1.3.2 嵌入式系统的知识体系 13

    1.3.3 基础阶段的学习建议 14

  1.4 微控制器与应用处理器简介 16

    1.4.1 MCU简介 16

    1.4.2 以 MCU为核心的嵌入式测控产品的基本组成 17

    1.4.3 MAP简介 19

  1.5 嵌入式系统常用术语 20

    1.5.1 与硬件相关的术语 20

    1.5.2 与通信相关的术语 21

    1.5.3 与功能模块相关的术语 22

  本章小结 23

  习  题 24

第2章 RISC V架构微处理器 25

  2.1 RISC V概述与青稞 V4F微处理器简介 25

    2.1.1 RISC V概述 25

    2.1.2 青稞 V4F微处理器内部结构概要 27

    2.1.3 寄存器通用基础知识及相关基本概念 28

    2.1.4 青稞 V4F微处理器的内部寄存器 29

  2.2 寻址方式与机器码的获取方法 30

    2.2.1 指令保留字简表与寻址方式 31

    2.2.2 机器码的获取方法 32

  2.3 RISC V基本指令分类解析 34

    2.3.1 数据传送类指令 34

    2.3.2 数据操作类指令 36

    2.3.3 跳转类指令 37

    2.3.4 CSR类指令 38

    2.3.5 其他指令 39

  2.4 汇编语言的基本语法 39

    2.4.1 汇编语言的格式 39

    2.4.2 常用伪指令简介 41

  本章小结 43

  习  题 44

第3章 存储器映像、中断源与硬件最小系统 45

  3.1 CH32V307系列 MCU概述 45

    3.1.1 CH32V307系列 MCU命名规则 45

    3.1.2 CH32V307存储器映像 46

    3.1.3 CH32V307中断源 47

  3.2 CH32V307的引脚图与硬件最小系统 50

    3.2.1 CH32V307的引脚图 50

    3.2.2 CH32V307硬件最小系统原理图 52

  3.3 由 MCU构建通用嵌入式计算机 54

    3.3.1 嵌入式终端开发方式存在的问题与解决办法 55

    3.3.2 提出GEC概念的时机、GEC的定义与特点 56

    3.3.3 由CH32V307VCT6构成的GEC 57

  本章小结 62

  习  题 62

第4章 GPIO及程序框架 64

  4.1 GPIO通用基础知识 64

    4.1.1 GPIO概念 64

    4.1.2 输出引脚的基本接法 64

    4.1.3 上拉下拉电阻与输入引脚的基本接法 65

  4.2 软件干预硬件的方法 66

    4.2.1 GPIO构件 API 66

    4.2.2 第一个C语言工程:控制小灯闪烁 68

  4.3 认识工程框架 70

    4.3.1 工程框架及所含文件简介 70

    4.3.2 了解机器码文件及芯片执行流程 72

  4.4 GPIO构件的制作过程 74

    4.4.1 端口与GPIO模块———对外引脚与内部寄存器 74

    4.4.2 GPIO基本编程步骤并点亮一盏小灯 77

    4.4.3 GPIO构件的设计 78

  4.5 第一个汇编语言工程:控制小灯闪烁 83

    4.5.1 汇编工程文件的组织 83

    4.5.2 汇编语言小灯测试工程主程序 84

  4.6 实验一  熟悉实验开发环境及GPIO编程 88

  本章小结 91

  习  题 92

第5章 嵌入式硬件构件与底层驱动构件基本规范 93

  5.1 嵌入式硬件构件 93

    5.1.1 嵌入式硬件构件概念与嵌入式硬件构件分类 93

    5.1.2 基于嵌入式硬件构件的电路原理图设计简明规则 94

  5.2 嵌入式底层驱动构件的概念与层次模型 97

    5.2.1 嵌入式底层驱动构件的概念 98

    5.2.2 嵌入式硬件构件与软件构件结合的层次模型 98

    5.2.3 嵌入式软件构件分类 99

  5.3 底层驱动构件的封装规范 100

    5.3.1 构件设计的基本思想与基本原则 100

    5.3.2 编码风格基本规范 102

    5.3.3 头文件的设计规范 105

    5.3.4 源程序文件的设计规范 107

  5.4 硬件构件及其驱动构件的复用与移植方法 108

    5.4.1 硬件构件的复用与移植 108

    5.4.2 驱动构件的移植 109

  本章小结 110

  习  题 111

第6章 串行通信模块及第一个中断程序结构 112

  6.1 异步串行通信的通用基础知识 112

    6.1.1 串行通信的基本概念 112

    6.1.2 RS232和RS485总线标准 114

    6.1.3 TTL USB串口 115

    6.1.4 串行通信编程模型 116

  6.2 基于构件的串行通信编程方法 117

    6.2.1 CH32V307VCT6芯片的 UART对外引脚 117

    6.2.2 UART构件API 118

    6.2.3 UART构件API的发送测试方法 119

    6.2.4 printf的设置方法与使用 120

  6.3 UART构件的制作过程 121

    6.3.1 UART寄存器概述 121

    6.3.2 利用直接地址操作的串口发送打通程序 121

    6.3.3 UART构件设计 125

  6.4 中断机制及中断编程步骤 129

    6.4.1 关于中断的通用基础知识 129

    6.4.2 RISC V非内核模块中断编程结构 132

    6.4.3 CH32V307VCT6中断编程步骤———以串口接收中断为例 134

  6.5 实验二 串口通信及中断实验 137

  本章小结 139

  习  题 139

第7章 定时器相关模块 141

  7.1 定时器的通用基础知识 141

  7.2 CH32V307VCT6中的定时器 141

    7.2.1 青稞 V4F内核中的系统定时器SysTick 142

    7.2.2 实时时钟RTC模块 146

    7.2.3 Timer模块的基本定时功能 149

  7.3 脉宽调制 151

    7.3.1 脉宽调制PWM 的通用基础知识 151

    7.3.2 基于构件的PWM 编程方法 154

    7.3.3 脉宽调制构件的制作过程 157

  7.4 输入捕获与输出比较 162

    7.4.1 输入捕获与输出比较的通用基础知识 162

    7.4.2 基于构件的输入捕获和输出比较编程方法 162

  7.5 实验三 定时器及PWM 实验 167

  本章小结 168

  习  题 169

第8章 Flash在线编程、ADC与DAC 170

  8.1 Flash在线编程 170

    8.1.1 Flash在线编程的通用基础知识 170

    8.1.2 基于构件的Flash在线编程方法 171

    8.1.3 Flash构件的制作过程 173

  8.2 ADC 176

    8.2.1 ADC的通用基础知识 176

    8.2.2 基于构件的ADC编程方法 180

    8.2.3 ADC构件的制作过程 183

  8.3 DAC 186

    8.3.1 DAC的通用基础知识 186

    8.3.2 基于构件的DAC编程方法 187

  8.4 实验四 ADC实验 189

  本章小结 190

  习  题 190

第9章 SPI、I2C与TSC模块 192

  9.1 串行外设接口SPI模块 192

    9.1.1 SPI的通用基础知识 192

    9.1.2 基于构件的SPI通信编程方法 195

  9.2 集成电路互联总线I2C模块 199

    9.2.1 I2C的通用基础知识 199

    9.2.2 基于构件的I2C通信编程方法 204

  9.3 触摸感应控制器TSC模块 208

    9.3.1 TSC的基本原理 208

    9.3.2 基于构件的TSC编程方法 209

  9.4 实验五 SPI通信实验 212

  本章小结 214

  习  题 214

第10章 DMA与CAN总线编程 216

  10.1 CAN总线 216

    10.1.1 CAN总线的通用基础知识 216

    10.1.2 基于构件的CAN编程方法 220

  10.2 DMA 223

    10.2.1 DMA的通用基础知识 223

    10.2.2 基于构件的DMA编程方法 225

  本章小结 228

  习  题 228

第11章 USB与嵌入式以太网模块 229

  11.1 USB的通用基础知识 229

    11.1.1 USB概述 229

    11.1.2 与 USB相关的基本概念 232

    11.1.3 USB通信协议 237

    11.1.4 从设备的枚举看 USB数据传输 241

  11.2 CH32V307的 USB模块应用编程方法 246

    11.2.1 CH32V307的 USB模块简介 246

    11.2.2 CH32V307作为 USB从机的编程方法 246

    11.2.3 CH32V307作为 USB主机的编程方法 254

  11.3 嵌入式以太网的通用基础知识 257

    11.3.1 以太网的由来与协议模型 257

    11.3.2 以太网中的主要物理设备 260

    11.3.3 相关名词解释 262

  11.4 CH32V307的以太网模块应用编程方法 265

    11.4.1 CH32V307的以太网模块简介 265

    11.4.2 以太网底层驱动构件 267

    11.4.3 以太网测试实例 269

  11.5 本章小结 284

  习  题 284

第12章 系统时钟与其他功能模块 286

  12.1 时钟系统 286

    12.1.1 时钟系统概述 286

    12.1.2 时钟模块寄存器概要 287

    12.1.3 时钟模块编程实例 289

  12.2 电源模块与复位模块 291

    12.2.1 电源模块 291

    12.2.2 复位模块 292

  12.3 看门狗 292

    12.3.1 独立看门狗 293

    12.3.2 系统窗口看门狗 294

  12.4 数字视频接口与安全数字输入/输出 296

    12.4.1 数字视频接口 296

    12.4.2 安全数字输入/输出 297

  本章小结 298

  习  题 298

第13章 应用案例 299

  13.1 嵌入式系统稳定性问题 299

  13.2 外接传感器及执行部件的编程方法 300

    13.2.1 开关量输出类驱动构件 300

    13.2.2 开关量输入类驱动构件 303

    13.2.3 声音与加速度传感器驱动构件 305

  13.3 实时操作系统的简明实例 306

    13.3.1 无操作系统与实时操作系统 306

    13.3.2 RTOS中常用的基本概念 307

    13.3.3 线程的三要素、四种状态及三种基本形式 308

    13.3.4 RTOS下的编程实例 311

  13.4 嵌入式人工智能的简明实例 312

    13.4.1 AHLGEORS简介 312

    13.4.2 AHLGEORS的数据采集与训练过程 314

    13.4.3 在通用嵌入式计算机GEC上进行的推理过程 315

  13.5 沁恒 MCU的其他嵌入式实践资源简介 316

    13.5.1 AHLGCH573 316

    13.5.2 AHLGCH573GNBGIoT 317

    13.5.3 AHLGCH573GCAT1 318

参考文献 320


产品特色