DSP捕获单元.doc_第1页
DSP捕获单元.doc_第2页
DSP捕获单元.doc_第3页
DSP捕获单元.doc_第4页
DSP捕获单元.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

7.8 捕获单元捕获单元可以记录捕获输入引脚上的转换,事件管理器总共有6个捕获单元,每个事件管理器有3个捕获单元。事件管理器A(EVA)的捕获单元为CAP1、CAP2和CAP3,事件管理器B(EVB)的捕获单元为CAP4、CAP5和CAP6,每一个捕获单元都有一个相应的捕获输入引脚。每个EVA捕获单元均可选择GP定时器2或1作为其时间基准,CAP1和CAP2不能选择不同的事实上时器作为它们的时基。每个EVB捕获单元均为选择GP定时器4或3作为其时间基准,CAP4和CAP5不能选择不同的定时器作为它们的时基。当在捕获输入引脚CAPx上检测到一个设定的转换时,GP定时器的值被捕获并存储在相应的2级深度FIFO堆栈中。图7-18是一个EVA的捕获单元原理框图,EVB的捕获单元原理框图与EVA的一样,仅仅是相应的寄存器发生了改变。7.8.1 捕获单元特性捕获单元包括下列特性:l 1个16位的捕获控制寄存器CAPCONx(可读/写)。l 1个16位的捕获FIFO状态寄存器CAPFIFOx。l 可选择通用定时器1/2(EVA)或者3/4(EVB)作为时基。l 6个16位2级深的FIFO栈(CAPxFIFO),每项个l 3个施密特触发器输入引脚(对于EVA,CAP1/2/3;对于EVB,CAP4/5/6),每个捕获单元一个输入引脚(所有的输入和内部CPU时钟同步,为了使跳变被捕获,输入必须在当前电平保持两个CPU时钟周期。输入引脚CAP1/2和CAP4/5也可用作正交编码器脉冲电路的正交编码器脉冲输入)。l 用户可定义跳变检测方式(上升沿,下降沿,或二者均检测)。l 6个可屏蔽的中断标志位,每个标志位对应一个捕获单元。7.8.2 捕获单元的操作捕获单元使能后,相应输入引脚上的指定转换会将所选的通用定时器的计数值装入到相应的FIOP堆栈。同时,如果有一个或更多有效的捕获值保存在FIFO堆栈(CAPxFIFO位不等于0)中,则相应的中断标志位被置位。如果该中断标志没有被屏蔽,产生一个外设中断请求。每当将捕获到的新计数值存入到FIFO堆栈时,CAPFIFOx的相应状态位被调整以反映FIFO堆栈的新状态。从捕获单元输入引脚处发生转换到所选通用定时器的计数值被锁存之间的延时需要2个CPU时钟周期。7.8.2.1 捕获单元基准的选择对于EVA模块,与CAP1和CAP2不同,捕获单元CAP3有自己独立的时基选择位,这就允许同时使用2个通用定时器,CAP1和CAP2共用一个,而CAP3单独使用一个。在EVB模块,CAP6有自己独立的时基准选择位。 捕获操作不影响与任何GP定时器对应的任何GP定时器的操作或比较/PWM操作。图7-18 EVA捕获单元原理框图7.8.2.2 捕获单元的设置为是捕获单元能正常工作,需对寄存器进行一下设置:初始化捕获FIFO状态寄存器(CAPFIFOx),清楚专用状态位。设置选定的GP定时器为一种操作模式。如果需要,设置相应的GP定时器比较寄存器或GP定时器周期寄存器。设置相应的CAPCONA或CAPCONB。7.8.3 捕获控制寄存器捕获单元的操作有4个16位的控制寄存器CAPCONA/B和CAPFIFOA/B控制。因为捕获电路的时间基准是有GP定时器1/2或3/4提供的,所以TxCON(x=1,2,3,或4) 寄存器用于控制捕获单元的操作。另外,寄存器CMCONA/B也可用于正交编码器脉冲电路的操作。表7-7和表7-8显示的是这些寄存器的地址。7.8.3.1 捕获控制寄存器A捕获控制寄存器A(CAPCONA)映射地址:7420h,各位的意义详细描述如下:15 1413 12 11 10 9 8CAPRESCAP12PNCAP3EN保留位CAP3TSEL CAP12TSELCAP3TOADCRW-0 RW-0 RW-0 RW-0 RW-0 RW-0 RW-0 7 6 5 4 32 10CAP1EDGECAP1EDGECAP1EDGE保留位RW-0 RW-0 RW-0 RW-0 注:R=可读,W=可写,-0=复位后的值位15 CAPRES,捕获复位,该位只能进行写访问,任何读访问的结果均为0。向位15写0将清楚所有的捕获。写1无影响。0所有捕获单元和正交编码脉冲电路的寄存器清01无动作位1413 CAP12PN,捕获单元1和2的控制位。00禁止捕获单元1和2,其FIFO堆栈保持原内容01使能捕获单元1和210保留11保留位12 CAP3EN,捕获单元3控制位。0禁止捕获单元3,其FIFO堆栈保持原有内容1使能捕获单元3位11 保留位位10 CAP3TSEL,捕获单元3的通用定时选择器选择位。0 选择通用定时器21 选择通用寄存器1位9 CAP12TSEL,捕获单元1和2的通用定时器选择位。0选择通用定时器21选择通用定时器1位8 CAP3TOADC,捕获单元3事件启动ADC(模数转换)位。0 无操作1 当CAP3INT标志位被置位是,启动ADC(模数转换)。位7 6 CAP1EDGE,捕获单元1的边沿检测控制位。00 无检测01 检测上升沿10 检测下降沿11 上升沿、下降沿均检测位54 CAP2EDGE,捕获单元2的边沿检测控制位。00 无检测01 检测上升沿10 检测下降沿11 上升沿、下降沿均检测位32 CAP3EDGE,捕获单元3的边沿检测控制位。00 无检测01 检测上升沿10 检测下降沿11 上升沿、下降沿均检测位10 保留位。7.8.3.2 捕获控制寄存器B捕获控制寄存器B(CAPCONB)映射地址:7520h,各位的意义与捕获控制寄存器A(CAPCONA)的相应位一样。15 1413 12 11 10 9 8CAPRESCAP45PNCAP6EN保留位CAP6TSEL CAP5TSELCAP6TOADCRW-0 RW-0 RW-0 RW-0 RW-0 RW-0 RW-0 7 6 5 4 32 10CAP4EDGECAP5EDGECAP6EDGE保留位RW-0 RW-0 RW-0 RW-0 注:R=可读,W=可写, -0=复位后的值。位15 CAPRES,捕获复位,该位只能进行写访问,任何读访问的结果均为0。向位15写0将清楚所有的捕获。写1无影响。位1413 捕获单元4和5的控制位。位12 CAP6EN,捕获单元6控制位。0 禁止捕获单元6,其FIFO堆栈保持原内容1 使能捕获单元6位11 保留位。位10 CAP6TSEL,捕获单元6的通用定时选择器选择位。0 选择通用定时器41 选择通用寄存器3位9 CAP45TSEL,捕获单元4和5的通用定时选择器选择位。0 选择通用定时器41 选择通用寄存器3位8 CAP6TOADC,捕获单元6事件启动ADC(模数转换)位。0 无操作1 当CAP6INT标志位被置位时启动ADC(模数转换)位76 CAP4EDGE,捕获单元4的边沿检测控制位。 00 无检测01 检测上升沿10 检测下降沿11 上升沿、下降沿均检测位54 CAP5EDGE,捕获单元5的边沿检测控制位。 00 无检测01 检测上升沿10 检测下降沿11 上升沿、下降沿均检测位32 CAP6EDGE,捕获单元6的边沿检测控制位。 00 无检测01 检测上升沿10 检测下降沿11 上升沿、下降沿均检测位10 保留位7.8.3.3 捕获FIFO状态寄存器ACAPFIFOx中包括捕获单元的3个FIFO堆栈的状态位。如果CAPnFIFOx的状态位正在更新的同时(因为一个捕获事件)向CAPnFIFOx的状态位写数据,写数据优先。CAPFIFOx寄存器的写操作在编程过程中很有用。例如,如果“01”写入CAPnFIFOx位,则EV模块会认为FIFO有一个输入。随后,每次FIFO获得一个新值,则将产生一个中断。捕获FIFO状态寄存器A(CAPFIFOA)映射地址:7422h,各位的意义详细描述如下: 1514 1312 1110 98保留位CAP3FIFOCAP2FIFOCAP1FIFO R-0 RW-0 RW-0 RW-070保留位 R-0注:R=可读,W=可写, -0=复位后的值。位1514 保留位位1312 CAP3FIFO,捕获单元3的FIFO状态位。00 空01 有一个输入 10 有两个输入11 有两个输入并有捕获到一个,第一个输入已丢失。位1110 CAP2FIFO,捕获单元2的FIFO状态位。00 空01 有一个输入10 有两个输入11 有两个输入并又捕获到一个,第一个输入已丢失位98 CAP1FIFO,捕获单元1的FIFO状态位。00 空01 有一个输入10 有两个输入11 有两个输入并又捕获到一个,第一个输入已丢失。位70 保留位。7.8.3.4 捕获FIFO状态寄存器B捕获FIFO状态寄存器B(CAPFIFOB)映射地址:7522h,各位的意义详细描述如下:1514 1312 1110 98保留位CAP6FIFOCAP5FIFOCAP4FIFO R-0 RW-0 RW-0 RW-070保留位 R-0注:R=可读,W=可写, -0=复位后的值。位1514 保留位。位1312 CAP6FIFO,捕获单元6的FIFO状态位。00 空01 有一个输入10 有两个输入11 有两个输入并又捕获到一个,第一个输入已丢失位1110 CAP5FIFO,捕获单元5的FIFO状态位。00 空01 有一个输入10 有两个输入11 有两个输入并又捕获到一个,第一个输入已丢失位98 CAP4FIFO,捕获单元4的FIFO状态位。00 空01 有一个输入10 有两个输入11 有两个输入并又捕获到一个,第一个输入已丢失。位70 保留位。7.8.4 捕获单元FIFO堆栈每个捕获单元有一个对应的2级深度FIFO堆栈。堆栈顶层包括CAP1FIFO、CAP2FIFO和CAP3FIFO(EVA),或者CAP4FIFO、CAP5FIFO和CAP6FIFO(EVB)。堆栈底层包括CAP1FBOT、CAP2FBOT和CAP3FBOT(EVA),或CAP4FBOT、CAP5FBOT和CAP6FBOT(EVB)。任何一个FIFO堆栈的2级寄存器都是只读的寄存器,它保存着相应的捕获单元捕获的旧计数器值。因此,对FIFO堆栈的一个读访问总是读出捕获到堆栈中的旧计数器值。当位于FIFO堆栈顶部寄存器中的计数器值被读出时,FIFO堆栈底部寄存器的新计数器值(如果有的话)就会被压入顶部寄存器。如果读取了底层寄存器的值,那么捕获FIFO状态寄存器的相应位将发生变化。如果读取前捕获FIFO状态寄存器的相应位为10或11,则读取后变成为01,即堆栈中只有一个值。如果读取前捕获FIFO张台寄存器的相应位为01,则读取后边车工为00即堆栈为空。(1)第1次捕获当捕获单元的输入引脚出现一个指定的转换时,选定的GP定时器的计数器值就会被捕获单元捕获,如果堆栈是空的,这个计数器值就会被写入到FIFO堆栈的顶层寄存器。同时,相应的状态位被设置为0。如果另外一个捕获发生之前对FIFO堆栈进行了读访问,则FIFO状态位被复位为00。(2)第2次捕获如果在以前的捕获的计数值被读取之前,又发生一次捕获,那么捕获的计数器值就会进入底部寄存器。同时,寄存器中相应的FIFO状态位被置为10。当在另外一次捕获之前读FIFO堆栈时,顶部寄存器中的旧计数器值被读出,底部寄存器中的新计数器值被压入顶部寄存器,相应的状态位设置为01。第2次捕获会将寄存器相应的捕获中断标志位置1,如果中断没有被屏蔽,则会产生一个中断请求。(3)第3次捕获当FIFO堆栈中已有两个计数器值,这时如果又有一个捕获发生,堆栈顶部寄存器中最旧的计数器值被推出并且丢失,然后堆栈底部寄存器的计数器值被向上一次压入到顶部寄存器,新捕获的计数器值被写入底部寄存器,并且状态位设置为11,表明一个或更多的旧计数器值

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论