福州大学单片机原理与应用(跨学科)复习

14592 字
73 分钟
福州大学单片机原理与应用(跨学科)复习

最终成绩:87 分 考试说明:闭卷形式,选择题+程序填空题+计算题+简答题

CH1 嵌入式系统概述#

1、嵌入式系统的定义#

以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、安全性、成本、体积、重量、功耗、环境等方面有严格要求的专用计算机系统。

2、嵌入式系统和通用计算机系统的比较(共同点和不同点)、嵌入式系统的特点#

共同点:都属于计算机系统,由硬件和软件组成;工作原理相同,都属存储程序机制;从硬件上看,嵌入式系统和通用计算机系统都是由CPU、存储器、I/O接口和中断系统等部件组成;从软件上看,嵌入式系统软件和通用计算机软件都可以划分为系统软件和应用软件两类。

不同点:形态,功能,资源,价值,功耗,开发方式。

特点:专用性强、可裁剪性、实时性好、可靠性高、生命周期长、不易被垄断

3、嵌入式系统的架构:冯・诺依曼结构和哈佛结构#

冯・诺依曼结构:采用二进制逻辑、程序存储执行以及计算机由五个部分组成(运算器、控制器、存储器、输入设备、输出设备)

哈佛结构(存储器结构):程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。

4、嵌入式系统处理器:MPU、MCU、DSP、SoC#

分别为微处理器 (MPU)、微控制器(MCU,俗称单片机)、数字信号处理器 (DSP) 和嵌入式片上系统(System on Chip ,简称SoC)

MCU 的特点是集成度高、控制能力强、可靠性强、低功耗、性价比高、系统设计周期短。最大特点是单片化,体积大大减小,从而使功耗和成本下降,可靠性提高。

5、MCU的基本组成:CPU、时钟、存储器、通用I/O、定时器/计数器、外设等#

单片机的CPU由运算器和控制器组成,有运算和控制的功能。单片机的指令代码就是通过CPU执行的。

时钟时钟本质上就是固定频率的脉冲信号,为MCU工作提供基准时序。时钟频率直接决定了MCU的执行速度。

单片机的存储器包括存放代码指令的ROM(或 Flash),以及存放变量、数据的SRAM

通用I/O口 (GPIO) 可以当作输入或输出接口。大部分单片机为了减少引脚数量,I/O口还复用作为其它特殊功能引脚,比如PWM输出、捕获输入、串行通信、外部中断输入等。

定时器/计数器能够提供精确定时,或者对外部事件进行计数。内部硬件本质是计数器,当计数器脉冲来源是固定频率脉冲时,可通过计数来实现计时。

MCU 常用的外设模块有:模数转换模块 (ADC)、PWM模块、捕获模块 (CAP)、通信模块等等。不同芯片有不同的外设配置

6、CPU功能#

CPU有运算和控制的功能。单片机另外增设了“面向控制”的处理功能,如位处理、查表、跳转、乘除法运算、状态检测、中断处理等,增强了实用性。

7、总线BUS:地址总线、数据总线、控制总线#

总线是一组相关逻辑信号的集合。不同芯片有不同的总线标准。

地址总线 (Address Bus, AB):单向,用于传递地址信息。地址线的数目决定了可寻址的存储空间。一根地址线有两种状态,即可以区分两个不同的存储单元,或者说可以寻址两个存储单元;如果有 nn 根地址线,则可以寻址 2n2n 个存储单元。

数据总线 (Data Bus, DB):一般为双向,用于CPU与存储器、CPU与外设、或外设与外设之间传送数据信息。我们平常说的8位、16位或32位单片机,指的就是CPU一次能够处理的数据位数,这也决定了单片机数据总线的根数(宽度)。

控制总线 (Control Bus, CB):是单片机系统中所有控制信号线的总称,用来传递控制信息。

CH2 C2000 系列微控制器及硬件平台#

1、F28027主要资源#

32位CPU、时钟(40MHz/50MHz/60MHz)、哈佛总线架构、3.3V单电源供电、外设资源(GPIO、中断PIE、CPU定时器、ePWM、eCAP、ADC、SCI、SPI、I2C)

2、引脚。功能复用、引脚有效符号等#

F28027的引脚按其功能进行分类,可以分为JTAG接口、Flash、时钟信号、复位引脚、ADC模拟输入信号、CPU和I/O电源引脚、电压调节控制引脚、GPIO和外设信号。

3、MCU硬件功能概述#

F28027有一个32位的CPU内核(TMS320C28x),主频高达60MHz,同时它具有GPIO、模数转换器ADC、增强型PWM模块、增强型捕获模块、串口通信接口、串行外设接口等外设。功能丰富强大,用户可以方便地用它来开发高性能的微控制系统。片内集成了Flash存储器,程序可以直接烧写到Flash中,实现脱机运行。

4、内存映射(数据空间/地址空间,空间大小与地址的转换)#

M0 SARAM和M1 SARAM大小均为1K×16位,地址范围分别为0x000000 ~ 0x0003FF0x000400 ~ 0x0007FF。当复位后,堆栈指针指向M1块的起始地址,堆栈指针向上生长。M0、M1可以映射到程序区和数据区

0x000800 ~ 0x0001FFF 对应外设帧0,为寄存器映射空间,该空间直接通过CPU内存总线访问。

0x006000 ~ 0x0006FFF 对应外设帧1,为寄存器映射空间,该空间通过32位外设总线访问。

L0 SARAM的大小为4K×16位,即可以映射到程序区,也可以映射到数据区。L0 SRAM地址为双映射,可以映射到0x008000 ~ 0x008FFF,也可以映射到0x03F8000 ~ 0x3F8FFF

用户OTP区的大小为1K×16位,地址范围为 0x3D7800 ~ 0x3D7BFF,即可以映射到程序区,也可以映射到数据区。

0x3D7C80 ~ 0x3D7CBF 为内部振荡器和ADC模块的校正数据空间。由厂家进行编程,用户不可编程。

0x3D7CC0 ~ 0x3D7CDF 该存储空间保存MCU工作模式引导程序。在MCU初始化引导时调用引导程序进入相应模式。

0x3D7E80 ~ 0x3D7EAF 预留给TMX/TMP系列芯片使用。

0x3D7FFF 保存设备相关信息,对于TI 28027PT读取值为0x00CF。

0x3F0000 ~ 0x3F7FF7 闪存分为四个扇区,每个扇区8K×16,分别是扇区D、扇区C、扇区B、扇区A。如果使用代码安全模式,Flash空间 0x3F7F80 - 0x3F7FF5不能用来保存程序代码或数据,必须将这些区域编程为0。如果不使用代码安全模式,可以用来保存程序或数据,但是 0x3F7FF0 ~ 0x3F7FF5 s只能用于保存数据,不能用于保存程序代码。

0x3F7FF8 ~ 0x3F7FFF 128位密码区。密钥由用户编程时写入闪存。

0x3FE000 ~ 0x3FFFFF BOOT ROM用于保存TI的引导装载程序和IQ数学表,在芯片出厂时已经编程好。包含IQ数学表、IQ数学函数、Bootloader函数、Flash应用程序接口库、ROM版本和ROM校验和、复位向量和CPU向量表几个部分。

0x3FE000 ~ 0x3FFFFF F28027的CPU向量表。在CPU向量表中,唯一可以直接使用的是位于0x3FFFC0的复位向量,复位向量保存着 InitBoot 函数的入口地址。

5、时钟信号SYSCLKOUT#

