paradoxfx

【原创】TI C2833x介绍---复位与中断(11)

如何将多路复用的外设中断请求传送到CPU中?这个应该算是我们理解整个外部中断处理流程的最后一步了。整个流程相对来说还是有点小复杂并且需要小心谨慎、严格按照步骤来处理的,好在TI为我们提供了一个清晰的流程图。总结整个处理步骤如下:1.&

【原创】TI C2833x介绍---复位与中断(10)

准则3:使用PIEIER禁止中断根据是否去掉中断的使能位,又分为两种处理方法:方法1:使用PIEIER禁止中断,但是保留对应的中断标志位这种方法的特点是中断不会丢失,需要以下的步骤:1.禁止全局

【原创】TI C2833x介绍---复位与中断(9)

在程序中有多个中断需要处理的时候,几个准则不得不看,以免跳转到莫名其妙的illegalISR还一头雾水找不到原因:准则1:不要采用直接修改的方法手动清除(或者说编程操作)PIEIFR的位:对PIEIFR进行人为读操作或者读-修改-写

【原创】TI C2833x介绍---复位与中断(8)

在器件复位之后,中断向量表的映射被配置为下表:映射的向量从何处取Reset地址范围VMAPM0M1MAPENPIEBROMBootROM模块0x3FFFC0-0x3FFFFF110即复位之后,VMAP和M0M1MAP被置位,ENPIE模式被强制为0,而复位向量总是从BootROM中取(所以有一次我把BOOTROM烧坏之后,DSP

【原创】TI C2833x介绍---复位与中断(7)

在2833x中断向量表映射被设计为可以映射到RAM中的四个区域,包括M0SARAM、M1SARAM、BootRom和PIE,但是实际上暂时只有PIE被用到了(和别的保留资源一样,方便后续器件升级时进行尽可能少的改动,这也算是硬件里面的模块化吧)。映射的模式被以下几个位控制,进行

【原创】TI C2833x介绍---复位与中断(6)

上次提到了在DSP的实时仿真运行模式和标准运行情况下,使能中断时用到的寄存器是有区别的,概括为:中断处理过程在何时使能中断标准模式(正常运行的情况)DSP运行在实时模式(仿真器)并暂停INTM=0,且IER中的相应位置位IER中的相应位置位,且DBGIER是1CPU在收到

【原创】TI C2833x介绍---复位与中断(5)

经PIE控制的中断的操作顺序:(3)CPU级的操作一旦PIE控制器将中断请求送入CPU,则CPU级的INTx对应的中断标志位(IFR)将被置位。一旦IFR中相应的标志位被锁存为1之后,除非满足下面的两种条件之一,否则对应的中断请求将暂时不会被响应:1. 

【原创】TI C2833x介绍---复位与中断(4)

经PIE控制的中断的操作顺序:1)外设级别中断事件由外设产生。该事件所对应的中断控制寄存器中的中断标志位(IF)被置位。此时,如果相应的中断使能(IE)位被置位,则外设向PIE控制器发出中断请求。此时如果该中断在外设级别未被使能,则IF保持置位,直到

【原创】TI C2833x介绍---复位与中断(3)

从2812到28335,PIE的功能与核心作用并没有显著变化,可以把它比喻为外设事件的一个集中处理单元。它可以最多支持96个独立的外部中断源,但是在TMS2812DSP中实际只用到了45个,而28335也只用到了56个,剩余的中断源主要是保留给后续器件升级之后使用的,只要在空

【原创】TI C2833x介绍---复位与中断(2)

C2833x的中断源有很多,简单的归类可以分为片内的中断事件和片外的中断事件;片内的中断事件由片内的软硬件事件产生,比如3个CPU定时器、各个外设如eCAP、ePWM等、看门狗等,以及一些用户自定义的中断事件;片外的中断源则一般是与DSP的管脚联系在一起的,在特定

【原创】TI C2833x介绍---复位与中断(1)

F28x系列DSC的复位源一般是两个,一个来自于watchdog,另一个来自于XRS非(注:文字输入的原因,这里的XRS实际都为低电平有效的信号,即头上带上划线的那种标识)管脚上的低电平检测。两个复位信号经过或(or)操作之后,控制芯片的复位。如果复位是由外部操作引

【原创】TI C2833x介绍---外设寄存器的头文件(5)

在使用CCS调试的时候,为了方便的查看一些外设寄存器的内容,可以把定义外设所用的结构体、共用体或者它们的地址直接输入到watchwindow里面,此时可以在ccs展开结构体、共用体,直到看到相应的位;输入起来还是要花点时间的,因为watchwindow里面不像编辑器那样具

【原创】TI C2833x介绍---外设寄存器的头文件(4)

以前在使用TMS320LF2407A这样的芯片的时候,大家在一个新工程的开始往往都会去找一个叫“tms320lf2407.h”的头文件,几乎所有例程的开头你都会看到,因为它采用传统的方法定义了DSP的所有的外设、寄存器的地址。后来TMS320F2812刚刚推出来的时候,我记得论坛

【原创】TI C2833x介绍---外设寄存器的头文件(3)

前面两次讲了两种不同的寄存器定义以及调用的方法。直观上看,书写、记忆方面的不同是它们的区别,那它们的代码大小、代码的效率会不会有什么不同呢?我们可以看一下同一段代码,分别采用两种方法书写,编译生成的汇编文件的区别。以一个CPUtimer操作的程序为例。首先是

【原创】TI C2833x介绍---外设寄存器的头文件(2)

上次讲到了直接使用头文件定义寄存器的地址指针,然后直接对指针进行读写操作这种编程方法的优缺点。这种方法虽然容易上手,但是效率并不高;如果我们需要对寄存器的某一个位进行单独操作怎么办呢?(这种情况很常见,比如在一个定时器的控制寄存器的配置中
Baidu
map