已阅读5页,还剩81页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章X281x的时钟和系统控制 手把手教你学DSP 基于TMS320X281X 北京航空航天大学出版社作者 顾卫钢 手把手教你学DSP 基于TMS320X281X 北京航空航天大学出版社作者 顾卫钢 8 1振荡器OSC和锁相环PLL 外部晶振或外部时钟输入信号XCLKIN PLL模块 由控制寄存器PLLCR控制PLL工作模式 CLKIN CPU的时钟信号CLKIN产生过程 XCLKIN和CLKIN之间的关系 8 2F2812中各种时钟信号的产生 由PLL模块产生的CLKIN信号 经过cpu分发 作为SYSCLKOUT送至各个外设 SYSCLKOUT信号经过低 高 速外设时钟预定标寄存器LOSPCP HISPCP 变成LSPCLK HSPCLK 提供给低速 高速 外设 使能外设的时钟信号 SysCtrlRegs PCLKCR bit SCIENCLKA 1 使能外设SCIA的时钟SysCtrlRegs PCLKCR bit EVAENCLK 1 使能外设EVA的时钟SysCtrlRegs PCLKCR bit ADCENCLK 1 使能外设ADC的时钟 在使用F2812进行开发的时候 通常会用到一些外设 要使得这些外设工作 首先就是要向其提供时钟信号 假设现在某个项目里用到了EVA SCIA和AD这3个外设 那么就需要按照下面的程序对这3个外设进行时钟使能 8 3看门狗电路 看门狗电路工作原理 由图8 3可以看到 F2812的看门狗电路有一个8位的看门狗加法计数器WDCNTR 当WDCNTR计数到最大值时 看门狗模块就会产生一个输出脉冲 使得DSP复位 为了防止WDCNTR溢出 通常采用两种方法 一种是禁止看门狗 使得计数器WDCNTR无效 另一种就是定期 喂狗 通过软件向负责复位看门狗计数器的看门狗秘钥寄存器 8位的WDKEY 周期性的写入0 x55 0 xAA 清除WDCNTR 8 4低功耗模式 8 5时钟和系统控制模块的寄存器 第10章CPU定时器 手把手教你学DSP 基于TMS320X281X 北京航空航天大学出版社作者 顾卫钢 10 1CPU定时器工作原理 定时器是用来准确控制时间的 X281x芯片内部具有3个32位CPU定时器 Timer0 Timer1 Timer2 用户能用的定时器 Timer0 CPU定时器内部结构 CPU定时器工作示意图 在CPU定时器工作前 先根据实际的需求 计算好CPU定时器周期寄存器的值 然后给周期寄存器PRDH PRD赋值 当启动定时器开始计数时 周期寄存器PRDH PRD里面的值装载进定时器计数寄存器TIMH TIM中 并每隔一个TIMCLK就减小1 直到计数到0 完成一个计数周期 并产生一个中断信号 CPU定时器一个周期所计量的时间 假设系统时钟SYSCLKOUT的值为XMHz 那么计数器每走一步 所需要的时间为 因为CPU定时器一个周期计数了 PRDH PRD 1 次 因此CPU定时器一个周期所计量的时间为 TIMCLK的计算 定时时间的计算 10 3分析CPU定时器的配置函数 DSP28 CpuTimers h内的一段代码 名称 ConfigCpuTimer 功能 此函数将使用Freq和Period两个参数来对CPU定时器进行配置 Freq以MHz 为单位 Period以us作为单位 入口参数 Timer 指定的定时器 Freq Period 出口参数 无 voidConfigCpuTimer structCPUTIMER VARS Timer floatFreq floatPeriod Uint32temp Timer CPUFreqInMHz Freq Timer PeriodInUSec Period temp long Freq Period Timer RegsAddr PRD all temp 给定时器周期寄存器赋值Timer RegsAddr TPR all 0 给定时器预定标寄存器赋值Timer RegsAddr TPRH all 0 初始化定时器控制寄存器 Timer RegsAddr TCR bit TIF 1 清除中断标志位Timer RegsAddr TCR bit TSS 1 停止定时器Timer RegsAddr TCR bit TRB 1 定时器重装 将定时器周期寄存器的值装入定时器计数器寄存器Timer RegsAddr TCR bit SOFT 1 Timer RegsAddr TCR bit FREE 1 Timer RegsAddr TCR bit TIE 1 使能定时器中断Timer InterruptCount 0 初始化定时器中断计数器 ConfigCpuTimer CpuTimer0 150 1000000 Timer0计时1s Why 假设DSP的时钟SYSCLKOUT为XMHZ 想要实现的周期是Ys 则调用配置函数为ConfigCpuTimer CpuTimer0 X Y 106 根据函数的定义 可得 temp Freq Period X Y 106CpuTimer0 RegsAddr PRD all temp X Y 106也就是说CPU定时器周期寄存器的值为X Y 106 而在函数的定义内又有 CpuTimer0 RegsAddr TPR all 0说明CPU定时0的分频器TDDRH TDDR的值为0 则根据前面的CPU定时器的周期计算公式 计算下来发现 经函数ConfigCpuTimer CpuTimer0 X Y 106 配置后 CPU定时器的周期刚好为Ys 第11章X2812的中断系统 手把手教你学DSP 基于TMS320X281X 北京航空航天大学出版社作者 顾卫钢 11 1什么是中断 在任何一款事件驱动型的CPU里面都应该会有中断系统 因为中断就是为响应某种事件而存在的 中断的灵活应用不仅能够实现想要实现的功能 而且合理的中断安排可以提高事件执行的效率 因此中断在DSP应用中的地位是非常重要的 中断 Interrupt 是硬件和软件驱动事件 它使得CPU暂停当前的主程序 并转而去执行一个中断服务子程序 中断的生活实例 F2812的三级中断 CPU中断PIE中断外设中断 11 2CPU中断 X2812的中断主要由两种方式触发 一种是通过在软件中写指令 例如INTR ORIFR或者TRAP指令 另一种是硬件方式触发 例如来自于片内外设 或者外围设备的中断信号 表示某个事件已经发生 可屏蔽中断和不可屏蔽中断 可屏蔽中断就是这些中断可以用软件加以屏蔽或者解除屏蔽 X2812片内外设所产生的中断都是可屏蔽中断 每一个中断都可以通过相应寄存器的中断使能位来禁止或者使能该中断 不可屏蔽中断就是这些中断是不可以被屏蔽的 一旦中断申请信号发出 CPU必须无条件的立即去响应该中断并执行相应的中断服务子程序 X281X的不可屏蔽中断主要包括软件中断 INTR指令和TRAP指令等 硬件中断 非法指令陷阱以及硬件复位中断 CPU处理中断的步骤 11 2 2CPU中断向量和优先级 前面讲解的是单个中断请求的处理过程 那要是几个中断同时向CPU发出中断请求 CPU该如何处理呢 优先级的简单例子 假如有一个医生但是有两个病人需要急诊 一个出了车祸 性命攸关 而另一个只是普通的感冒 这时候医生会先诊治哪个病人呢 22位的CPU中断向量 一共可以支持32个CPU中断 其中每一个中断都是一个32位的中断向量 IER寄存器 中断使能寄存器 IFR寄存器 中断标志寄存器 可屏蔽中断的响应过程 多个中断申请时CPU响应过程 中断A的优先级高于中断B的优先级中断A和中断B均已使能全局中断INTM也已经使能中断A和中断B同时提出申请 CPU如何处理 如果CPU在执行中断A的服务子程序时 中断A的标志位又被置位了 那么CPU接下来会如何处理 11 3PIE中断 2812的中断源 PIE的生活实例 好比一家大公司 每天会有很多员工向老总提交文件 请求老总处理 老总通常事务繁忙 他一个人没有能力同时去处理所有的事情 那怎么办呢 X281X的CPU为了能够及时有效的处理好各个外设的中断请求 特别设计了一个 秘书 专门处理外设中断的扩展模块 thePeripheralInterruptExpansionBlock 简称外设中断控制器PIE 它能够对各种中断请求源 来自于外设或者其他外部引脚的请求 做出判断和相应的决策 外设中断在PIE中的分布 PIE一共可以支持96个不同的中断 并把这些中断分成了12个组 每个组有8个中断 而且每个组都被反馈到CPU内核的 这12条中断线中的某一条上 平时能够用到的所有的外设中断都被归入了这96个中断中 被分布在不同的组里 表11 4外设中断在PIE的分布 11 3 2PIE中断寄存器 PIE中断使能寄存器 PIEIERx PIE标志寄存器 PIEIFRx PIE应答寄存器 PIEACK X 1 2 3 12问题 CPU定时器0周期中断TINT0位于PIE中断寄存器的什么位置 PIE使能寄存器PIEIERx PIE标志寄存器PIEIFRx PIE中断应答寄存器PIEACK PIE中断向量表 相关控制信号表11 7中断向量表映像正常情况下只使用PIE向量表映像在DSP复位和程序引导完成后 用户必须对PIE向量表进行初始化 11 4三级中断系统 外设级 以CPU定时器T0的周期中断为例 TIMH TIM计数到0 TIMH TIM计数到0 TIMER0TCR寄存器的第15位TIF被置位 TIMER0TCR的第14位TIE 1 N 向PIE发出中断请求 Y 以CPU定时器T0的周期中断为例 TIMH TIM计数到0 TIMH TIM计数到0 TIMER0TCR寄存器的第15位TIF被置位 TIMER0TCR的第14位TIE 1 N 向PIE发出中断请求 Y TIMH TIM计数到0 TIMH TIM计数到0 TIMER0TCR寄存器的第15位TIF被置位 TIMER0TCR的第14位TIE 1 N 向PIE发出中断请求 Y 以CPU定时器T0的周期中断为例 TIMH TIM计数到0 TIMH TIM计数到0 TIMER0TCR寄存器的第15位TIF被置位 TIMER0TCR的第14位TIE 1 N 向PIE发出中断请求 Y 外设级手动操作的内容 外设中断的使能 需要将与该中断相关的外设寄存器中的中断使能位置1 外设中断的屏蔽 需要将与该中断相关的外设寄存器中的中断使能位置0 外设中断标志位的清除 需要将与该中断相关的外设寄存器中的中断标志位置1 清除CPU定时器0中断标志位TIF的语句如下 CpuTimer0Regs TCR bit TIF 1 清除定时器中断标志位 PIE级 以CPU定时器T0的周期中断为例 TIMH TIM计数到0 TIMH TIM计数到0 TIMER0TCR寄存器的第15位TIF被置位 以CPU定时器T0的周期中断为例 TIMH TIM计数到0 TIMH TIM计数到0 TIMER0TCR寄存器的第15位TIF被置位 TIMH TIM计数到0 TIMH TIM计数到0 TIMER0TCR寄存器的第15位TIF被置位 向CPU发出INT1中断请求 以CPU定时器T0的周期中断为例 TIMH TIM计数到0 向PIE提出中断请求 PIEIFR1 7被置位 N PIEIER1 7 1 PIEIER1 7 1 PIEACK 1 1 N Y TIMH TIM计数到0 TIMH TIM计数到0 TIMER0TCR寄存器的第15位TIF被置位 TIMH TIM计数到0 TIMH TIM计数到0 TIMER0TCR寄存器的第15位TIF被置位 TIMH TIM计数到0 TIMH TIM计数到0 TIMER0TCR寄存器的第15位TIF被置位 向CPU发出INT1中断请求 以CPU定时器T0的周期中断为例 TIMH TIM计数到0 外设向PIE提出中断请求 PIEIFR1 7被置位 N PIEIER1 7 1 PIEIER1 7 1 PIEACK 1 1 Y PIE级手动操作的内容 PIE中断的使能 需要使能某个外设中断 就得将其相应组的使能寄存器PIEIERx的相应位进行置位 PIE中断的屏蔽 这是和使能相反的操作 PIE应答寄存器PIEACK相关位的清除 以使得CPU能够响应同组内的其他中断 清除PIEACK中与T0INT相关的应答位的语句如下所示 PieCtrl PIEACK bit ACK1 1 响应PIE组1内的其他中断 CPU级 PIE向CPU提出INT1中断请求 TIMER0TCR寄存器的第15位TIF被置位 TIMER0TCR寄存器的第15位TIF被置位 TIMER0TCR寄存器的第15位TIF被置位 CPU响应定时器T0周期中断 以CPU定时器T0的周期中断为例 IFR 1被置位 N PIEIER1 7 1 IER 1 1 INTM 0 Y N 2812的中断过程 11 5成功实现中断的必要步骤 第1步外设初始化 第2步主函数中的处理 第3步中断函数的处理 第12章事件管理器EV 手把手教你学DSP 基于TMS320X281X 北京航空航天大学出版社作者 顾卫钢 12 1事件管理器EV EventManager 简称EV两个事件管理器 EVA和EVB通用定时器全比较 PWM单元捕获单元正交编码电路 EVA的结构框图 事件管理器的模块及信号的命名 事件管理器的模块及信号的命名 续 三类信号的说明 Externalcompare outputtripinputsExternaltimer comparetripinputsExternaltripinputs 12 2通用定时器 每个事件管理器有两个16位通用定时器 EVA T1 T2EVB T3 T4通用定时器作用 1 计时2 使用定时器的比较功能产生PWM波3 给其他子模块提供时基 通用定时器的结构框图 当x 2 y 1 n 2 当x 4 y 3 n 4 阴影寄存器的作用 Shadowedregister 阴影寄存器 定时器比较寄存器重载条件 T1CON TCLD1TCLD000当计数寄存器T1CNT 001当计数寄存器T1CNT的值为0或者等于周期寄存器的值10立即载入11保留 12 2 1通用定时器的时钟 图12 4时钟脉冲TCLK原理 OSCCLK SYSCLKOUT HSPCLK TCLK 12 2 2通用定时器的计数模式 00停止 保持模式 当TMODE的值为0时 定时器工作于停止 保持模式 在这种模式下 通用定时器停止计数并保持当前的状态 此时 定时器的计数寄存器T1CNT 比较输出T1PWM T1CMP将保持不变 01连续增 减计数模式 当TMODE的值为1时 定时器工作于连续增 减计数模式 连续增 减计数模式时不同初始值情况下的计数 10连续增计数模式 当TMODE的值为2时 定时器工作于连续递增计数模式 连续增计数模式时不同初始值情况下的计数 11定向增 减计数模式 当TMODE的值为3时 定时器工作于定向增 减计数模式 12 2 3通用定时器的中断事件 以T1为例上溢中断T1OFINT下溢中断T1UFINT比较中断T1CINT周期中断T1PINT 上溢中断T1OFINT 当T1CNT的值为0 xFFFF的时候 发生定时器T1的上溢中断 当上溢事件发生后 再过1个定时器时钟周期 则上溢中断的标志位被置位 值得注意的是 这里的上溢事件和传统的上溢概念有所区别 只要T1CNT的值为0 xFFFF 就会发生上溢中断事件 比如 初始化T1CNT的值为0 xFFFF 那么在启动定时器工作的时候 就已经产生了一个上溢中断事件 下溢中断T1UFINT 当T1CNT的值为0 x0000的时候 发生定时器T1的下溢中断 当下溢事件发生后 再过1个定时器时钟周期 则下溢中断的标志位被置位 和上溢中断一样 只要T1CNT的值为0 x0000 就会发生下溢中断事件 比较中断T1CINT 当T1CNT的值和T1比较寄存器T1CMPR的值相等时 发生定时器T1的比较中断 当发生比较比配后 再过1个定时器时钟周期 则比较中断的标志位被置位 周期中断T1PINT 当T1CNT的值和T1周期寄存器T1PR的值相等时 发生定时器T1的周期中断 当发生周期中断事件后 再过1个定时器时钟周期 则周期中断的标志位被置位 12 2 4通用定时器的同步 1 将T2CON的T2SWT1位置1 实现T1CON的TENABLE位来启动通用定时器T2计数 这样 两个计数器T1和T2就能够
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 产业化发展的虚拟探索
- 冬季科学育儿小知识是什么
- 局部解剖学-腹前外侧壁层次
- 初一综合性学习·写作·口语交际(漫游语文世界)
- 初三月考的总结
- 出租车雇佣合同
- 毕业论文的目的怎么写
- 临床问题导向的基础医学教学重构
- 临床科室成本管控KPI设计
- 皮损可表现为线状分布的疾病
- JJF 1105-2018触针式表面粗糙度测量仪校准规范
- GB/T 18851.2-2005无损检测渗透检测第2部分:渗透材料的检验
- DBJ-T 13-195-2022 烧结煤矸石实心砖和多孔砖(砌块) 应用技术标准
- 管道安全护理课件
- 因私出国(境)管理有关政策的解读课件
- 液压挖掘机操作手册-DH60-7-
- 线性系统理论-郑大钟(第二版)课件
- 音乐课件《鸿雁》(公开课)
- 禾川x3系列伺服说明书
- 拆除工程检验批质量检验记录
- 原发性醛固酮增多症
评论
0/150
提交评论