由锁相环模块输出。为了达到节能目的,TI对时钟提供一种管理机制,每个外设模块都可以对时钟输入进行使能或禁止(CLK ENABLE),只对需要工作的模块提供时钟信号,不工作的模块不提供时钟信号。系统时钟可以再次被处理,生成低速时钟信号LSPCLK,用于低速外设模块,如SCI模块和SPI模块。

F28027提供了四种时钟来源。包括:1、提供外接晶振的接口来实现内部振荡电路的工作;2、直接用外接时钟信号XCLKIN;3、内部振荡器Internal OSC1;4、内部振荡器Internal OSC2。内部振荡器的工作频率是10MHz,单片机上电复位后默认的时钟来源是Internal OSC1。

6、看门狗电路(本质是定时器,“喂狗”:0x55AA)#

F28027提供了看门狗模块。该模块本质上是一个计数器,在计数器溢出时,它会产生一个复位信号,来复位CPU或者产生看门狗中断。为了不让它产生复位信号,那就需要在计数器溢出前对它清零,俗称“喂狗”。

时钟源OSCCLK经过512分频后再进行可编程的预分频 (Watchdog Prescaler),输出脉冲作为看门狗计数器(Watchdog Counter)的计数脉冲。Watchdog 55+AA Key Detector 是看门狗的“喂狗”操作。“喂狗”时,需要先写入数据“55”给寄存器WDKEY,接着写入“AA”给寄存器WDKEY,硬件就会发出有效的信号 Good Key,用于复位看门狗计数器。

当程序运行出现问题,比如“死机”或进入“死循环”,那么设定的“喂狗”程序将无法执行,看门狗计数器将溢出并发出触发信号,通过 Generate Output Pulse 模块输出512个时钟周期的低电平信号。

7、片内上电复位/欠电压复位#

上电复位电路(POR)的目的是在整个上电过程,对器件产生一个有效的复位信号。器件上电过程结束后,欠压复位电路(BOR)对VDDIO进行监测,如果使能片内电压稳压器,还对VDD进行监测。POR的电压保护点比BOR低。当电压低于相应的保护点时,复位电路把XRS拉至低电平引起复位过程。

CH3 微控制器程序设计基础#

1、编程语言#

机器语言就是用二进制代码表示的计算机能直接识别和执行的一种机器指令集合,每一条机器指令在计算机内部都有相应的电路来完成它,是唯一的计算机能够直接识别和执行的语言。CPU的所有指令集构成该计算机的指令系统

汇编语言是面向机器的程序设计语言。由汇编语言编写的程序,计算机无法直接识别,需把汇编语言翻译成机器语言,这种具有翻译功能的程序叫做汇编程序。汇编程序把汇编语言翻译成机器语言的过程称为汇编。汇编语言的指令一般都由操作码和操作数组成,操作码也被称为指令助记符。

机器语言和汇编语言都是低级语言。高级语言是一种贴合人类逻辑思维、便于直观理解的计算机语言,高级语言既接近自然语言又可以使用数学表达式,并且相对独立于计算机,可以跨计算机使用。编译的程序代码通常比用汇编语言设计的程序代码更长、执行更慢。

2、CPU执行指令5个过程:取指令、指令译码、取操作数、执行指令、结果写回#

取指令:将指令从程序存储器取出。程序计数器PC中的数值指示当前指令在程序存储器中的位置。当一条指令被取出后,PC中的数值将根据指令长度自动递增,指向下一条指令。

指令译码:指令译码器按照预定的指令格式,对取回的指令进行译码,识别出不同的指令类别以及各种获取操作数的方法。

取操作数:从存储器或者CPU寄存器中获取操作数。操作数指出了参与运算的数据或数据所在的地址,而如何得到就由芯片的寻址方式决定。C28x支持四种基本寻址方式:直接寻址方式、间接寻址方式、堆栈寻址方式、寄存器寻址方式。同时,C28x还支持一些特殊寻址方式,如数据/程序/IO空间寻址方式、程序空间间接寻址方式等。

执行指令:完成指令所规定的操作,实现指令的功能。为此,CPU的不同部分被连接起来,以执行所需的操作。

结果写回:把执行指令阶段的运行结果数据写回到存储器或CPU寄存器。

在结果数据写回之后,当条指令执行完毕。CPU从程序计数器PC中取得下一条指令地址,开始新一轮的循环。

为了提高效率,C28x采用8个独立阶段来完成以上5个过程。指令以流水线方式执行,在任何时候,最多可以执行八个指令,每个指令处于不同的完成阶段。

3、嵌入式C语言:几个特殊保留字(volatile、interrupt)#

嵌入式C语言的四大要素就是数据及其处理、程序流程控制、函数与中断服务程序以及指针。

volatile 关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。

Example
volatile int i=10;
int a = i;
...
// 其他代码,并未明确告诉编译器,对 i 进行过操作
int b = i;

volatile 指出 i 是随时可能发生变化的,每次使用它的时候必须从 i 的地址中读取,因而编译器生成的汇编代码会重新从 i 的地址读取数据放在 b 中。而优化做法是,由于编译器发现两次从 i 读数据的代码之间的代码没有对 i 进行过操作,它会自动把上次读的数据放在 b 中。而不是重新从 i 里面读。这样以来,如果 i 是一个寄存器变量或者表示一个端口数据就容易出错,所以说 volatile 可以保证对特殊地址的稳定访问。

interrupt/__interrupt 为编译器扩展的保留字,用于声明中断服务函数(ISR)。ISR 函数必须定义为 void 返回类型,且没有参数。例如:__interrupt void int_handler(void)。编译器会在编译时执行特殊的操作:自动保存和恢复寄存器;生成特殊的中断返回指令 IRET

CH4 软件架构与CCS集成开发环境#

1、如何使用结构体指针操作寄存器#

结构体指针的定义:

  • 第一步:声明结构体类型,结构体类型名为GPIO_Obj。 结构体成员包含了GPIO模块的所有寄存器,结构体成员严格按照寄存器的地址顺序排列,并保留没有用到的地址空间,
  • 第二步:声明结构体指针类型,结构体指针类型名为GPIO_Handletypedef GPIO_Obj * GPIO_Handle;
  • 第三步:定义结构体指针变量myGpio。 GPIO_Handle myGpio;
  • 第四步:结构体指针变量初始化。 myGpio = (void*)GPIO_BASE_ADDR; //GPIO_BASE_ADDR为GPIO模块所有寄存器的首地址0x0000 6F80

接下来,以 GPADAT 寄存器为例介绍寄存器的读写操作方法。

myGpio->GPADAT = 5; // GPADAT寄存器值设置为5
data = myGpio->GPADAT; // 读取GPADAT寄存器值当前的值,保存到变量data中

2、寄存器位操作#

寄存器位操作一般都是通过逻辑“与”和逻辑“或”来实现的。在对某个位操作的同时不能影响到寄存器的其他位。例如,对GPADATGPIO2这个位进行写和读操作:

myGpio ->GPADAT &= (~((uint32_t)1 << 2)); // 待操作位清零,其他位保持不变
myGpio ->GPADAT |= (uint32_t)1<< 2; // GPIO2位写1
// myGpio ->GPADAT |= (uint32_t)0<< 2; // GPIO2位写0
Bitdata= ((myGpio -> GPADAT >> 2) & 0x0001)// GPIO2位值保存到Bitdata变量中。

3、软件架构#

分为主程序层、应用层、用户模块层和芯片模块层。

