1. 首页
  2. 文档大全

DSP原理与开发

上传者:7****0 2022-06-07 08:51:25上传 PPT文件 4.93MB
DSP原理与开发_第1页 DSP原理与开发_第2页 DSP原理与开发_第3页

《DSP原理与开发》由会员分享,可在线阅读,更多相关《DSP原理与开发(63页珍藏版)》请在文档大全上搜索。

1、 DSPF2812原理与开发 TMS320C2000系列是美国TI公司推出的最佳测控应用的定点DSP芯片,其主流产品分为四个系列:C20 x、C24x、C27x和C28x。C20 x可用于通信设备、数字相机、嵌入式家电设备等;C24x主要用于数字马达控制、电机控制、工业自动化、电力转换系统等。近年来,TI公司又推出了具有更高性能的改进型C27x和C28x系列芯片,进一步增强了芯片的接口能力和嵌入功能,从而拓宽了数字信号处理器的应用领域。 TMS320C28x系列是TI公司最新推出的DSP芯片,是目前国际市场上最先进、功能最强大的32位定点DSP芯片。它既具有数字信号处理能力,又具有强大的事件管

2、理能力和嵌入式控制功能,特别适用于有大批量数据处理的测控场合,如工业自动化控制、电力电子技术应用、智能化仪器仪表及电机、马达伺服控制系统等C28x系列芯片的功能框图DSP F2812数字信号处理器介绍TMS320X28XX系列DSPl高性能静态CMOS技术:150MHz,低功耗(核电压1.8V,I/O口电压3.3V)。l兼容性好:C28x系列向下兼容C24X系列DSP程序。l片内集成大容量存储器:最多128K字的Flash存储器、1K字的OTP型ROM、18K字RAM。l两个事件管理器EVA、EVB。每个包含2个16位通用定时器、8个PWM(脉宽调制信号)输出通道、3个捕获单元、QEP(正交编

3、码脉冲)接口电路。l12位ADCl3个通用定时器TIMER0/1/2l8到16位可编程的SCI(Serial Communication Interface异步串口)l16位SPI(Serial Peripheral Interface串行外设接口)l多通道缓冲串行口(McBSP)l增强型CAN控制器l最多56个通用I/O(出入输出接口)F2812外设介绍1、事件管理器 在2812上有两个事件管理器,EVA和EVB,是数字电机控制应用的使用到的非常重要的外设,能够实现机电设备控制的多种必要功能,每个事件管理器包括:定时器、比较器、捕捉单元、PWM逻辑电路、正交编码脉冲电路以及中断逻辑电路等。2

4、、模数转换模块 2812上的ADC模块将外部的模拟信号转换成数字量,ADC模块可以将控制信号进行滤波或者实现运动控制系统的闭环控制,尤其在电机控制系统中,采用ADC模块采集电机的电流或者电压实现电流环、电压环的闭环控制。3、SPI和SCI通信接口 SPI是一个高速同步串行通信接口,能够实现DSP与外部设备或另一个DSP之间的串行通信。SCI属于异步通信接口,支持标准的UART异步通信模式,可以通过SCI串口与CPU或者其他的一般外设进行通信。4、CAN总线通信模块 F2812上的CAN总线是增强型的eCAN接口,支持完整的CAN2.0协议,有32个可以配置的收/发邮箱,支持消息定时功能,而且抗

5、干扰性强,最高通信速率可达到1Mbps,通过该接口可以构建可靠地CAN总线控制或检测系统。5、看门狗 当我们进行软件编程时经常会遇到看门狗复位。看门狗主要用来检测软件和硬件的运行状态,当内部计数器一处使将产生一个复位信号。为了比便不必要的复位,用户需定期的对看门狗定时器进行复位。如果不明原因使CPU得程序中断,看门狗将产生一个复位信号。最常见的就是系统软件进入了一个死循环或者CPU的程序运行到了不确定的的程序空间,从而使系统不能正常工作,这种情况先看门狗自动复位,能够有效的提高系统的可靠性6、通用数字引脚I/O口 F2812引脚中的一部分可以作为特殊功能引脚或普通的GPIO引脚,具体选择何种功

6、能通过对相应控制寄存器的设置实现。7、PLL时钟模块 PLL(锁相环)主要用于控制DSP内核的工作频率,外部提供一个参考时钟输入,经过锁相环倍频或者分频后提供给DSP内核。8、外部中断接口 F2812数字信号处理器支持多种外设中断,外设中断扩展模块最多支持96个独立的中断。这些中断分成8组,每组12个中断源。根据中断向量表来确定产生的中断的类型。CPU将自动获取中断向量,在响应中断时,CPU需要在9个系统时钟地时间段内完成中断向量的取或运算和重要CPU寄存器的保护。当我们在时间敏感程序的设计时需要将由该中断响应延时所需要的9个系统时钟考虑进去。9、存储器及其接口 2812采用统一编址方式,芯片

7、内部提供18KB的SARAM和128KB的Flash存储器。芯片同时提供外部存储器扩展接口,外部最高可达1MB的寻址空间。对于存储器的使用我们将在.CMD文件的编写是做详细的介绍。第二章 如何开始DSP的学习与开发2.1 DSP的基本知识2.2 DSP与MCU、ARM、FPGA的区别2.3 学习开发DSP需要的知识2.4 如何选择DSP2.5 DSP开发所需要的准备工具以及开发平台的搭建 2.1DSP的基础知识DSP最早的时候是由TI公司设计用来在玩具上的一款芯片,经过20-30年的发展,如今DSP已经成为我们数字化信息时代的一种主控芯片,被广泛应用到各个领域里面,例如通信,我们的手机里面很多

