news 2026/9/24 5:00:37

DSP 28377 锁相环代码

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DSP 28377 锁相环代码

dsp 28377 锁相环代码

半夜调试电机控制板的时候,最怕遇到时钟信号飘得亲妈都不认识。DSP 28377这货的锁相环配置说难不难,但手册里那些寄存器名字看得人眼晕。今天咱们直接扒开TI官方例程的裤衩,看看PLL到底怎么驯服。

先甩个祖传配置函数镇楼:

void InitPll(void) { volatile uint32_t i; // 先解除PLL的封印 SysCtrlRegs.PLLSTS.bit.MCLKSTS = 0; SysCtrlRegs.PLLSTS.bit.CLKSLIP = 0; // 切到安全模式 SysCtrlRegs.PLLCR.bit.PLLEN = 0; DELAY_US(100UL); // 老司机都懂的玄学延时 // 上硬菜——倍频系数 SysCtrlRegs.PLLCR.bit.DIV = 10; // 输入时钟×20 while(SysCtrlRegs.PLLSTS.bit.PLLLOCKS != 1) { // 死等锁相环上锁,此处适合点根烟 } // 切回PLL模式 SysCtrlRegs.PLLSTS.bit.MCLKCLR = 1; DELAY_US(100UL); // 再来个延时保平安 }

重点来了,那个神秘的DIV值可不是随便填的。手册第183页偷偷写着计算公式:SYSCLK = (InputClk × [DIV+1])/2。假设外部晶振是10MHz,套用公式就是(10*(10+1))/2=55MHz?大兄弟你数学是体育老师教的吧?TI工程师在这儿埋了个坑——实际DIV寄存器值要减1!所以想得到200MHz主频的话,正确姿势是:

// 200MHz = (10MHz * (20 × 2)) SysCtrlRegs.SYSPLLMULT.all = 19; // 骚操作在这里

调试时最刺激的莫过于手滑配置错时钟。有次我把DIV设成20,结果DSP当场表演死机绝活。后来用示波器抓OSCIN信号才发现,PLL锁不住的时候,时钟信号抖得像帕金森。这时候要在while循环里加个超时检测:

uint16_t timeout = 0; while((SysCtrlRegs.PLLSTS.bit.PLLLOCKS != 1) && (timeout < 5000)) { timeout++; DELAY_US(10); } if(timeout >= 5000) { ESTOP0; // 直接断头台伺候 }

最后说个冷知识:修改PLL配置后,记得把flash等待周期调了。不然程序跑起来比树懒还慢。官方例程里藏着这么段代码:

FlashWdtRegs.FBAC.bit.WAIT = 0x1; // 200MHz对应1个等待周期

时钟配好了别急着收工,拿CCS的寄存器观察窗口瞅瞅PLLSTS寄存器的LOCK位是不是稳如老狗。要是看到CLKSLIP位突然置1,八成是电源纹波太大——这时候该换电容还是改layout,自己看着办吧。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/23 1:09:11

comsol声波阵面调控 涉及压力声学、固体力学模块 3258-3824hz扫频 comsol6

comsol声波阵面调控 涉及压力声学、固体力学模块 3258-3824hz扫频 comsol6.1版本在COMSOL里玩声波阵面调控就像搭乐高——参数调对了就能让声波乖乖听话。这次咱们用6.1版本折腾3258-3824Hz频段的声场操控&#xff0c;主要涉及压力声学模块和它的老搭档固体力学模块。先看模型搭…

作者头像 李华
网站建设 2026/9/23 23:45:35

基于VDLL的矢量型GPS信号跟踪算法MATLAB仿真,包括程序+word设计文档

基于VDLL的矢量型GPS信号跟踪算法MATLAB仿真&#xff0c;包括程序word设计文档GPS接收机最怕啥&#xff1f;不是信号弱&#xff0c;是动态场景下跟踪不稳。传统DLL&#xff08;延迟锁定环&#xff09;在车载导航这种剧烈运动场景里&#xff0c;环路参数调到头秃也容易跟丢。今天…

作者头像 李华
网站建设 2026/9/22 18:00:50

【同济】C++汉诺塔(90-b1)[2025-12-08]

【同济】C汉诺塔(90-b1)[2025-12-08] .综合题 – I 【注意:】 1&#xff64; 白名单同第5 章-Part3 2&#xff64; 本次作业不允许使用尚未讲授过的任何后续课程的知识点,包括但不限于指针&#xff64;引用&#xff64;结构体&#xff64; 类等概念!!! 3&#xff64; 已学过的…

作者头像 李华
网站建设 2026/9/23 12:53:29

【高级开发者必看】Symfony 8请求拦截器的7个隐藏用法

第一章&#xff1a;Symfony 8请求拦截器的核心机制Symfony 8 引入了更灵活的请求拦截机制&#xff0c;使开发者能够在 HTTP 请求进入控制器之前进行精细化控制。这一机制主要依赖于事件监听器、中间件风格的处理器以及新的 RequestHandler 抽象&#xff0c;实现了对请求流程的无…

作者头像 李华
网站建设 2026/9/22 9:28:36

【医疗数据PHP导出终极指南】:5种高效格式选择与实战代码解析

第一章&#xff1a;医疗数据PHP导出的核心挑战与场景分析在医疗信息化快速发展的背景下&#xff0c;PHP作为广泛应用的后端语言&#xff0c;常被用于构建医院管理系统、电子病历平台等应用。然而&#xff0c;在将敏感且结构复杂的医疗数据导出为Excel、CSV或PDF等格式时&#x…

作者头像 李华
网站建设 2026/9/23 20:54:00

【低代码开发进阶指南】:构建可自动更新PHP组件的4种模式

第一章&#xff1a;低代码 PHP 组件的更新机制在现代 Web 开发中&#xff0c;低代码平台通过封装常用功能为可复用组件&#xff0c;显著提升了开发效率。PHP 作为服务端脚本语言&#xff0c;其组件更新机制直接影响系统的可维护性与稳定性。低代码 PHP 组件通常以独立模块形式存…

作者头像 李华