TI公司为各系列MCU提供了丰富的固件库函数和技术支持。固件库是一个固件函数包,它由程序、数据结构和宏组成,包括MCU所有系统级和外设标准驱动函数(接口)。对于初学者而言,可以直接调用这些驱动函数,快速实现需要的应用。

用户模块层对MCU驱动函数进行封装,完成具体的功能操作。

应用层对用户函数进行封装。

主程序层主要是对MCU的初始化配置和应用层功能函数的调用,实现复杂的MCU功能。初始化部分包含系统和外设模块配置函数和初始化函数。

CH5 通用输入输出口#

1、GPIO基础知识#

GPIO是微控制器的数字输入输出模块,可以实现微控制器与外部设备的数字交换。数字输入功能主要是将外部设备的开关量信号转换成CPU可读取的数字信号“1”、“0”,从而获知外部设备的运行状态;数字输出功能则是将CPU的数字控制信号“1”、“0”转换成引脚高、低电平信号,从而实现对外部设备运行状态控制。

GPIO输出驱动器主要由多路选择器、输出控制和MOS管组成。

多路选择器根据用户配置决定该引脚是用于通用GPIO还是复用功能输出。通用输出时,该引脚的输出信号来自于GPIO输出数据寄存器。复用功能输出时,该引脚输出信号来自于片上外设,并且一个引脚输出可能来自多个不同外设。同一时刻,一个引脚只能使用一种输出功能

根据数字电路输出电平的“强弱”,可将IO输出分为图腾柱输出(推挽输出/推拉输出)、开漏输出、下拉电阻输出3种。

图腾柱输出电路输出为强1,强0或高阻态。推挽输出既提高电路的负载能力,又提高开关速度,适用于输出0V和VDD的场合。输出强1:上管导通,下管截止,OUTPUT输出高电平;输出强0:上管截止,下管导通,OUTPUT输出低电平;高阻状态:上管截止,下管截止,无影响

开漏输出:与图腾柱方式相比,只有下管受控,上管断开或没有上管。对于与Vss相连的MOS管来说,其漏级是开路的。当内部输出“0”时,下管导通,引脚相当于接地,外部输出低电平;当内部输出“1”时,下管截止,由于上管也截止,外部输出既不是高电平,也不是低电平,而是高阻态。如果想要外部输出高电平,必须接有上拉电阻。上拉电阻输出电路为强0弱1电路

下拉电阻输出电路为强1弱0电路。与图腾柱方式相比,只有上管受控,没有下管。

2、C2000的GPIO模块(概述、软件架构)#

F28027有22个GPIO(DIO)、6个AIO(与AD采样通道共用引脚);GPIO 引脚分组管理,分为端口A(由GPIO0 - GPIO31组成)、端口B(由GPIO32-GPIO38组成)。

GPIO引脚与最多3种外设功能引脚共用,使用前需要先进行模式选择。

GPIO引脚可工作在上拉模式或推挽模式。

GPIO引脚的电气特性:输入时,低电平电压范围为:(Vss-0.3)V ~ 0.8V,高电平电压范围为:2V ~(VDD+0.3)V。输出时,逻辑“1”输出的电压最低为2.4V,逻辑“0”输出的电压最高为0.4V。

CPU对输入引脚的信号确认有3种方式。非同步(异步输入)方式、同步时钟方式、采样窗方式。默认情况下,所有输入引脚信号被设置为同步于系统时钟SYSCLKOUT。

采样窗方式下,输入信号首先被同步到系统时钟SYSCLKOUT,然后输入信号状态持续时间达到指定数量周期数时,输入状态才允许改变。

为了限定信号,在固定的周期进行输入信号采样。用户指定采样周期(也称采样间隔时间)是相对于系统时钟(SYSCLKOUT)而言的。

采样的次数可以选择为3次采样或者6次采样,通过寄存器GPAQSEL1、GPAQSEL2、GPBQSEL1和 GPBQSEL2来设置。当连续3次或6次信号状态一样,输入状态的改变才会被确认

采样窗口就是输入信号被确认的时间长度。为了让输入限定能够检测到输入的变化,信号电平必须在采样窗口或者更长的时间内保持稳定。GPIO引脚的输入信号经过限定器后输出信号就对小毛刺A进行了滤波。

3、软件思维导图:配置GPIO控制LED和按键#

GPIO的硬件初始化配置都需要通过GPIO的寄存器实现,包括GPIO控制寄存器(GPIO Control Registers)和GPIO中断 和低功耗唤醒选择寄存器(GPIO Interrupt and Low Power Mode Select Registers)。GPIO的读写操作通过GPIO数据寄存器操作(GPIO Data Registers)。

由于引脚功能的复用性,使用前需要根据硬件系统的资源需求,统筹考虑把引脚当作GPIO或其他外设功能。优先考虑并预留外设功能的需求。

步骤1:配置引脚功能(GPIO_setMode)。 步骤2:使能/禁止内部上拉电阻(GPIO_setPullUp)。 步骤3:配置输入限定(GPIO_setQualification、GPIO_setQualificationPeriod)。 步骤4:配置引脚方向(GPIO_setDirection)。 步骤5:低功耗唤醒模式唤醒源(GPIO_lpmSelect)。 步骤6:选择外部中断源(GPIO_setExtInt)。

CH6 中断系统#

1、中断基础知识(中断概念、中断处理过程、中断嵌套)#

单片机的中断系统能够加强CPU对多任务事件的处理能力。中断是CPU对系统发生的某个事件作出的一种反应。引起中断的事件称为中断源。中断源向CPU提出处理的请求称为中断请求。发生中断时被打断程序的暂停点称为断点。CPU暂停现行程序而转去响应中断请求的过程称为中断响应。中断响应的程序称为中断处理程序。CPU执行有关的中断处理程序称为中断处理。而返回断点的过程称为中断返回。中断的实现通过软件和硬件综合完成,硬件部分叫做硬件装置,软件部分称为软件处理程序。

根据来源不同,中断可分为硬件中断(Hardware Interrupt)和软件中断(Software Interrupt);根据中断请求能否被屏蔽,中断可分为可屏蔽中断(Maskable Interrupt)和非可屏蔽中断(Non-Maskable Interrupt,NMI)

中断服务程序的入口地址称为中断向量

中断的优先级主要用来描述不同事件的重要程度。如果在执行一个中断时又被另一个更重要的事件打断,暂停该中断处理过程转而去处理这个更重要的事件,处理完毕后再继续处理本中断的过程称为中断的嵌套

程序设计人员可以通过设置相应的中断屏蔽位,禁止CPU响应某个中断,从而实现中断屏蔽。但值得注意的是,尽管某个中断源可以被屏蔽,但一旦该中断发生,不管该中断屏蔽与否,它的中断标志位都会被置位,而且只要该中断标志位不被清除,它就一直有效。

MCU的中断处理过程包括中断请求、中断响应、中断服务、中断返回四个步骤。当外设发出中断请求时,如果从外设到CPU的中断使能被允许,那么进入中断响应阶段。由于CPU执行完中断处理程序之后要返回被中断的地方继续执行原来程序,因此在执行中断服务程序之前,要把断点处地址和现场进行保护

单一中断请求时,CPU暂停正在运行的主程序转而运行中断服务程序,中断处理完毕后运行原程序。当多个中断请求同时挂起且不允许中断嵌套时,CPU首先处理高优先级中断事件,然后再处理低优先级中断事件,最后返回执行主程序。允许中断嵌套时,大多数MCU高优先级中断可以中断低优先级中断服务程序,低优先级中断不能中断高优先级中断服务程序