8、是使用DSP做主控芯片的,另外家电中的变频空调、冰箱等都是用DSP做主控芯片。但是目前国内还没有能力来设计和生产DSP芯片。DSP还被应用到航空航天,工业的测量、控制,生物医学工程以及军事等很多领域。DSP具有两层含义;一个是数字信号处理技术,另外一个就是数字信号处理器,以往大家接触到的多是偏于理论的,在本课程中我们为大家讲述的主要是数字信号处理器,更具体一点是TI公司生产的TMS320F2812这一款芯片的使用,如何将数字信号处理技术应用到数字信号处理器当中。 2.2 DSP与MCU、ARM、FPGA的区别DSP的特点;采用哈佛结构,程序空间与数据空间是分开的,使得CPU能够同时访问指令和数

9、据,从这一点来看可以发现DSP比单片机等采用冯诺依曼结构的MCU先进很多。但单片机价格很低。 TI公司的C2000系列DSP的价格相对来说也比较便宜,性价比高,除了强大的数据处理能力以外在控制领域应用也很广泛。ARM是一个面向低预算市场的微处理器,具有比较强的事物管理功能,适合用来做操作系统,主要的有事体现在控制方面。FPGA是现场可编程门阵列的缩写,内部含有含有大量的逻辑单元阵列,用户可以通过对FPGA内部的逻辑模块和IO模块进行重新配置,来实现用户自己的功能,使用FPGA可以大大缩短数字电路的设计时间,但FPGA的价格非常贵。2.3 学习开发DSP需要的知识主要分为软件和硬件两部分 对于软

10、件部分而言,在dsp的开发过程中主要是采用C语言编写的,在一些对于时间要求比较严格的情况下可能会采用汇编语言,有了C 语言的基础我们就可以学习DSP的开发。 硬件部分:我们所接触到的硬件的基本原理都是相通的,如果大家有了单片机的基础学习DSP还是比较简单的。2.4 DSP芯片的选择 DSP的选型是主要考虑的是处理速度、功耗(功耗越小越好)、存储空间(又分为程序存储空间和数据存储空间)、片内资源(比如片内定时器、IO口、DMA通道数,中断的数量)(1)系统特点每种DSP都有自己比较适合的应用领域。以TI公司的DSP为例,C2000系列处理器提供多种控制系统使用的外围设备,比较适合控制领域;C50

11、00系列处理速度快、功耗低、相对成本低廉等特点,主要用于便携设备及消费类电子设备使用;C6000系列预算速度快,精度高,更适合图像处理、通信设备领域。因此在系统设计是首先要根据系统特点进行处理器的选择。(2)算法格式DSP分为定点和浮点两类。数字信号处理算法有多种,不同系统、不同算法对算法格式和处理进精度要求不同,浮点运算可以实现大的动态数据范围。采用浮点DSP设计系统时,一般不需要考虑处理的动态范围和精度,更适合高级语言编写,但成本和功耗较高。可以通过算法模拟确定动态范围和精度,确定选用的DSP类型。(3)处理速度处理速度是选择DSP时最重要的考虑因素,与时钟的频率有密切关系。(4)功耗(5

12、)性价比。 TI公司目前主推的DSP有C2000、C5000、C6000、达芬奇、OMAP等几个系列 C2000主要用于数字控制和运动控制,常用的有24系列和28 系列。其中2406、2407、2802、2812是定点的芯片,28335是浮点的芯片。本教程主要来讲2812。C2000些列主要用于控制领域,他的一个主要特点是有大量的外设资源,比如说有AD、定时器、各种串口(包括同步的和异步的)、看门狗、CAN总线和PWM发生器,只有C2000系列的DSP里面才有FLASH和异步通信串口(能够和PC机连接进行通信)。C5000主要面向低功耗的首次设备无线终端,主频可达到80M-400M之间。用的比

13、较多的是C55系列和C54系列。当前来说C5000些列应用的比较少。 C6000主要面向高端的宽带网络、数字图像处理。C6000系列的只提供BGA封装的,也只能够用于多层的PCB板。用的比较多的是C64XX和C67XX。 达芬奇系列用的比较多的是安全监控领域。用得较多的比如DM642。 OMAP系列实际上是在DSP的基础上增加了一个RAM核,是一个双核的处理器。继承了RAM的命令和控制功能,加上DSP的实时信号处理能力使得比较适合用于移动上网设备和多媒体家电当中。DSP芯片的具体含义芯片上会写有TMS320F2812PGFA,这些数值具体代表了那些含义TMS:代表的是合格产品,除此之外还有TM

14、X(试验产品)和TMP(模型产品),目前市场上能够买到的都是TMS系列。320是TI公司的一个DSP产品系列,除此之外还有430(单片机的一个系列)和470(RAM的一个产品系列)。F指的是内部的存储器是FLASH,除此之外还有C(内部的存储器是ROM)。2812是产品的系列。PGF是指芯片的封装是176引脚。除此之外还有PBK(128引脚)GHH(179个引脚)。A代表温度的范围指的是-45到85 。还有S级是-45到125之间。 除此之外芯片上的字符表示的是芯片的产地批次等信息。2.5 DSP开发用到的工具主要分为硬件和软件两部分软件主要是TI提供的CCS。CCS版本主要有2.2版,3.1

15、版和3.3版,最新的已经出到了4.0版。用的最多的还是CCS3.3。CCS软件的安装比较简单,网络上可以很容易下载到,需要注意的是安装时,安装路径不能含有中文字符。否则在打开我们自己建立的工程时会产生错误。硬件主要是指仿真器和DSP的版子。仿真器就是一个桥梁将CCS与DSP连接起来,能够把DSP内部的寄存器的数据传到CCS,主要是仿真和调试的功能。当仿真调试完成以后,将程序固化到DSP也需要仿真器。平时使用时仿真器和DSP版通过JATGA接口连接。仿真器通过USB口连接到计算机。以前有使用并口实现仿真器与计算机的连接,但由于现在笔记本上已经将并口取消,而且USB传输速度比较快,并口基本上已经被

