当前位置: 首页 > news >正文

探索 DSP 28377D:PWM 波与 ADC 程序代码实践

dsp 28377d pwm波,adc程序代码模板,已配置3路epwm,4路adc,定时器中断,回调已写好,

最近在搞 DSP 28377D 的开发,今天就跟大家分享下配置 3 路 EPWM、4 路 ADC 以及定时器中断的相关代码模板,还有一些简单的分析。

在 DSP 28377D 里,PWM 波的输出和 ADC 的数据采集是非常常用的功能。比如在电机控制里,PWM 波可以用来控制电机的转速,而 ADC 则可以采集电机的电流、电压等信息。咱们先来看下代码。

代码片段 1:初始化 EPWM

void InitEPWM(void) { // 使能 EPWM 模块时钟 EALLOW; CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 0; CpuSysRegs.PCLKCR2.bit.EPWM1 = 1; CpuSysRegs.PCLKCR2.bit.EPWM2 = 1; CpuSysRegs.PCLKCR2.bit.EPWM3 = 1; EDIS; // 初始化 EPWM1 EPwm1Regs.TBPRD = 1000; // 设置周期 EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // 计数模式 EPwm1Regs.CMPA.half.CMPA = 500; // 设置比较值 EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // 比较值匹配时动作 EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR; // 初始化 EPWM2 EPwm2Regs.TBPRD = 1000; EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; EPwm2Regs.CMPA.half.CMPA = 500; EPwm2Regs.AQCTLA.bit.CAU = AQ_SET; EPwm2Regs.AQCTLA.bit.CAD = AQ_CLEAR; // 初始化 EPWM3 EPwm3Regs.TBPRD = 1000; EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; EPwm3Regs.CMPA.half.CMPA = 500; EPwm3Regs.AQCTLA.bit.CAU = AQ_SET; EPwm3Regs.AQCTLA.bit.CAD = AQ_CLEAR; CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 1; }

代码分析

这段代码主要是对 3 路 EPWM 进行初始化。首先,我们要使能 EPWM 模块的时钟,不然模块就没法工作。TBCLKSYNC这个寄存器先置 0,是为了在配置过程中让时基时钟同步暂时关闭,等配置完再打开。

然后对每一路 EPWM 进行单独配置。TBPRD寄存器设置了 PWM 波的周期,这里设为 1000。TBCTL寄存器的CTRMODE位设置了计数模式,这里用的是上下计数模式。CMPA寄存器设置了比较值,当计数器的值和比较值相等时,就会触发相应的动作,这些动作是由AQCTLA寄存器控制的。

代码片段 2:初始化 ADC

void InitADC(void) { // 使能 ADC 模块时钟 EALLOW; CpuSysRegs.PCLKCR0.bit.ADC_A = 1; CpuSysRegs.PCLKCR0.bit.ADC_B = 1; EDIS; // 复位 ADC AdcaRegs.ADCCTL1.bit.RESET = 1; AdcbRegs.ADCCTL1.bit.RESET = 1; DELAY_US(10); // 配置 ADC AdcaRegs.ADCCTL1.bit.ADCENABLE = 1; AdcaRegs.ADCCTL1.bit.ADCPWDNZ = 1; AdcaRegs.ADCCTL1.bit.ADCREFSEL = ADC_REFERENCE_INTERNAL; AdcaRegs.ADCSOC0CTL.bit.CHSEL = 0; // 选择通道 0 AdcaRegs.ADCSOC0CTL.bit.TRIGSEL = 5; // 触发源 AdcaRegs.ADCSOC0CTL.bit.ACQPS = 14; // 采样保持时间 AdcaRegs.ADCSOC1CTL.bit.CHSEL = 1; AdcaRegs.ADCSOC1CTL.bit.TRIGSEL = 5; AdcaRegs.ADCSOC1CTL.bit.ACQPS = 14; AdcbRegs.ADCSOC0CTL.bit.CHSEL = 0; AdcbRegs.ADCSOC0CTL.bit.TRIGSEL = 5; AdcbRegs.ADCSOC0CTL.bit.ACQPS = 14; AdcbRegs.ADCSOC1CTL.bit.CHSEL = 1; AdcbRegs.ADCSOC1CTL.bit.TRIGSEL = 5; AdcbRegs.ADCSOC1CTL.bit.ACQPS = 14; }

代码分析

这段代码是对 4 路 ADC 进行初始化。同样,先使能 ADC 模块的时钟。然后对 ADC 进行复位操作,等 10 微秒让它稳定下来。

接着配置 ADC 的一些参数。ADCENABLE位使能 ADC,ADCPWDNZ位让 ADC 从低功耗模式唤醒。ADCREFSEL选择内部参考电压。ADCSOCxCTL寄存器用来配置每个转换通道的参数,CHSEL选择通道,TRIGSEL选择触发源,ACQPS是采样保持时间。

代码片段 3:定时器中断配置

void InitTimer(void) { // 使能定时器时钟 EALLOW; CpuSysRegs.PCLKCR0.bit.TIMER0ENCLK = 1; EDIS; // 初始化定时器 CpuTimer0Regs.PRD.all = 1000000; // 定时器周期 CpuTimer0Regs.TPR.all = 0; CpuTimer0Regs.TPRH.all = 0; CpuTimer0Regs.TCR.bit.TSS = 0; // 启动定时器 CpuTimer0Regs.TCR.bit.TIE = 1; // 使能定时器中断 // 中断向量表配置 EALLOW; PieVectTable.TIMER0_INT = &timer0_isr; EDIS; // 使能中断 IER |= M_INT1; PieCtrlRegs.PIEIER1.bit.INTx7 = 1; }

代码分析

定时器中断在很多应用里都很重要,比如周期性地采集 ADC 数据。这里先使能定时器的时钟,然后配置定时器的周期。PRD寄存器设置了定时器的周期,这里设为 1000000。TSS位用来启动定时器,TIE位使能定时器中断。

接着把定时器中断的服务函数timer0_isr放到中断向量表中,这样当定时器中断发生时,就会跳转到这个函数执行。最后使能相应的中断。

回调函数我已经写好了,不过这里就不展示了,大家可以根据自己的需求在中断服务函数里实现相应的功能。

以上就是 DSP 28377D 配置 3 路 EPWM、4 路 ADC 以及定时器中断的代码模板和简单分析,希望对大家有所帮助。要是有什么问题,欢迎一起讨论!

http://www.cnnetsun.cn/news/138844.html

相关文章:

  • 打破行业边界!《水龙吟》用“生态化开发”,让IP价值不止于剧集
  • 如何用农业Agent将化肥成本降低40%?3个真实案例深度拆解
  • 【游戏 Agent 的 AI 训练终极指南】:从零构建高智能游戏AI的7大核心技术
  • 生物制药Agent实验优化实战(罕见高成功率方案曝光)
  • 【专家亲授】物流Transport Agent高可用架构设计:9个不可忽视的设计原则
  • 边缘AI推理速度提升300%?揭秘模型压缩与硬件协同优化黑科技
  • AI Agent如何重塑学习路径?6个真实案例看懂推荐系统的威力
  • 从毫米到微米:实现工业机器人Agent亚级精度的5种核心技术路径
  • MATLAB实现数据批量处理与图像处理GUI设计:风速时程模拟之旅
  • 企业级云渲染的国产化选型指南
  • java计算机毕业设计蔬菜种植园管理系统 基于SpringBoot的农作物智慧种植综合管理平台 B/S架构下的蔬菜基地生产运营一体化系统
  • 桁架机械手控制系统:核心构成与智能化操控
  • 探索SAR成像之三维BP算法:从原理到MATLAB实现
  • 复现“全介质超表面的电磁诱导透明模拟”:从原理到FDTD仿真实践
  • gGoogle新闻开源检索库-gnews ————直接放在下面 先装后使用
  • 核级Agent容灾机制构建:从单点故障到零停机的跃迁之路
  • 从静态到动态:重构康复Agent方案调整范式,实现个性化治疗跃迁
  • 【自动驾驶Agent环境感知核心技术】:揭秘多传感器融合的底层逻辑与实战优化策略
  • iOS与Android符号还原服务统一重构实践总结
  • 隧道代理技术解析:它为何成为数据安全传输的首选?
  • 网络安全入门必收藏!零基础小白5步实战指南,从零到黑客高手
  • 从地面站到太空节点,卫星Agent信号处理全流程拆解,不容错过
  • 大模型学习路线(2025最新)从零基础入门到精通,看完这一篇就够了
  • 【RT-DETR涨点改进】独家创新首发、Neck特征融合改进篇 | TGRS 2025顶刊 | RT-DETR引入HFFE高低频特征融合模块,增强多层次特征融合、噪声抑制,助力目标检测有效涨点
  • 【荐书】掌握LLM,全套方法就在这本书里
  • 【必藏】网络运维与网络安全运维的区别解析:就业前景与学习路线全攻略
  • FPGA实现Sobel边缘检测与中值滤波:基于灰度图像处理的探索
  • SC6D10170H-JSM 碳化硅肖特基二极管
  • 探索三相光伏并网仿真模型:从原理到实现
  • 引领测试创新:领导力在软件质量保障中的核心作用