2、C2000的中断系统#

中断资源包含1个非可屏蔽中断NMI和16个可屏蔽中断(INT1-INT14、RTOSINT、DLOGINT)

可屏蔽中断(INT1~INT12)采用外设中断扩展(PeripheralInterrupt Expansion,PIE)来进行协助管理,定时器1、2对应的INT13、INT14中断和NMI不经过PIE,直接与CPU相连。

PIE模块参与管理的中断有以下四类:

  • TINT0:定时器0中断,可屏蔽中断;
  • 外部中断:XINT1、XINT2、XINT3;
  • 唤醒中断:WAKEINT,包括看门狗和低功耗唤醒;
  • 外设中断:SPI、SCI、I2C、EPWM、HRPWM、ECAP、ADC等。

PIE最多可管理96个独立中断源,这96个中断源分成12组、每组8个,分别对应CPU级12个可屏蔽中断(INT1~INT12)。96个中断源具有独立的中断向量,均存储在专用RAM中,用户可以修改这些中断向量。

3、PIE三级中断管理机制#

F28027的中断采用的是3级中断管理机制,分别是外设级、PIE级和CPU级。对于某一个具体的外设中断请求,任意一级的不许可,CPU最终都不会响应该外设中断。

外设模块产生中断事件时,相应外设模块寄存器的中断标志位IF被置位,如果对应的外设中断允许位IE被使能,则外设就向PIE发送一个中断请求。如果外设中断允许位IE未被使能,则该中断被屏蔽,不会向PIE发送中断请求。外设模块的中断标志位有的会在中断响应后自动清除,有的需要通过软件来清除。外部中断比较特殊,没有中断标志位,如果中断使能允许,外部中断请求信号直接送达PIE。

PIE控制器将每8个外设或外部中断汇集成1个CPU级中断。这样对于96个外设中断源,就被分成12组,分别是PIE1~PIE12,每一组对应一个CPU级中断,即PIE1对应INT1,PIE12对应INT12。一旦中断请求被送到PIE模块,相应的PIE中断标志位PIEIFRx.y被置位。如果对应的中断使能位PIEIERx.y=1,那么PIE模块将检查相应的PIE应答位PIEACKx,确认CPU是否准备好响应这个组的中断。如果这个组的PIE应答位PIEACKx=0,则PIE将该中断请求送至CPU。如果PIE应答位PIEACKx=1,中断请求不会被PIE发送给CPU,直到PIEACKx=0且该中断请求还存在时,PIE才会将挂起的中断请求发送给CPU。

软件清除中断应答位PIEACKx;而CPU响应PIE级中断后,自动清除相应的中断标志位PIEIFRx.y,后者不可通过软件进行清除。

当中断请求从PIE发送到CPU时,CPU级的中断标志寄存器IFRx被置位,中断应答位PIEACKx被置位,同组的其他中断请求被挂起。如果IERx=1且中断总开关INTM=0,那么CPU将响应这个中断请求并自动清零对应的IFRx标志位

CPU响应中断请求后,要去处理中断服务程序,这个中断响应过程包括现场保护(中断返回地址、相关寄存器等入栈)和中断服务子程序地址的获取。其中,中断服务子程序地址保存在MCU内存单元,这部分内存单元也称为中断向量表

CH7 CPU定时器#

1、定时器基础知识(本质是计数器、计数方式、定时时间计算)#

定时器本质上是一个计数器,该计数器能对固定频率的脉冲进行计数,把时间的计量转化为对脉冲的计数。根据计数方向不同,有增计数、减计数、增减计数三种模式

增计数的工作模式是计数器按加1计数,也就是计数器在时钟脉冲的触发下连续加1。当计数值与预先设置的周期值PRD相等时,计数器重新从0开始计数,由于计数是从0开始的,因此实际的计数周期要多加1

减计数的计数方式与增计数相反,计数器从某个初始值开始减1,减到0时回到初始值重新开始。

增、减计数工作模式下定时器的定时时间T为:T=Tclk×(PDR+1)T=T_{clk} × (PDR+1)

增减计数模式的计数方向由定时器自动设置,当计数器的值增加到周期值时,计数方向由增计数自动改为减计数,同样,当计数值减到0时,计数方向由减计数自动改为加计数。这种工作模式下定时器的定时时间T为:T=Tclk×(PDR×2)T=T_{clk} × (PDR×2)

2、C2000的定时器(3个定时器、时钟基准SYSCLKOUT、减计数方式、预分频、周期、定时时间计算)#

F28027有3个32位的定时器TIMER0、TIMER1和TIMER2,三个定时器均采用减计数工作模式。TIMER0和TIMER1提供给用户使用,TIMER2提供给实时操作系统使用。时钟基准默认为系统时钟SYSCLKOUT。

预分频计数器(PSCH)的触发信号是系统时钟信号(SYSCLKOUT)。每个时钟周期PSCH,当PSCH,发出脉冲信号(Borrow),该信号作为计数器(TIMH)的时钟信号,同时触发寄存器TDDRH:TDDR的值重新装载到寄存器PSCH

定时器的工作流程是:每经过(TDDRH+1)个时钟周期计数器(TIMH)减1,当计数器TIMH

Example

假设系统时钟是 1MHz(即1微秒一个脉冲)。

  • 如果 TDDRH:TDDR = 0,预分频系数是1,则主计数器每 1 微秒减 1。
  • 如果 TDDRH:TDDR = 99,预分频系数是100,则主计数器每 100 微秒才减 1。

定时时间:T=(TDDRH:TDDR+1)×(TIMH:TIM+1)×TclkT=(TDDRH:TDDR+1)×(TIMH:TIM+1)×T_{clk}

CH8 增强型捕获模块#

1、捕获模块基础知识#

捕获模块可以捕获MCU引脚的电平跳变(上升沿、下降沿),并记录电平跳变的时刻。捕获模块也有对时间的处理,也是通过计数器来实现的。捕获模块可以用于外部事件的精确时间测量。只要被检测信号能够转换为脉冲信号,捕获模块就可以对该脉冲信号进行捕获。

2、计数器工作模式:增计数#