16、USB取代。 嵌入式系统通常使用两种语言,一种汇编语言,一种是C语言。F2812的开发及支持汇编语言也支持C语言。绝大多数情况下是使用C语言开发,只有在对时间要求非常严格的情况下才会插入汇编,使用汇编与C混合编程的方法进行编程。第三章 F2812片内资源、存储器映射v3.1 F2812的片内资源v3.2 F2812的存储器映像3.1 F2812的片内资源 vTMS320F2812采用了高性能的静态CMOS技术,时钟频率可达150MHZ(6.67ns),其核心电压为1.8V,I/O口电压3.3V,Flash编程电压也为3.3V,所以我们在设计2812电源部分的时候,需要将常用的5V电压转换成1.

17、8V和3.3V的电压之后,才能供给2812。v我们首先需要知道2812的存储器空间被分成了2块,一块是程序空间,一块是数据空间,而无论是那一块的内容,我们都需要借助于两种总线来进行传送相关的内容地址总线和数据总线,用地址总线来传送存储单元的地址,而用数据总线来传送存储单元内的内容。2812的存储器接口具有3条地址总线和3条数据总线,片内集成了RAM、ROM和FLASH,具体的存储器资源如下表所示存储器名称存储器容量存储器名称存储器容量FLASH 128K*16位 M0(SRAM) 1K*16位 H0(SRAM) 8K*16位 M1(SRAM) 1K*16位 L0(SRAM) 4K*16位 Bo

18、ot ROM 4K*16位 L1(SRAM) 4K*16位 OTP(一次性可编程程序空间) 1K*16位 3.2 F2812的存储器映像 存储器映像也就是存储器的地图,给存储器单元划分地址,我们可以根据这些地址找到相应的存储器,才可以将指令或数据放到相应的存储单元里面去。可以给每一个存储单元分配地址,相临的存储单元地址加1。F2812的存储器是统一编址的,使用连续的地址范围从0 x0000000 x3fffff。把所有的存储器(包括外扩的片外存储器)都放到这个线性的地址空间里面,每一个存储单元的地址都是唯一的。F2812的存储器映射如图 v外设帧0、1、2这三个空间只能为数据空间,而且这三块用

19、来存储2812所有的外设寄存器。外设帧1、2为protected类型。也就是说这些空间里面的外设寄存器不能随便进行配置。在改变这些寄存器的值时需要“EALLOW”和“EDIS”。v地址0 x0020000 x006000到的片内存储器被保留,用户不能使用,一部分的地址用来为外部扩展存储器第0区和第1区的地址范围。第0区大小为8K地址范围0 x0020000 x004000,第1区大小也是8K,地址范围是0 x0040000 x006000,而且第0区和第1区使用一个公用的片选信号XZCS0ANDCS1。第1区也是protected类型,受到EALLOW和EDIS保护。外部存储区的第2区和第6区

20、最大都可外扩512K的空间。其中第2区的地址范围是0 x0800000 x100000,第6区的地址范围是0 x1000000 x180000。vOTP也就是一次可编程空间,当数据写到其中之后,里面的内容无法再改变。地址范围是0 x3D78000 x3D7C00,其中的1K空间已经有TI公司留作系统测试所用,剩下的1K空间可供用户使用。一般不使用该区域,如果使用即可做程序存储区也可作为数据存储区,同时该模块中的内容也受到代码安全模块(CSM)的保护。大小为2K *16位空间。之后的区域为F2812的128K FLASH空间。FLASH空间的0 x3FFF80 x3F8000的部分一共为8 x

21、16K,共128位。这128位用作FLASH的密码取,用来保护FLASH中的内容。这128位密码还可以保护L0、L1区域,因为L0、L1也是Security Block,受到密钥的保护。v接下来的8K 16位空间为H0空间,最后为Boot Rom和外扩第7区的空间。地址范围0 x3FF0000 x3FFFC0同时对应这两个空间。由于每个地址只能对应一个唯一的存储空间,也就是这两个区域同时只能使用一个区域。这取决于MP/MC引脚的状态。如果引脚MP/MC接地,MP/MC的值时0的话,那么我们使用的是片内的Boot Rom空间,也就是说程序是从片内存储区启动的。如果说MP/MC这个引脚接的是3.3

22、V的高电平,那么它的值是1,使用的是外接的第7区,程序是从外扩的第7区启动的。当MP/MC这个引脚接地时,CPU处在微计算机模式下;当MP/MC这个引脚接高电平时,CPU处在微处理器模式下。我们通常让CPU运行在微计算机模式下。vBoot Rom区域也称为引导Rom,实现DSP的Boot Leader功能,这一部分空间里主要安装TI产品的版本号、发布的数据、校验求和信息、复位矢量、CPU矢量以及一些数学表格。厂家在芯片出厂时已经在Boot Rom的0 x3FFC000 x3FFFBF这一段装有TI的引导装载程序。当DSP被设置为微计算机模式时,CPU在复位后就会执行这段程序,然后完成Boot

23、Leader功能。平时使用时,当CCS通过仿真器与DSP建立连接后会弹出一个代码段,其中的内容可以看到程序的指针指在了0 x3FFC00地址上。第四章 F2812的振荡器、锁相环PLL和时钟机制v4.1DSP的锁相环、振荡器v4.2 DSP内部时钟信号的产生F2812的振荡器、锁相环PLL和时钟机制v为了让2812执行相应的代码,除了给DSP提供电源以外,与其他的控制芯片都一样,都需要一个类似于心脏的模块来提供其正常运行的动力和节奏。CPU提供有规律的时钟脉冲,这一部分功能主要有2812内部的振荡器(OSC)和锁相环(PLL)模块来实现。v 在后续的课程中,我们会涉及到2812内部大量的寄存器

