首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

哈工大DSP精品讲义!!!(连载)

6.8.2 捕获单元的操作

在捕获单元位能后,相应输入引脚上的指定转换会将所

选的通用定时器的计数值装入到相应的FlFO堆栈。同

时,如果有个或更多有效的捕获值保存在FlFO堆栈

(CAPx FlFO位不等于0)中,则相应的中断标志位被置

1。如果该个断标志没有被屏蔽,产生一个外设中断 请求。

每当将捕获到的新计数值存入到FlFO堆栈时,CAPFlFOx 的相应状态位被调整以反映FlFO堆栈的新状态。从捕获单元输入引脚处发生转换到所选通用定时器的计数值被锁存之间的延时需要2个CPU时钟周期。

1.捕获单元时间基准的选择

对EVA模块,与 CAP1和CAP2不问,捕获单元CAP3有白己独立的时基选择位,这就允许同时使用2个通用定时器, CAP1和CAP2共用一个,而CAP3单独使用一个。在EVB模块,CAP6有自己独立的时基本选择位。捕获操作不影响与任何GP定时器对应的任何GP定时器 操作或比较/PWM操作。

2.捕获单元的设置

为使捕获单元能正常工作,需对寄存器进行以下设置:

* 初始化捕获FlFO状态寄存器(CAPFlFOx),清除专用状

态位。

* 设置选定的GP定时器为一种操作模式。

* 如果需要,设置相应的GP定时器比较寄存器或GP定时

器周期寄存器。

* 设置相应的CAPCONA或CAPCONB。

6.8.3 捕获单元寄存器

捕获单元的操作由4个16位的控制寄存器CAPCONA/B和

CAPFlFOA/B控制。因为捕获电路的时间基准是由GP

定时器1/2或3/4提供的,所以TxCON(x=1,2,3或4)

寄存器用于控制捕获单元的操作。

另外,寄存器CMCONA/B也可用于正交编码器脉冲电路

的操作。

1.捕获控制寄存器CAPCONx

(1)捕获控制寄存器A(CAPCONA),映射地址:7420h。

CAPCONA各位的意义:

位15 CAPRES。捕获复位,该位只能写,任何读的结

果均为0。 向位15写0将清除所有的捕获和QEP寄存

器。但是,使能捕获功能时不需要向位15写1。

0 所有捕获单元和正文编码脉冲电路的寄存器清o

1 无动作

位14-13 CAPQEPN。捕获单元1和2的控制位。

00 禁止捕获单元1fu 2,FIF0堆栈保持原内容

01 使能捕获单元1和2

10 保留

11 保留

位15 CAPRES。捕获复位,该位只能写,任何读的结

果均为0。 向位15写0将清除所有的捕获和QEP寄存

器。但是,使能捕获功能时不需要向位15写1。

0 所有捕获单元和正文编码脉冲电路的寄存器清o

1 无动作

位14-13 CAPQEPN。捕获单元1和2的控制位。

00 禁止捕获单元1fu 2,FIF0堆栈保持原内容

01 使能捕获单元1和2

10 保留

11 保留

位14-13 CAPQEPN。捕获单元1和2的控制位。

00 禁止捕获单元1fu 2,FIF0堆栈保持原内容

01 使能捕获单元1和2

10 保留

11 保留


位12 CAP3EN。捕获单元3控制位。

0 禁止捕获单元3,其FlFO堆栈保持原内容

1 使能捕获单元3

位11 保留位。

位10 CAP3TSEL。捕获单元3的通用定时器选择位。

0 选择通用定时器2

1 选择通用定时器1

位9 CAP2TSEL。捕获单元1和2的通用定时器选择位。

0 选择通用定时器2

1 选择通用定时器1位8 CAP3TOADC。捕获单元3事件启动ADC转换位:

0 无操作

1 当CAP3INT标志位被置位时,启动ADC(模数转换

位7-6 CAP1EDGE。捕获单元1的边沿检测控制位。

00 无检测

01 检测上升沿

I0 检侧下降沿

11 上升沿、下降沿均检测

位5-4 CAP2EDGE。捕获单元2的边沿检测控制位。

00 无检测

01 检测上升沿

I0 检侧下降沿

2.捕获FIFO状态寄存器   CAPFlFOx中包括捕获单元的3个FlFO堆栈的状态位。如     果CAPFlFOx的状态位正在更新的同时(因为一个捕获     事件)向CAPFlFOx状态位写数据,写数据优先。   CAPFlFOx寄存器的写操作在编程中很有用。例如,如果     “01”写入CAPFlFOx位,则EV模块会认为FIFO有一个输      入。随后,每次FIFO获得一个新值,则将产生一个捕     获中断。    (1)捕获FlFO状态寄存器A(CAPFlFOA),          映射地址:7422h     捕获FlFO状态寄存器A(CAPFlFOA)各位的意义如下:
位15-14  保留位。   位13-12  CAP3FlFO。捕获单元3的FlFO状态位         00     空         01     有一个输入         10     有两个输入         11     有两个输入并又捕获到一个,第一个输入已丢                失。   位11-10  CAP2FlFO。捕获单元2的FlFO状态位         00     空         01     有一个输入


10 有两个输入

11 有两个输入并又捕获到一个,第一个输入已丢

失。

位9-8 CAP1FlFO。捕获单元1的FlFO状态位

00 空

01 有一个输入

10 有两个输入

11 有两个输入并又捕获到一个,第一个输入已丢

失。

位7-0 保留位

(2)捕获FlFO状态寄存器B(CAPFlFOB),          映射地址:7522h     与捕获FlFO状态寄存器A(CAPFlFOA)各位的意义相同。   6.8.4  捕获单元FIF0堆栈         每个捕获单元有一个2级深度FlFO堆栈。任何一个     FlFO堆栈的2级寄存器都是只读寄存器,它保存着相     应的捕获单元捕获的旧计数器值。因此,对FlFO堆栈     的一个读访问总是读出捕获到堆栈中的旧计数器值。     当位于FlFO堆栈顶部寄存器中的计数器值被读出时,     FlFO堆栈底部寄存器的新计数器值(如果有的话)就会     被压入项部寄存器

如果读取了底层寄存器的值,那么捕获FlFO状态寄存 器的相应位将发生变化。 如果读取前捕获FlFO状态寄存器的相应位为10或11, 则读取后变成为01,即堆栈中只有一个值。 如果读取前捕获FlFO状态寄存器的相应位为01,则读 取后变成为00,即堆栈为空。 (1)第1次捕获 当捕获单元的输入引脚出现一个指定的转换时,选 定的GP定时器的计数器值就会被捕获,如果堆栈是 空的,这个计数器值就会被写入到FlFO堆栈的项层 寄存器。同时,相应的状态位被设置为0。

如果另外一个捕获发生之前对FlFO堆栈进行了读访问,

则FlFO状态位被复位为00。

(2)第2次捕获

如果在以前的捕获的计数值被读取之前,又发生一次捕

获,那么捕获的计数器值就会进入底部寄存器。同时,

寄存器中相应的FlFO状态位被置为10。当在另外一次

捕获之的读FlFO堆栈时,顶部寄存器中的旧计数器值

被读出,底部寄存器中的新计数器值被压入顶部寄存

器,相应的状态位设置为01。

第2捕获会将寄存器相应的捕获中断标志位置1,如果中

断没有被屏蔽,则会产生一个中断请求。

返回列表