3、C2000的eCAP(概述、功能(预分频、边沿极性、连续/单次模式、事件决策、捕获寄存器、中断控制)#

单触发捕获模式:捕获1-4个事件后停止捕获 连续捕获模式:循环进行1-4个事件的捕获 中断功能:4个捕获事件都可以触发中断 捕获模式不使用时,eCAP模块可以配置为单通道PWM输出

预分频器可以对输入脉冲信号进行预分频(2-62分频,2的倍数),或者直接旁路,不经过预分频器。

边沿极性可以选择上升沿捕获或下降沿捕获。eCAP模块有4个独立的边沿极性选择,每一个分别对应一个捕获事件。

Modulo 4 counter:事件触发计数器,由捕获事件触发计数。计数值只能是0、1、2、3。

输入信号经过事件预分频(Event prescale)、极性选择(Polarity select)后到达事件决策模块(Event qualifier)。事件决策模块根据捕获模式(Continuous/Oneshot Capture Control)的配置,产生装载捕获寄存器的触发信号(LD1LD4),把捕获计数器(TSCTR)的当前值CTR装载到捕获寄存器中(CAP1、CAP2、CAP3、CAP4)。根据复位配置(CTRRSTx)可输出信号(Delta mode)复位捕获计数器。捕获事件(Capture events)可发出捕获事件中断信号(CEVT)给PIE。另外,eCAP1 eCAP4可通过时钟同步信号(SYNCIn)进行计数器初始值(CTRPHS)的装载。

捕获事件1设置为上升沿触发,差分模式,当上升沿捕获时,计数器清0,开始新的周期计数;捕获事件2设置为下降沿触发,绝对值模式,这样CAP2即对应高电平的周期值;CAP1的值对应波形周期值

eCAP捕获模式时有5个中断事件,即捕获事件1(CEVT1)、捕获事件2(CEVT2)、捕获事件3(CEVT3)、捕获事件4(CEVT4)、TSCTR计数器溢出(CTROVF)(计数值从FFFFFFFF回到00000000)。

CH9 增强型脉宽调制模块#

1、PWM基础知识#

PWM是Pulse Width Modulation的缩写,即脉冲宽度调制,也就是宽度可调节的方波脉冲。相关的参数:周期、频率和占空比

  • 周期T:输出一次脉冲,即输出一次完整的高低电平的时间
  • 频率f:周期的倒数,即 f=1Tf=\frac{1}{T}
  • 占空比D:一个周期内,脉冲高电平时间与周期的比值(D=ThighTD=\frac{T_{high}}{T}

PWM信号有两种产生方法:模拟电子方法和数字化方法。

模拟电子方法:由三角波或锯齿波发生器产生高频调制波,经比较器产生PWM信号。三角波或锯齿波与可调直流电源比较,产生占空比可调的PWM信号;与正弦基波比较,产生占空比按正弦规律变化的SPWM信号。

数字化方法(主流):与硬件构成PWM信号类似,数字逻辑将锯齿波发生器等效为一个计数器Count,将可调直流电源等效为比较点Compare。数字控制产生PWM需要3个寄存器:计数器、周期值和比较值。通过配置周期值和比较值就能够产生任意频率、占空比的PWM信号。

2、C2000的ePWM(TB子模块、CC子模块、AQ子模块、ET子模块)#

时基子模块(TB)功能:每个ePWM单元都有一个独立的时基单元,用来决定该ePWM模块相关的事件时序。通过同步输入信号可以将所有的ePWM工作在同一时基信号下,即所有的ePWM级联在一起,处于同步状态,可以看成一个整体。

TB 模块的主要功能:

  1. 预分频功能(Clock Prescale)
  2. PWM周期值(TBPRD)
  3. 时基计数器TBCTR
  4. 时基时钟同步
  5. 时基计数器相位控制

系统时钟预分频后作为TB子模块的时钟信号,分频系数由寄存器TBCTL[HSPCLKDIV]TBCTL[CLKDIV]决定。HSPCLKDIV的值为x,则如果x为0,则分频系数为1,如果x不为0,则分频系数为2x;如果CLKDIV的值为y,则分频系数为2y。

Example

本书案例设置SYSCLKOUT为60MHz,如果HSPCLKDIV=0,CLKDIV=1,则TBCLK=30MHz。

PWM周期值TBPRD有两个寄存器:影子寄存器(Period Shadow)和活动寄存器(PeriodActive)。它们具有相同物理地址。由TBCTL[PRDLD]位控制周期寄存器的工作模式:影子寄存器模式 (=0) 或立即加载模式 (=1)。默认情况下TBPRD采用影子寄存器模式。在影子寄存器模式下,对TBPRD的读写操作是对影子寄存器进行的,只有当TBCTR=0时,影子寄存器的值加载到工作寄存器。

时基计数器的计数模式有三种模式,分别是:增计数模式、减计数模式和增减计数模式。在这三种计数模式中,一个有效的TBCLK,时基计数器变化率为1。

每个ePWM模块的时基时钟TBCLK是独立的,它们都是由系统时钟信号SYSCLKOUT分频得到。在CLK模块中,提供一个同步开关TBCLKSYNC,当这个开关有效(置位)时,所有工作的ePWM模块的时基计数器TBCTR同步于TBCLK的第一个上升沿。每个ePWM模块的分频必须设置一样。

每个ePWM模块拥有一个同步信号输入(EPWMxSYNCI)和一个同步信号输出(EPWMxSYNCO)。第一个ePWM模块(ePWM1)的同步输入信号是来自芯片的引脚。同步信号还控制关联的捕获(eCAP)模块。同步脉冲信号实现不同ePWM模块的同步,而且通过TBPHS实现各ePWM模块的相位超前和滞后的控制。当同步输入信号发生时,时基相位TBPHS装载到时基计数器TBCTR,装载时刻一致,同步实现。如果ePWM模块的TBPHS不为零,那么在同步信号作用下,TBPHS的值就装载进TBCTR,各个ePWM模块就存在计数初值的不同,也就是存在相位差。

CC子模块主要功能是对TB子模块的计数器值TBCTR与给定的比较值进行比较,产生比较相等的事件,该事件作为后续AQ子模块的触发事件。有两个比较寄存器CMPA和CMPB

它们分别有两个寄存器:影子寄存器和工作寄存器。影子寄存器和工作寄存器具有相同的物理地址。由CMPCTL[SHDWAMODE]CMPCTL[SHDWBMODE]位控制比较值寄存器的工作模式:影子寄存器模式或立即加载模式。对CMPA的写操作是对影子寄存器进行的。在设置的特殊时刻,影子寄存器的值加载到工作寄存器。加载的特殊时刻由CMCTRL[LOADMODE]决定,可以在CTR=0时刻、CTR=PRD时刻或两者都可以。

比较功能子模块可以产生两个独立的比较事件,对于增计数或减计数,在一个PWM周期内,比较事件只发生一次。对于增减计数模式,在一个PWM周期内,如果比较寄存器的值在0~TBPRD之间,在一个PWM周期内,比较事件发生两次。

AQ子模块决定了相应事件发生时应该输出什么样的电平。该模块是基于事件驱动的,可以认为该子模块输入的就是事件,输出的是动作。每个子模块有两路独立输出EPWMA和EPWMB

AQ子模块的输入事件有4种,事件发生时触发AQ子模块,分别是:

  1. CTR = PRD,计数器寄存器TBCTR的值与周期寄存器TBPRD相等时;
  2. CTR = Zero,计数器寄存器TBCTR的值等于0时;
  3. CTR = CMPA,计数器寄存器TBCTR的值等于比较寄存器CMPA;
  4. CTR = CMPB,计数器寄存器TBCTR的值等于比较寄存器CMPB

将计数方向输入给AQ子模块,能够把计数比较事件细分为增计数情形的计数比较事件(CAU和CBU)和减计数情形的计数比较事件(CAD和CBD)。除了以上外部事 件外,还可以用软件强制触发。通过设置寄存器AQSFRC、AQCSFRC,产生一个软件强制事件。该软件强制事件可以是单次作用,也可以是连续作用。

AQ子模块控制在触发事件产生时,2路PWM输出EPWMxA和EPWMxB表现出何种行为。PWM输出EPWMxA 和 EPWMxB可以设置为以下的动作:

  1. 置高,EPWMxA或EPWMxB输出高电平;
  2. 置低,EPWMxA或EPWMxB输出低电平;
  3. 翻转,EPWMxA或EPWMxB输出电平与之前的电平相反;
  4. 无动作,EPWMxA或EPWMxB的输出状态不变。
Warning

任何有效事件都能用来产生预定的动作,例如事件 CTR=CMPA 和 CTR=CMPB 都可以作用于EPWMxA,不要认为A的事件只能用来产生A的PWM输出。

AQ在硬件上也设计有事件的优先级。在众多事件中,软件强制的优先级始终是最高的。在增减计数下,CTR = CMPB 优先于 CTR = CMPA;增计数方向上,增事件优先于减事件,CTR = Zero在中间;减计数方向上,减事件优先于增事件,CTR = PRD在中间

如果是增/减计数,那么就排除减/增计数方向和减/增事件。

死区,通常叫死区时间(dead time),用于避免功率开关控制信号翻转时发生误触发的情况。死区子模块 (DB) 就是起到延时导通的作用。实现的功能有:死区发生器时钟选择、死区时间的设置、输入源选择(DBCTL[IN_MODE])、极性选择(DBCTL[POLSEL])、输出模式(DBCTL[OUT-MODE])

死区发生器产生波形上升沿延时RED和下降沿延时FED,它是通过10位计数器来实现的。计数器时钟DBCLK可以选择为:

  • fDBCLK=fTBCLK,即与TBCLK同频,称为周期时钟
  • fDBCLK= 2×fTBCLK,即为TBCLK的2倍频,称为半周期时钟

死区时延时间计算公式为: FED=DBFED×TTBCLKFED = DBFED × TTBCLK RED=DBRED×TTBCLKRED = DBRED × TTBCLK 其中TTBCLKTTBCLK是时基时钟TBCLK的周期。如果选择半周期时钟,则TTBCLKTTBCLK也取半。

通过对应开关控制,死区子模块的输入信号是动作限定子模块的输出信号,记为EPWMxA in和EPWMxB in。信号源可以设置为:

  • EPWMxA in 作为上降沿和下升沿延时的信号源,该模式是缺省模式。
  • EPWMxA in 作为上降沿延时的信号源,EPWMxB作为下升沿延时的信号源。
  • EPWMxA in 作为下升沿延时的信号源,EPWMxB作为上降沿延时的信号源。
  • EPWMxB in 作为上降沿和下升沿延时的信号源。

事件触发与中断管理 (ET) 子模块主要功能有:

  • 管理由时基子模块、比较子模块所产生的事件,这些事件可用于产生PIE中断 EPWMxINT 和 ADC 转换启动信号 EPWMxSOCA 和 EPWMxSOCB
  • 允许软件强制触发中断和启动ADC转换
  • 通过事件分频机制,灵活设置输出触发事件的频度

可用于ET子模块的输入事件信号有:

  • CTR=Zero:计数器寄存器的值为0,TBCTR =0
  • CTR=PRD:计数器寄存器的值为PRD,TBCTR =PRD
  • CTR=Zero 或 CTR=PRD:TBCTR = 0或TBCTR = period
  • CTRU=CMPA:在计数器增计数时,TBCTR=CMPA,CTR_dir=1
  • CTRD=CMPA:在计数器减计数时,TBCTR=CMPA,CTR_dir=0
  • CTRU=CMPB:在计数器增计数时,TBCTR=CMPB,CTR_dir=1
  • CTRD=CMPB:在计数器减计数时,TBCTR=CMPB,CTR_dir=0
  • 软件产生的强制事件信号

每个ePWM的ET子模块拥有的输出事件信号有:

  • 1路PIE中断,EPWMxINT
  • 2路ADC启动信号,EPWMxSOCA和EPWMxSOCB

PWM周期:T=(N+1)×TclkT=(N + 1)×T_{clk}

占空比与比较值:Thigh=CMP+TclkT_{high} = CMP + T_{clk}

3、软件思维导图#

引脚配置:

  1. 配置引脚功能(GPIO_setMode)
  2. 配置引脚方向(GPIO_setDirection)
  3. 使能/禁止内部上拉电阻(GPIO_setPullUp)
  4. 输入配置为异步系统时钟(GPIO_setQualification)

功能配置:

  1. PWM时基时钟关闭(CLK_disableTbClockSync(myClk)
  2. PWM时钟设置(PWM_setHighSpeedClkDiv、PWM_setClkDiv)
  3. PWM计数模式设置(PWM_setCounterMode)
  4. PWM动作限定设置(AQ模块)
  5. 计算PWM的周期、周期设置(PWM_setPeriod)
  6. 计算PWM的占空比、占空比设置(CC模块)
  7. 设置PWM死区(DB模块,可选项)
  8. 设置PWM斩波(PC模块,可选项)
  9. 设置PWM故障联防(TZ模块,可选项)
  10. PWM时基时钟开启(CLK_enableTbClockSync)
  11. PWM事件触发与中断管理(ET模块)

中断事件配置:

  1. 中断入口地址注册(PIE_registerPieIntHandler)
  2. PWMx事件中断使能(PWM_enableInt)
  3. PIE级中断使能(PIE_enableInt)
  4. CPU级中断使能(CPU_enableInt)

中断服务程序:

  1. 在PWM中断服务程序里完成比较点的更新或其他任务
  2. 清除PWM中断标志位和对应的PIE中断应答位PIEACKx。

CH10 模/数转换器#

1、ADC基础知识#

模拟数字转换器(Analog to Digital Converter, ADC),也称模数转换器,是将连续变化的模拟信号转换为离散的数字信号的电子器件。因为CPU只能处理数字量,所以需要把外部待测量的模拟量转换为数字量

输出量为待测量的电压、电流、温度、压力、流量、速度等物理量,这些物理量先经过传感器变换为电信号,再调制成符合ADC模块输入电压范围的电压模拟量,最后送给ADC模块转换为数字量,实时控制系统可以对该数字量进行处理

输入的模拟信号在时间上是连续的,而输出的数字信号是离散的。将连续的模拟量转换为离散的数字量通常要经过3个步骤:采样保持、量化、编码

  1. 采样是将随时间变化的模拟量转换为在时间上离散的模拟量,保持则将所采样的模拟信号值保持一段时间,以使得后续的量化编码过程中信号值不发生变化。
  2. 采样后每个脉冲的幅度仍然是连续的,必须对每个脉冲的幅度进行离散化处理。将采样保持电路输出的电平转换为量化单位的整数倍的过程称为量化。
  3. 把量化的结果用二进制表示出来叫做编码。

ADC的主要性能参数有量程、分辨率、精度、转换时间、量化误差、偏移误差等。除此之外,其他指标还有:绝对精度、相对精度、微分非线性、单调性和无错码、总谐波失真和积分非线性等等。

量程是指ADC所能转换的模拟输入电压的范围,分为单极性和双极性两种类型。

量化时需要把电平转换为量化单位的整数倍,因为模拟电压是连续的,它不一定能被量化单位整除,因而不可避免地会存在量化误差。AD分辨率越高,量化误差越小。一般是1个或0.5个最小数字量的模拟变化量,表示为1LSB或0.5LSB

分辨率(Resolution):指ADC能分辨的最小模拟输入量。从理论上来讲,n位输出的ADC能区分2n个不同等级的输入模拟电压,能区分输入电压的最小值为满量程输入的12n\frac{1}{2^n}

精度(Accuracy):精度是指对于ADC的数字输出(二进制代码),其实际需要的模拟输入值与理论上要求的模拟输入值之差。

转换时间(Conversion time):ADC完成一次AD转换所需要的时间,是指从启动ADC开始到获得相应数据所需要的时间。一般来讲,ADC的分辨率越高,转换时间就越长。

偏移误差(Offset Error):模拟量输入信号为零时,数字量输出不为零的值。

增益误差(Gain Error):满刻度输出时对应的模拟输入量与理想的模拟输入量之差。

ADC的主要类型:

  • 逐次逼近型ADC属于直接式ADC,其原理可理解为将输入模拟量逐次与UREF/2、UREF/4、UREF/8、…、UREF/2N-1作比较,模拟量大于比较值取1(并减去比较值),否则取0。逐次逼近型ADC转换精度高,速度较快,价格适中,是目前种类最多、应用最广的AD转换器

  • 积分型ADC是一种间接式ADC,其原理是将输入模拟量和基准量通过积分器积分,转换为时间,再对时间计数,计数值即为数字量。优点是转换精度高,缺点是转换时间较长。

  • 并行比较型ADC的主要原理是将参考电压分为 2N12^N-1 个等级(对于 NN 位的ADC),通过 2N12^N-1 个比较器和输入模拟电压进行比较,比较器的输出状态由触发器存储,经编码器编码,得到数字量输出。速度快,但其分辨率不高。

  • 压频变换型ADC是一种间接式ADC,其原理是将模拟量转换为频率信号,再对频率信号计数,转换为数字量。精度高,功耗较低,抗干扰能力强,便于长距离传送,但转换速度较低。

  • ∑-Δ型ADC又称为过采样型ADC,是目前分辨率最高的ADC。它主要由采样/保持电路、模拟低通滤波器、DAC及数字滤波器构成。大多数的模块都是由数字电路搭建,一些噪声对其的影响很小。

  • 流水线型ADC的原理是将多级比较网络级联在一起,每一级得到一位数字码。如果需要的是n位数字码,则需要比较n次。每次输入的信号必须从头传到尾才算完成了一次量化编码。其优点是高速、高精度,低功耗,芯片面积小,同时具有优异的动态特性。

2、C2000的ADC(12位ADC内核、量程、SOC)#

具有内置双采样保持(S/H)的12位ADC内核

ADC内核包含一个12位转换器,转换器为部分逐次逼近型、部分流水线型。转换器的模拟参考电平可以配置为外部电压基准(VREFHI/VREFLO),也可以配置为内部电压基准。

全范围模拟输入:0V 至 3.3V,或者 VREFLO 到 VREFHI

F28027有13个ADC引脚可以与外部模拟量相连,分为两组,包括 ADCINA(ADCINA7、ADCINA6、ADCINA4、ADCINA3、ADCINA2、ADCINA1、ADCINA0等7个引脚)和ADCINB(ADCINB7、ADCINB6、ADCINB4、ADCINB3、ADCINB2、ADCINB1等6个引脚)。在芯片内部,内置温度传感器占用A5输入,参考电压VREFLO占用B5输入,ADCINA5、ADCINB5和ADCINB0没有外接引脚。

ADC的工作是基于SOC控制的,SOC信号送到ADC采样决策辑模块(ADC Sample Generation Logic)进行决策,产生相应的控制信号:通道选择(CHSEL)、采样窗设置(ACQPS)和开始转换触发信号(SOC)。

每个SOC可以独立配置:转换的通道、采样窗宽度和选择开始转换的触发源。转换方式灵活:用同一个触发源对不同的通道进行采样;用不同的触发源对不同的通道进行采样;也可以用一个触发源对同一个采样通道进行多次采样的过采样。

输入电路包括通道选择和采样/保持电路。ADC模块输入的通道有16个(F28027只有13个,见概述说明),分为A组和B组,各8个。当使用外部参考电平时,电平VREFHI占用ADCINA0引脚,ADCINA0不能当作采样输入口。

采样窗的配置信号ACQPS来自采样决策模块。ADC的采样保持电路必须快速准确地跟踪被采样的信号ADCIN。AD处理总的时间等于采样时间和转换时间之和。

ADC触发源用于启动SOC配置的通道开始AD转换。每个SOC的触发源可以配置为以下任意一个事件:

  • 软件立即触发
  • ePWM 1-4的SOCA和SOCB
  • 外部中断2,GPIO XINT2
  • CPU定时器0/1/2中断
  • ADCINT1/2。用ADC转换结束中断信号作为触发事件,
  • 可以用于通道的连续转换控制。

ADC转换的结果保存在结果寄存器ADCRESULTx中。保存方式是:顺序采样时,SOCx触发的通道转换结果保存在对应的ADCRESULTx中,序号一一对应。对于同步采样,通常只用偶数的SOCx,该SOCx配置的一对通道转换后结果保存在ADCRESULTx和ADCRESULT(x+1)中,分别对应A组和B组的转换结果。

当多个SOC被同时触发时,需要通过优先级来决定哪个SOC对应的通道优先被转换。采样优先级有两种模式:Round Robin模式和具有高优先级的Round Robin模式。

  • Round Robin模式:是由SOC0~SOC15组成的一个头尾相接,方向固定的循环闭环。优先级由循环指针RRPOINTER决定。当前RRPOINTER的值表示上一次被转换的SOC,那么它的下一个SOC具有最高的优先级。ADC模块复位后,RRPOINTER=20h,表示没有SOC被转换,那么SOC0具有最高优先级。

  • 具有高优先级的Round Robin模式:该模式可以设置某些SOC具有高优先级,这些高优先级的SOC可以打断Round Robin的循环顺序,优先进行转换。多个高优先级的SOC,序号低的优先级高。

对应于16个独立的SOCx,有相应的16个采样结束信号EOCx。ADC模块有9个中断输出信号,即ADCINT1~ADCINT9。任意一个EOCx脉冲都可以配置为ADCINTx的触发源。

CH11 串行通信接口#

1、串行通信的基础知识#

MCU通信的数据是以字节为单位进行传输,其中每个字节包括多个数据位,根据数据位传输方式的不同,MCU通信可分为串行通信和并行通信。

串行通信定义:字节中的数据一位一位依次传送的通信方式,具有传输信号线少、传输距离远等优点,但传输速度慢。

并行通信定义:字节中的所有数据位同时传送的通信方式,传输速度快,但是所需传输信号线多,适用于近距离通信。

SCI串行通信仅需接收和发送两根信号线,8位并行通信则需8根信号线。这两种通信方式除了信号线外,还需一根零电位参考线

根据电平与数据对应的不同形成不同的编码方式,可分成RZ编码(Return Zero Code)、NRZ (Not Return Zero Code) 和NRZI(Not Return Zero Inverted Code)等。

在RZ编码中,正电平代表逻辑1,负电平代表逻辑0,并且每传输完一位数据信号返回到零电平

与RZ编码不同的是,NRZ编码电平不需要归零,因此只需采用高、低两种电平即可进行数据传输。

NRZI编码使用信号的翻转代表一种逻辑,信号保持不变代表另外一种逻辑,如“0”对应电平翻转,“1”电平保持不变。

数据在信号线上传输时需要满足一定的规范,才能使得通信双方正确地收发数据。通常以(frame)为单位进行数据传输。

从开始位到结束位的时间间隔称为一帧,通常一帧数据包括1位开始位、8位数据位、1到2位的停止位。

异步串行通信过程中,通信双方的发送和接收步调要一致才能保证传输数据的正确接收。因此,通过波特率(Boad Rate)来实现通信双方的步调一致,波特率是用来描述数据传输的速率。常用的波特率有600、2400、4800、9600、19200、38400、57600、115200、128000等。通信距离越长的时候通常选用越低的波特率。

在一帧数据中增加一位奇偶校验位用于错误检测。奇校验时,如果数据位1的个数是奇数,则校验位为0;如果1的个数为偶数,则校验位为1。偶校验时,如果数据位1的个数是奇数,则校验位为1;如果1的个数为偶数,则校验位为0。

串行通信根据接线的不同,有单工、半双工、全双工三种传输方式。

  • 单工通信:数据传输是单向的,除了地线外,只有一根数据线。
  • 半双工通信:数据传输是双向的,但是只有一根数据线,发送和接收不能同时进行。
  • 全双工通信:数据传输是双向的,有两根独立的数据线,发送和接收可以同时进行。

2、C2000的SCI(波特率、数据帧)#

SCI的波特率由时钟LSPCLK和波特率配置寄存器控制。LSPCLK由系统时钟模块的低速外设时钟预分频寄存器配置,波特率选择寄存器为16位寄存器,有65536种不同的波特率选择。

假设16位波特率配置寄存器配置值为BRR,则对应的波特率计算方法为:

Baud=LSPCLK(BRR+1)8,1BRR65535Baud=\frac{LSPCLK}{(BRR+1)*8}, 1≤BRR≤65535 Baud=LSPCLK16,BRR=0Baud=\frac{LSPCLK}{16}, BRR=0

帧格式配置:

  • 1位开始位;
  • 1-8位数据位;
  • 1位地址和数据的识别位(针对地址位方式的多机模式)
  • 1位可选的奇偶校验位
  • 1或2位停止位

需要学会画出帧的波形表示。

CH12 实验#

总共 4 次实验,代码运行结果需要给老师测试。实验代码可以参考文字辅导材料、视频教程(CCS软件开发---F28027)和 AI。由于是小组形式,因此可以组内外私下交流。老师一般不会要求你解释代码功能,只会让你向他展示运行结果。

建议早测试早结束。大部分人都是将测试积压到后面的课时,导致组内和组间需要竞争测试机会——一次课只有一个半小时,还不算理论教授时间。最极端的情况下,你可能需要和老师单独约定时间测试。

注意基础配置:什么文件在哪个文件夹,各类初始化在哪个文件。在考试中需要回忆得起来,因为有程序填空题。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

福州大学单片机原理与应用(跨学科)复习
https://blog.watermelonabc.top/p/3c5ed94a/
作者
Watermelonabc
发布于
2026-06-22
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
Watermelonabc
追寻各色世界
🎉 抓到你啦
欢迎来到 Watermelonabc 的 Blog!这个博客主要是技术向的内容,现在也有生活元素了 OwO
分类
1
CH1 嵌入式系统概述
1、嵌入式系统的定义
2、嵌入式系统和通用计算机系统的比较(共同点和不同点)、嵌入式系统的特点
3、嵌入式系统的架构:冯・诺依曼结构和哈佛结构
4、嵌入式系统处理器:MPU、MCU、DSP、SoC
5、MCU的基本组成:CPU、时钟、存储器、通用I/O、定时器/计数器、外设等
6、CPU功能
7、总线BUS:地址总线、数据总线、控制总线
2
CH2 C2000 系列微控制器及硬件平台
1、F28027主要资源
2、引脚。功能复用、引脚有效符号等
3、MCU硬件功能概述
4、内存映射(数据空间/地址空间,空间大小与地址的转换)
5、时钟信号SYSCLKOUT
6、看门狗电路(本质是定时器,“喂狗”:0x55AA)
7、片内上电复位/欠电压复位
3
CH3 微控制器程序设计基础
1、编程语言
2、CPU执行指令5个过程:取指令、指令译码、取操作数、执行指令、结果写回
3、嵌入式C语言:几个特殊保留字(volatile、interrupt)
4
CH4 软件架构与CCS集成开发环境
1、如何使用结构体指针操作寄存器
2、寄存器位操作
3、软件架构
5
CH5 通用输入输出口
1、GPIO基础知识
2、C2000的GPIO模块(概述、软件架构)
3、软件思维导图:配置GPIO控制LED和按键
6
CH6 中断系统
1、中断基础知识(中断概念、中断处理过程、中断嵌套)
2、C2000的中断系统
3、PIE三级中断管理机制
7
CH7 CPU定时器
1、定时器基础知识(本质是计数器、计数方式、定时时间计算)
2、C2000的定时器(3个定时器、时钟基准SYSCLKOUT、减计数方式、预分频、周期、定时时间计算)
8
CH8 增强型捕获模块
1、捕获模块基础知识
2、计数器工作模式:增计数
3、C2000的eCAP(概述、功能(预分频、边沿极性、连续/单次模式、事件决策、捕获寄存器、中断控制)
9
CH9 增强型脉宽调制模块
1、PWM基础知识
2、C2000的ePWM(TB子模块、CC子模块、AQ子模块、ET子模块)
3、软件思维导图
10
CH10 模/数转换器
1、ADC基础知识
2、C2000的ADC(12位ADC内核、量程、SOC)
11
CH11 串行通信接口
1、串行通信的基础知识
2、C2000的SCI(波特率、数据帧)
12
CH12 实验
文章目录
1
CH1 嵌入式系统概述
1、嵌入式系统的定义
2、嵌入式系统和通用计算机系统的比较(共同点和不同点)、嵌入式系统的特点
3、嵌入式系统的架构:冯・诺依曼结构和哈佛结构
4、嵌入式系统处理器:MPU、MCU、DSP、SoC
5、MCU的基本组成:CPU、时钟、存储器、通用I/O、定时器/计数器、外设等
6、CPU功能
7、总线BUS:地址总线、数据总线、控制总线
2
CH2 C2000 系列微控制器及硬件平台
1、F28027主要资源
2、引脚。功能复用、引脚有效符号等
3、MCU硬件功能概述
4、内存映射(数据空间/地址空间,空间大小与地址的转换)
5、时钟信号SYSCLKOUT
6、看门狗电路(本质是定时器,“喂狗”:0x55AA)
7、片内上电复位/欠电压复位
3
CH3 微控制器程序设计基础
1、编程语言
2、CPU执行指令5个过程:取指令、指令译码、取操作数、执行指令、结果写回
3、嵌入式C语言:几个特殊保留字(volatile、interrupt)
4
CH4 软件架构与CCS集成开发环境
1、如何使用结构体指针操作寄存器
2、寄存器位操作
3、软件架构
5
CH5 通用输入输出口
1、GPIO基础知识
2、C2000的GPIO模块(概述、软件架构)
3、软件思维导图:配置GPIO控制LED和按键
6
CH6 中断系统
1、中断基础知识(中断概念、中断处理过程、中断嵌套)
2、C2000的中断系统
3、PIE三级中断管理机制
7
CH7 CPU定时器
1、定时器基础知识(本质是计数器、计数方式、定时时间计算)
2、C2000的定时器(3个定时器、时钟基准SYSCLKOUT、减计数方式、预分频、周期、定时时间计算)
8
CH8 增强型捕获模块
1、捕获模块基础知识
2、计数器工作模式:增计数
3、C2000的eCAP(概述、功能(预分频、边沿极性、连续/单次模式、事件决策、捕获寄存器、中断控制)
9
CH9 增强型脉宽调制模块
1、PWM基础知识
2、C2000的ePWM(TB子模块、CC子模块、AQ子模块、ET子模块)
3、软件思维导图
10
CH10 模/数转换器
1、ADC基础知识
2、C2000的ADC(12位ADC内核、量程、SOC)
11
CH11 串行通信接口
1、串行通信的基础知识
2、C2000的SCI(波特率、数据帧)
12
CH12 实验