24、单元,由于寄存器的内容和各个位的定义都是固定的,在我们的课程中将不会对寄存器做详细的介绍,请大家各自参考手中的书籍,查询相关寄存器的内容。v 为了能够让F2812按部就班的执行相应的代码,实现功能,我们得让F2812“活“起来,得向它不断的提供规律的时钟脉冲,这一功能就由F2812内部的振荡器OSC和基于PLL的时钟模块来实现了。让我们一起来看下面的图: 4.1 F2812的振荡器、锁相环PLL和时钟机制 从图中可以看到30M的外部晶振通过X1、X2两个引脚输入到片内振荡器以后,然后产生OSCCLK的信号,然后通过PLL模块变成CLKIN,然后这个信号被送到CPUv如图所示,2812基于PLL

25、的时钟模块可以采用两种模式,一种是PLL未被禁止的情况下(旁路或使能),使用外部晶振给2812提供时钟信号,使用X1/CLKIN引脚和X2引脚;另外一种PLL被禁止的情况下,旁路片内振荡器,由外部时钟源提供时钟信号,即将外部振荡器的信号输入到X1/XCLKN引脚,此时X2引脚不使用。通常情况下,我们都是采用前面的方式,由外部晶振通过片内OSC来产生时钟信号。 4.2 各种时钟信号的产生 2812内部出了CPU以外还有很多的外设,为了是这些时钟正常的工作我们也得给这些外设提供时钟信号,下面我们就看一下2812内部各种时钟信号是怎样产生的 。外部晶振的信号经过振荡器和PLL锁相环模块以后产生了一个

26、CLKIN时钟信号输入给CPU,然后CPU产生SYSCLKOUT信号分发到各个外设,这里的SYSCLKOUT实际上就等于CLKIN。从这幅图上可以看出系统时钟通过系统控制寄存器来使能或者禁止相应外设的时钟,为了降低系统的功耗,一般只使能所使用到的外设时钟。SYSCLKOUT经过低速预定标器产生低速时钟LSPCLK,这个时钟提供给低速的外设,比如串口SCI、SPI等。SYSCLKOUT经过高速预定标器产生低速时钟HSPCLK, 提供给运行速度比较快的外设。无论是低速时钟还是高速时钟在供给外设的时候每个外设也都哟哟一个时钟预定表器,对LSPCLK或者HSPCLK在进行一次分频,然后在提供给外设使用

27、。 这就是2812产生内部时钟的一个基本机制。第五章 2812的中断系统5.1 什么是中断5.2 2812的外设级中断5.3 2812的PIE级中断5.4 2812的CPU中断5.5 2812三级中断处理机制5.1什么是中断?什么是中断?中断(Interrupt)是硬件和软件驱动事件,它使得CPU暂停当前的主程序,并转而去执行一个中断服务程序。我们以办公时接电话为例来阐述一下中断的概念,通过这个例子大家也可以体会一下CPU执行中断时候的一些流程的原理。中断理解假如您正在办公桌前专心致志的写程序,突然电话铃响了(很显然,电话是不可错过的,相比手中的活而言肯定是更加重要和紧急的,电话事件相当于产生

28、了一个中断请求,因为某种需要不得不请求您打断手中正在做的事情),您拿起了电话进行交谈(您响应了电话的请求,相当于CPU响应了一个中断,停下了正在执行的主程序,并转向执行中断服务程序)。电话很快就讲完了,您挂上了电话,又接着刚才停下来的地方开始写程序了(中断服务子程序执行完成之后,CPU又回到了刚才停下来的地方开始执行)。 当然,CPU执行中断的时候肯定要比上面的例子复杂的多,但是通过这个简单的生活实例,我想大家应该能比较感性的理解什么是中断,以及中断产生时CPU是如何去执行的一些步骤。 如下面的图1所示,2812的CPU能够支持一个不可屏蔽中断NMI和16个可屏蔽的中断INT1-INT14、R

29、TOSINT和DLOGINT,我们主要讨论的是可屏蔽中断中的INT1-INT12,这也是我们平时使用时经常要用到的中断 PIE可以支持96个不同的中断,这些中断分成了12个组,每个组有8个中断,而且每个组都被反馈到CPU内核的12条中断线中的某一条上(INT1-INT12),我们平时用到的所有的外设中断都被归入了这96个中断中,被分布在不同的组里,这里其实也是用到了多路复用的原理。值得一提的是,PIE目前只使用了96个终端中的45个,其他的等待将来的功能扩展。 v2812内部具有很多外设,每个外设又可以产生一个或者多个中断请求,对于2812的CPU而言,它没有足够的能力去同时处理所有外设的中断

30、请求。这就好比一个公司,每天会有很多员工向老总提交文件,请求老总处理,老总一般事务繁忙,他一个人没有能力同时去处理所有的事情,那怎么办呢?一般老总都会配有秘书,由秘书们将内部员工或者公司外部人员提交的事情进行分类筛选,然后再提交到老总那处理,这样效率就提高上来了,老总也能忙的过来了。v同样的,2812的CPU为了能够及时有效的处理好各个外设的中断请求,特别设计了一个专门处理外设中断的扩展模块(the Peripheral Interrupt Expansion block),叫做外设中断控制器PIE,它能够对各种中断请求源(例如来自于外设或者其他外部引脚的请求)做出判断以及相应的决策。 上图所

31、示的就是2812的PIE内部的中断分布图,8列12行,总共有96个中断,黄色部分表示已经使用的中断,有兴趣的话数数是不是刚好45个。来看看事件管理器EVA中定时器T1的周期中断T1PINT在图中的哪里?我们可以看到T1PINT在行号为INT2,列号为INTx.4的位置,也就是说T1INT对应于INT2,是INT2中的第四个中断。这样,我们就可以找到所有外设中断的所属分组情况以及在改组中的位置。 5.2外设级中断外设级中断v假如在程序的执行过程中,某一个外设产生了一个中断事件,那么在这个外设的某个寄存器中与该中断事件相关的中断标志位(IF=Interrupt Flag)被置为1。此时,如果该中断

