news 2026/9/29 16:55:27

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
探索 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 以及定时器中断的代码模板和简单分析,希望对大家有所帮助。要是有什么问题,欢迎一起讨论!

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

打破行业边界!《水龙吟》用“生态化开发”,让IP价值不止于剧集

12月17日,全国首个影旅融合文旅项目“五凤溪龙吟天城”在四川金堂五凤溪古镇正式开园。该项目以电视剧《水龙吟》IP为核心,深度融合五凤溪古镇历史文化底蕴,打造“可进入、可互动、可演化”的活态世界。游客可打卡凤凰花树、三千阶梯等特色场…

作者头像 李华
网站建设 2026/9/30 2:19:27

如何用农业Agent将化肥成本降低40%?3个真实案例深度拆解

第一章:农业种植 Agent 的施肥量在现代农业智能化进程中,基于AI的农业种植 Agent 被广泛应用于作物管理决策中,其中施肥量的精准控制是提升产量与减少资源浪费的关键环节。通过采集土壤养分、气象数据和作物生长阶段等信息,Agent …

作者头像 李华
网站建设 2026/9/29 9:32:17

生物制药Agent实验优化实战(罕见高成功率方案曝光)

第一章:生物制药Agent实验设计的核心挑战在生物制药领域,基于智能Agent的实验设计正逐步成为优化药物研发流程的关键技术。然而,其实际应用面临多重核心挑战,涉及数据异构性、模型可解释性以及实验闭环控制等复杂问题。数据来源与…

作者头像 李华
网站建设 2026/9/30 2:56:53

【专家亲授】物流Transport Agent高可用架构设计:9个不可忽视的设计原则

第一章:物流运输 Agent 的时效保证在现代物流系统中,运输时效是衡量服务质量的核心指标之一。引入智能 Agent 技术可显著提升调度效率与履约准确性。这些 Agent 能够实时感知订单状态、交通状况和资源负载,并基于预设策略自主决策最优路径与交…

作者头像 李华
网站建设 2026/9/30 3:37:58

边缘AI推理速度提升300%?揭秘模型压缩与硬件协同优化黑科技

第一章:边缘 AI Agent 的推理速度在边缘计算场景中,AI Agent 的推理速度直接影响用户体验与系统响应能力。由于边缘设备资源受限,如何在低延迟、低功耗的前提下实现高效推理成为关键挑战。影响推理速度的核心因素 模型复杂度:参数…

作者头像 李华