32、相应的中断使能位(IE=Interrupt Flag)已经被置位,也就是为1,外设就会向PIE控制器发出一个中断请求。相反的,如果虽然中断事件产生了,相应的中断标志位也被置1了,但是该中断没有被使能(相应的使能位为0),那么外设就不会向PIE发出中断请求,但是值得一提的是,相应的中断标志位会一直保持置位状态,直到用程序清楚它为止。当然,在中断标志位保持在1的时候,一旦该中断被使能了,那么外设立马会向PIE发出中断申请。 v我们用具体的T1PINT来进行进一步的说明。当定时器T1的计数器寄存器T1CNT计数到和T1周期寄存器T1PINT的值匹配时(相等时),就产生了一个T1PINT事件,即T1的

33、周期中断。这时候,事件管理器EVA的中断标志寄存器A(EVAIFRA)中的第7位T1PINT FLAG被置为1,这时候如果EVA的中断屏蔽寄存器A(EVAIMRA)中的第7位T1PINT的使能位是1,则EVA就会向PIE发出中断请求,当然,如果该位的值是0,也就是该中断未被使能(被屏蔽),则EVA不会向PIE发出中断请求,而且EVAIFRA中T1PINT FLAG位将一直保持为1,除非通过程序将其清除。需要注意的是,不管在什么情况下,外设寄存器中的中断标志位都必须手工清除。 5.3 PIE级中断 当外设产生中断事件,相关中断标志位置位,中断使能位使能之后,外设就会把中断请求提交给我们的PIE模

34、块。在前面我们已经讲到,PIE模块将96个外设和外部引脚的中断进行了分组,每8个中断为1组,一共是12组,分别是PIE1-PIE12。每个组的中断被多路汇集进入1个CPU中断,例如PDPINDA, PDPINDB, XINT1, XINT2, ADCINT,TINT0,WAKEINT这7个中断都在PIE1组内,这些中断都汇集到CPU中断的INT1,同样的,PIE2的中断都被汇集到CPU中断的INT2,INT12组的中断都被汇集到了CPU中端的INT12。 总结一下,在PIE级需要我们手动的地方有: vPIE中断的使能。需要使能某个外设中断,就得将其相应组的使能寄存器PIEIERx的相应位进行置

35、位; vPIE中断的屏蔽。这是和使能相反的操作; vPIE应答寄存器PIEACK相关位的清除,以使得CPU能够响应同组的其他中断。 v将PIE级的中断和外设级的中断相比较之后发现,外设中断的中断标志位是需要手工清除的,而PIE级的中断标志位都是自动置位或者清除的。但是PIE多了一个PIEACK寄存器,相当于一个同行的关卡,同一时间只能放一个中断过去,只有等到这个中断被响应,给关卡一个放行命令之后,才能让同组的下一个中断过去,被CPU响应。 5.4 CPU级和前面两级类似的,CPU也有标志寄存器IFR和使能寄存器IER。当某一个外设中断请求通过PIE发送到CPU时,CPU级中与INTx相关的中断

36、标志位就会被置位。例如,T1的周期中断T1PINT的请求到达CPU这边时,与其相关的INT2的标志位就会被置位。这时候,该标志位就会被所存在IFR中,这时候,CPU不会马上去执行相应的中断,而是等待CPU使能IER寄存器的相关位,并且对CPU寄存器ST1中的全局中断屏蔽位做适当的使能。如果IER中的相关位被置位了,并且INTM的值为0,则中断就会被CPU响应。在T1PINT的例子里,当IER的第2位即INT2被置位,INTM为0,则CPU就会响应定时器T1的周期中断。 CPU接到了终端的请求,就得暂停正在执行的程序,转而去响应中断程序,但是此时,它必须得做一些准备工作,以便于执行完中断程序之后

37、回过头来还能找到原来的地方和原来的状态。CPU会将相应的IER和IFR位进行清除,EALLOW也被清除,INTM被置位,就是不能响应其他中断了,CPU向其他中断发出了通知,正在忙,没空来处理你们的请求了,得等到处理完手上的中断之后才能再来处理你们的请求。然后,CPU会存储返回地址并自动保存相关的信息,例如将正在处理的数据放入堆栈等等,做好这些准备工作之后,CPU会从PIE块中取出对应的中断向量ISR,从而转去执行中断子程序。 我们可以看到,CPU级的操作都是自动的,不管是中断标志位,还是中断的使能位。下面的图能够更好的帮助我们理解2812的3级中断。大家可以结合这个图反复自己的琢磨一下。 下面

38、我们就详细讲述2812内部外设中断的执行机制及其具体的处理过程。 如图所示,2812的中断是3级中断机制,分别是外设级,PIE级以及CPU级,对于某一个具体的外设中断请求,任意一级的不许可,CPU最终都不会执行该外设中断。就像一个文件需要三级领导批示一样,任意一级领导的不同意,都不能被送至上一级领导,更不可能得到最终的批准,中断机制的原理也是如此。5.5 2812三级中断处理机制第六章 事件管理器EVA/EVB6.1 事件管理器的功能6.2 通用定时器6.3 比较单元与PWM电路6.4 时间管理器产生PWM的机制6.1 2812的事件管理器 2812具有两个事件管理器模块EVA和EVB,这两个

39、EV模块就像孪生兄弟一样,具有相同的功能,例如它们的定时器、比较单元、捕捉单元的功能都是完全一样的,只是各个单元的名称因为EVA和EVB有所区别而已,我们在下面的分析中主要以EVA为例。 v简单来讲的话,每个EV模块都具有2个通用定时器、3个比较单元、3个捕获单元以及1个正交编码电路,我们重点来讲定时器和比较单元部分的内容。EVA和EVB的资源详见上面的表格所示,表格中蓝色的字表示该信号是低电平有效。v 通用定时器就像秒表一样,是可以用来计时的,而且每个定时器还能产生1路独立的PWM波形;比较单元主要功能就是用来生成PWM波形的,EVA具有3个比较单元,每个单元可以生成一对(两路)互补的PWM

40、波形,生成的6路PWM波形正好可以驱动一个三相桥电路。v捕获单元的功能是捕捉外部输入脉冲波形的上升沿或者下降沿,可以统计脉冲的间隔,也可以统计脉冲的个数。正交编码电路的话应该用的比较少,它可以对输入的正交脉冲进行编码和计数,它和光电编码器相连可以获得旋转机械部件的位置和速率等信息。 6.2通用定时器通用定时器 v下面我们将和大家一起探讨通用定时器相关的内容,主要围绕EVA下面的定时器1,也就是T1进行讨论。v T1PR是定时器T1的周期寄存器,用于存放为T1设置的周期值。T1CMPR是定时器T1的比较寄存器,用于存放为T1设置的比较值。而T1CNT为T1的计数器寄存器,其内容是随着时钟脉冲不断

41、增加或者减少的,每1个HSPCLK的脉冲,T1CNT的值增加1或者减少1。vT1PR和T1CMPR在一般情况下是在初始化的时候进行赋值,然后就成为了一个参考标准,CPU会实时的将T1CNT的值和这两个标准进行比较,当T1CNT的值和T1PR相等时,T1CNT就会复位成0重新开始计数或者逐渐减少直至0,完成1个周期的计数,然后再从0开始计数至T1PR里面的数值,这样循环下去。当T1CNT的值和T1CMPR的值相等时,就会产生一些比较事件,例如PWM波形就是依靠这个原理来实现的。6.3PWM与比较单元与比较单元脉宽调制,简称PWM(Pulse Width Modulation)是利用微处理器的数字

42、输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中,简单的描述就是一些如下图所示的矩形脉冲波形,PWM波形最重要的三个参数是周期、频率和占空比。 EV的比较机制能够产生多路PWM功能。EVA的两个通用定时器能够产生2路独立的PWM波形T1PWM和T2PWM,三个比较单元每一个都能产生一对互补的PWM波形,比较单元1产生PWM1和PWM2,比较单元2产生PWM3和PWM4,比较单元3产生PWM5和PWM6。这样,EVA一共能产生8路PWM波形。EVB和EVA一样,同样能够产生8路PWM波形。6.4 EV产生PWM的机制v首先来介绍通用定时器产生的PW

43、M波。我们已经知道T1和T2分别能够产生1路独立的PWM,我们以T1为例进行介绍。当T1计数寄存器T1CNT的值和T1CMPR的值相等时,就会发生比较匹配事件,这时如果PWM的功能使能,则T1PWM引脚便可以输出PWM波形。vT1能够产生两种类型的PWM,一种是不对称的PWM波形,一种是对称的PWM波形,究竟产生哪种类型的PWM波形取决于T1CNT的计数方式。 6.4.1当T1CNT的计数方式为连续增计数时,T1PWM引脚输出不对称的PWM波形v当定时器T1的控制寄存器T1CON的TMODE1和TMODE0为10时,定时器T1工作于连续增模式。当T1CNT的值计数到和T1CMPR的值相等时,发

44、生比较匹配事件。如果T1CON的第1位定时器比较使能为TECMPR为1,即定时器比较操作被使能,且GPTCONA的第6位比较输出使能位TCMPOE为1,同时GPTCONA下的T1PIN引脚输出极性为高电平或者低电平的话,T1PWM就会输出不对称的PWM波形,如图所示。 6.4.2 当T1CNT的计数方式为连续增/减计数时,T1PWM引脚输出对称的PWM波形v当定时器T1的控制寄存器T1CON的TMODE1和TMODE0为01时,定时器T1工作于连续增/减计数模式。当T1CNT的值计数到和T1CMPR的值相等时,发生比较匹配事件。如果T1CON的第1位定时器比较使能为TECMPR为1,即定时器比

45、较操作被使能,且GPTCONA的第6位比较输出使能位TCMPOE为1,同时GPTCONA下的T1PIN引脚输出极性为高电平或者低电平的话,T1PWM就会输出对称的PWM波形,如图所示。 6.4.3 比较单元产生的可带有死区的PWM波形 v我们在电机控制、开关电源、变频器、逆变器等电力电子电路中,经常会遇到如下图所示的三相全桥控制电路,该电路由6个开关管组成,上下两个开关管组成1个桥壁。任何一个开关管在输入的PWM波形处于高电平时导通,处于低电平时关断。同一桥壁上的上下两个开关管不能同时导通,因为如果同时导通,电源和地就会短接,也就是会发生短路。因此,PHa1和PHa2,PHb1和PHb2,PH

46、c1和PHc2必须都是互补的,以PHa1和PHa2为例,理想情况下当PHa1为高电平时,PHa2为低电平;当PHa1为低电平时,PHa2为高电平。为房子同一桥臂上的两个晶闸管同时导通,需要上下管输出的驱动波形具有一定的死区时间的延迟。 2812的EV还为我们提供了3个全比较单元,分别是比较单元1,比较单元2和比较单元3。如图13所示,这3个全比较单元每一个都能产生一对互补的PWM波形,也可以通过相应的寄存器设置死区时间。比较单元输出的PWM波形的各种参数和T1产生的PWM的各种参数、原理基本一样,我们重点研究比较单元的死区电路。当比较单元的比较操作被使能,就会产生波形PHx。PHx经过死区单元

47、,就会输出两路互补的带有死区的PWM波形DTPHx和DTPHx_。我们仔细看看PHx、DTPHx、DTPHx_之间的关系,如果没有死区,那么DTPHx和DTPHx_应该是完全互补的。DTPHx的导通时刻是在PHx的基础上延时了1个死区时间,而关闭时刻未变。DTPHx_是在PHx取反的基础上,也将导通时间延迟了1个死区时间,而关断的时间没有发生改变。 具体的死区时间是通过死区控制寄存器的配置来实现的。第七章第七章模数转换器模数转换器ADC7.1 2812内部的ADC模块7.2 ADC的工作方式7.3 ADC模块的触发方式7.1 F2812的AD 我们将和大家一起来学习2812中另外一个重要的部分

48、,模数转换部分,即AD。2812内部自带了12位,总共16路的AD,这对于需要节省成本的项目来说是一件好事,因为我们知道,AD的价格一般都是比较贵的,2812的内部AD既然能够满足我们的基本需求,也就可以不用另外设计AD电路了。但是,由于一些内部的原因,使得2812的AD精度达不到12位的精度,而且误差比较大,为了提高内部AD的精度,我们通常在硬件和软件的角度采用补偿措施对其进行校正,使得其精度能够有所提高,能够满足大多数的应用场合。 2812内部ADC的特点 v2812的ADC模块是一个12位分辨率的、具有流水线结构的模数转换器。它具有16个通道,可以配置为2个独立的8通道模块,也可以级联成

49、一个16通道的模块。2812具有2个序列发生器SEQ1和SEQ2分别对应于2个独立的8通道模块,当ADC级联成一个16通道的模块时,SEQ1和SEQ2也级联成一个16状态的序列发生器SEQ。对于每个序列发生器,一旦转换结束,已选择采样的通道值就会被保存到各个通道的结果寄存器中去。2812总共有16个结果寄存Result Reg0Result Reg15,用于分别保存16个通道的转换结果。 值得我们大家注意的。2812是非常脆弱的,AD采样端口的最高采样输入电压是3V,但是在实际设计中我们考虑余量,一般输入最大值在3V的70%左右,但是防止万一,输入AD采样的电压过高(超过3.3V烧毁DSP)或

50、者输入电压为负电压,我们一般先将要采样的信号经过运放处理,使输入电压范围在AD正常工作采样范围之内,7.2 2812内部AD的工作方式v2812的AD可工作于顺序采样和同步采样两种模式。顺序采样,顾名思义,就是按照顺序一个通道一个通道的进行采样,例如ADCINA0, ADCINA1 ADCINA7 , ADCINB0,ADCINB1ADCINB7。而同步采样,是一对通道一对通道的进行采样,即ADCINA0和ADCINB0同时采样,ADCINA1和ADCINB1同时采样ADCINA7和ADCINB7同时采样。 v2812AD的16个通道是可以通过编程来进行选择在某一时刻究竟是哪一个通道被选通进行

51、采样的。这个功能就需要通过ADC输入通道选择序列控制寄存器ADCCHSELSEQx(x=1,2,3,4)来实现。每一个输入通道选择序列控制寄存器都是16位的,被分成了4个功能位CONVxx,每一个功能位占据寄存器的4位,在AD转换的过程中,当前CONVxx位定义了要进行采样和转换的引脚。 v在顺序采样模式下,CONVxx的4位均用来定义输入引脚。最高位为0时,说明采样的是A组,采样保持器用的是S/H-A,最高位为1时,说明采样的是B组,采样保持器用的是S/H-B。而低3位定义的是偏移量,决定了某一组内的特定引脚。v在同步采样模式下,因为是一对一对进行采样的,S/H-A和S/H-B会同时使用到,

52、所以,CONVxx的最高位被舍弃,也就是说只有低3位的数据才是有效位v2812的AD还有一个最大转换通道寄存器ADCMAXCONV,其值决定了本次采样序列所要进行采样的通道总数,其结构如图6所示。当AD工作在两个独立的8通道序列发生器的时候,SEQ1使用位MAXCONV1_02,SEQ2使用位MACXCONV2_0-2。而当AD工作在1个级联的16通道序列发生器的时候,SEQ使用位MAXCONV1_0-3。最大通道数等于(MAXCONVn+1)。因此,如果我要转换6个通道,则需要将MAXCONVn的值设定为5 7.3 ADC的触发方式vADC模块只有接收到转换触发信号才可开始转换,每个排序器都

53、有一系列可以使能或禁止的触发源,SEQ1、SEQ2和级联SEQ的有效输入触发如下表 v来自“未被激活”的排序器的启动转换信号“SOC”请求,将在正在进行的排序器完成采样之后自动开始执行,当前的CONVxx位域定义了将被采样和转换的引脚。 SEQ1SEQ2级联SEQ软件触发(软件SOC)软件触发(软件SOC)软件触发(软件SOC)事件管理器A(EVA SOC)事件管理器B(EVB SOC)事件管理器A(EVA SOC)事件管理器B(EVB SOC)外部SOC引脚外部SOC引脚第八章 2812的SCI模块8.1 2812 SCI特点8.2 SCI模块发送和接收数据的工作原理8.3 SCI数据传输的

54、格式 8.4 SCI发送和接收数据的机制8.1 F2812的SCI模块特点vSCI(Serial Communication Interface),即串行通信接口,是一个双线的异步串口,即具有接收和发送两根信号线的异步串口,一般可以看作是UART(通用异步接收/发送装置)v2812内部具有两个相同的SCI模块,SCIA和SCIB,每一个SCI模块都各有一个接收器和发送器。SCI的接收器和发送器各具有一个16级深度的FIFO(First in fist out 先入先出)队列,它们还都有自己独立的使能位和中断位,可以在半双工通信中进行独立的操作,或者在全双工通信中同时进行操作。v根据信息的传送方

55、向,串行通信可以分为单工、半双工和全双工三种,其各自的定义如下图所示。 v SCI模块具有两个引脚,SCITXDA和SCIRXDA,分别实现发送数据和接收数据的功能,这两个引脚对应于GPIOF模块的第4和第5位,在编程初始化的时候,需要将GPIOFMUX寄存器的第4和第5位置为1,才能使得这两个引脚具有发送和接收的功能,否则就是普通的I/O引脚。 v外部晶振通过PLL模块产生了CPU的系统时钟SYSCLKOUT,然后SYSCLKOUT经过低速预定标器之后输出低速时钟LSPCLK供给SCI。要保证SCI的正常运行,系统控制模块下必须使能SCI的时钟,也就是在系统初始化函数中需要将外设时钟控制寄存

56、器PCLKCR的SCIAENCLK位置1。 v 从图我们可以清楚的看到SCIA可以产生两个中断,SCIRXINTA和SCITXINTA,即发送中断和接收中断。 8.2SCI模块发送和接收数据的工作原理模块发送和接收数据的工作原理 vSCI模块的工作原理如图3所示,之所以SCI能工作于全双工模式,是因为它有独立的数据发送器和数据接收器,这样能够保证SCI既能够同时进行,也能够独立进行发送和接收的操作。v SCI发送数据的过程如下:如图3右半部分所示,在FIFO功能使能的情况下,首先,发送数据缓冲寄存器SCITXBUF从TX FIFO中获取由CPU加载的需要发送的数据,然后SCITXBUF将数据传

57、输给发送移位寄存器TXSHF,如果SCI的发送功能使能,TXSHF则将接收到的数据逐位逐位的移到SCITXD引脚上。 SvCI接收数据的过程如下:如图3的左半部分所示,首先,接收移位寄存器RXSHF逐位逐位的接收来自于SCIRXD引脚的数据,如果SCI的接收功能使能,RXSHF将这些数据传输给接收缓冲寄存器SCIRXBUF,CPU就能从SCIRXBUF读取外部发送来的数据。当然,如果FIFO功能使能的话,SCIRXBUF会将数据加载到RX FIFO的队列中,CPU再从FIFO的队列读取数据。 8.3SCI数据格式数据格式 v我们在进行通信的时候,一般都会涉及到协议,所谓协议就是通信双方预先约定

58、好的数据格式,以及数据的具体含义。这就像地下党员做情报工作时一样,地下工作人员将一份情报交给了上级,上级可以根据事先约定好的规则进行翻译,获取情报具体内容。如果情报被敌人截获那也不怕,由于敌人不知道情报中每个文字所代表的含义,所以,对于敌人来说,这份情报也是无效的。这种事先约定好的规则,我们就把它叫做通信协议。 v在SCI中,通信协议体现在SCI的数据格式上。通常将SCI的数据格式称之为可编程的数据格式,原因就是可以通过SCI的通信控制寄存器SCICCR来进行设置,规定通信过程中所使用的数据格式。从上面的表中我们可以看到,真正的数据内容是18位,1个字符的长度。我们通常将带有格式信息的每一个数

59、据字符叫做一帧,在通信中常常是以帧为单位的。前面已经介绍过,SCI有空闲线模式和地址位模式,而在平常使用的时候,我们一般都是两个处理器之间的通信,例如2812和PC机或者2812和2812之间通信,这时候,我们更适合使用空闲线模式,而地址位模式一般用于多处理器之间的通信。在空闲线模式下,SCI发送或者接收一帧的数据格式如下图所示,其中LSB是数据的最低位,MSB是数据的最高位。 空闲线模式下SCI一帧的数据格式 序号内容序号内容11个起始位41-2个结束位21-8个数据位5在地址为模式下,有1个用于区别数据或者地址的特殊位31个奇/偶/非极性位起始位LSB234567MSB奇/偶/无极性结束位

60、8.4 SCI发送和接收数据的机制SCI模块在发送数据和接收数据时所采用的机制。我们通常使用的有两种方式:一种是查询方式,另一种是中断方式。 查询方式就是程序不断去查询状态标志位,看看SCI是不是已经做好了数据发送或者接收的准备。当数据发送时,需要查询的是位于SCI控制寄存器2(SCICTL2)的第7为TXREADY,发送器缓冲寄存器就绪标志。当这个位为1的时候,表明发送数据缓冲寄存器SCITXBUF已经准备好开始接收并发送下一个数据了。当数据写入SCITXBUF,TXREADY自动会清零,如果TXENA使能了,发送移位寄存器TXSHF就会把SCITXBUF里面的数据发送出去。当数据接收时,需

61、要查询的是SCI接收状态寄存器(SCIRXST)中的RXRDY,接收器就绪标志。当从SCIRXBUF寄存器中已经准备好一个字符的数据,等待CPU去读时,RXRDY位就会置1。当数据被CPU从SCIRXBUF读出后,或者系统复位,都可以使RXRDY清0v中断方式v如果需要使用中断,根据我们前面所学的三级中断的知识,必须使能外设自己的中断、PIE中断和CPU中断。SCIA的发送和接收中断分别位于PIE模块第9组的第1和第2位,同时对应于CPU中断的INT9。v当前面所述的TXRDY也是个中断标志位, 当该位置1时,就会产生发送中断事件,如果各级中断都已经使能,则会响应SCI的发送中断函数。当接收中

62、断标志位RXRDY置1时,就会产生接收中断标志。如果各级中断已经使能,则会响应SCI的接收中断。值得提出来的是,我们在讲中断这一章内容的时候讲过,外设中断的标志位一定要手动复位,在这里SCI是个例外,原因如下:当发送器缓冲寄存器SCITXBUF做好准备发送数据时,TXRDY置1,但是当CPU将数据写入SCITXBUF的时候,TXRDY自动会清0。而当接收器缓冲寄存器已经准备好数据等待CPU去读取时,RXRDY置1,当CPU将数据从SCIRXBUF读出时,RXRDY也会自动清0。这样也就是说发送和接收这两个中断标志位都是可以自动清零的,所以无需手动复位。这是和其他外设中断不一样的地方,希望大家能够注意。


文档来源:https://www.renrendoc.com/paper/212536441.html

文档标签:

下载地址