0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【中科昊芯Start_DSC28027勇士开发板试用体验】通过pwm来调整led亮度

开发板试用精选 来源:开发板试用 作者:电子发烧友论坛 2022-11-21 11:18 次阅读
本文来源电子发烧友社区,作者:jf_53933321, 帖子地址:https://bbs.elecfans.com/jishu_2286741_1_1.html

这块板子最大的特点是mcudsp。dsp最大的特点是有非常丰富的计算指令,而且计算指令占用系统时钟周期特别短。今天来玩pwm。
1.pwm是啥
PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。
2.pwm可以用来干啥

pwm输出可以接到led灯上,通过调节占空比可以达到调整led的亮度。pwm输出还可以接到蜂鸣器上,通过占空比调节声音频率,可以让蜂鸣器唱歌。这些都是大材小用。其实pwm最大的作用是做精密电源,或者做电机驱动。
3.上代码
我看了下板子上有的LED资源是接了OPWM4B和OPWM4A,正好可以用来验证。
pYYBAGKoo-yAHDJlAABAf5VzsvQ479.png


  1. void InitEPwm4Example()
  2. {
  3. /*时钟分频标志位。 0: 不分频 1: 2分频*/
  4. EPwm4Regs.CLKDIV.bit.CLKDIV = 1;
  5. /*配置EPWM输出频率为TBCLK/3000/2=10kHz*/
  6. EPwm4Regs.TBPRD = 3000000;
  7. /*配置EPWM输出相位不偏移*/
  8. EPwm4Regs.TBPHS.half.TBPHS = 0;
  9. /*配置EPWM的TBCTR计数初值为0*/
  10. EPwm4Regs.TBCTR = 0x0000;
  11. /*配置EPWM的占空比输出为50%*/
  12. EPwm4Regs.CMPA.half.CMPA = 1500;
  13. EPwm4Regs.CMPB = 0;
  14. /*配置EPWM的TBCTR采用向上向下计数*/
  15. EPwm4Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN;
  16. /*配置EPWM输出不装载相位偏移*/
  17. EPwm4Regs.TBCTL.bit.PHSEN = TB_DISABLE;
  18. /*配置EPWM时基频率TBCLK为系统时钟,不进行分频*/
  19. EPwm4Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1;
  20. EPwm4Regs.TBCTL.bit.CLKDIV = TB_DIV1;
  21. /*比较模块CMPA采用影子寄存器装载模式*/
  22. EPwm4Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW;
  23. EPwm4Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
  24. /*比较模块CMPA从CTR=0时开始装载*/
  25. EPwm4Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
  26. EPwm4Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;
  27. /*TBCTR向上计数时,达到CMPA事件,EPWM1A产生置高动作*/
  28. EPwm4Regs.AQCTLA.bit.CAU = AQ_SET;
  29. /*TBCTR向下计数时,达到CMPA事件,EPWM1A产生置低动作*/
  30. EPwm4Regs.AQCTLA.bit.CAD = AQ_CLEAR;
  31. /*TBCTR向下计数时,达到CMPB事件,EPWM1B产生置低动作*/
  32. EPwm4Regs.AQCTLB.bit.CBD = AQ_CLEAR;
  33. /*TBCTR向上计数时,达到CMPB事件,EPWM1B产生置高动作*/
  34. EPwm4Regs.AQCTLB.bit.CBU = AQ_SET;
  35. /*中断事件选择,当CTR=0时开始产生事件中断*/
  36. EPwm4Regs.ETSEL.bit.INTSEL = ET_CTR_ZERO;
  37. /*中断事件选择,事件中断的使能信号*/
  38. EPwm4Regs.ETSEL.bit.INTEN = 1;
  39. /*中断事件分频配置,一周期产生1次中断*/
  40. EPwm4Regs.ETPS.bit.INTPRD = ET_1ST;
  41. /*
  42. HALFCYCLE 位无用, 配置无效;
  43. HALFEN 位=0: 死区采用 2 倍 TBCLK 时钟;
  44. HALFEN 位=1: 死区采用 TBCLK 时钟;
  45. */
  46. EPwm4Regs.DBCTL.bit.HALFEN = 1;
  47. // EPwm4Regs.DBCTL.bit.HALFCYCLE = 1;
  48. /*死区输出模式配置,配置输出双边沿延时*/
  49. EPwm4Regs.DBCTL.bit.OUT_MODE = DB_FULL_ENABLE;
  50. /*死区极性配置,配置EPWMxA输出置高,EPWMxB输出置低*/
  51. EPwm4Regs.DBCTL.bit.POLSEL = DB_ACTV_HIC;
  52. /*死区输入模式配置,配置输入的上升沿与下降沿延时来源为EPWMxA*/
  53. EPwm4Regs.DBCTL.bit.IN_MODE = DBA_ALL;
  54. /*死区时间配置,配置输出上升沿延时5us*/
  55. EPwm4Regs.DBRED = 600;
  56. /*死区时间配置,配置输出下降沿延时5us*/
  57. EPwm4Regs.DBFED = 600;
  58. }
复制代码



  1. int main(void)
  2. {
  3. /*系统时钟初始化*/
  4. InitSysCtrl();
  5. /*EPWM外设引脚初始化配置*/
  6. InitEPwm4Gpio();
  7. InitPieCtrl();
  8. /*清中断,关中断*/
  9. IER = 0x0000;
  10. IFR = 0x0000;
  11. /*中断向量表初始化配置*/
  12. InitPieVectTable();
  13. EALLOW;
  14. /*配置EPWM1_INT中断向量表指向执行相应的中断服务程序*/
  15. PieVectTable.EPWM1_INT = &epmw1_isr;
  16. EDIS;
  17. EALLOW;
  18. /*禁止EPWM的时基使能,允许EPWM初始化配置写入*/
  19. SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 0;
  20. EDIS;
  21. /*EPWM的初始化配置*/
  22. InitEPwm4Example();
  23. EALLOW;
  24. /*打开EPWM的时基使能,使EPWM的初始化配置起作用*/
  25. SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;
  26. EDIS;
  27. /*使能打开IER的第3组中断向量*/
  28. IER = M_INT3;
  29. /*使能打开IER的第3组中断向量的第一个向量*/
  30. PieCtrlRegs.PIEIER3.bit.INTx1 = 1;
  31. /*使能打开全局中断*/
  32. EINT;
  33. while(1)
  34. {
  35. }
  36. return 0;
  37. }
复制代码

4.效果图
poYBAGKoo-2AOW1YAAMffzHoz1M100.jpg

5.IDE的神奇功效
IDE里有一个live view面板,我觉得live View可以代替示波器,在live View里设置刷新时间和观察的变量后,非常方便调试。再加上对变量值的以采样时间为横轴画图,真的就能达到示波器的效果,思路非常不错。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 中科昊芯
    +关注

    关注

    5

    文章

    73

    浏览量

    5051
  • 开发板试用
    +关注

    关注

    3

    文章

    299

    浏览量

    1912
收藏 人收藏

    评论

    相关推荐

    Start_DSC28034PNT湖人开发板免费体验】Start_DSC28034PNT湖人开发板RS232 通信

    Start_DSC28034PNT湖人开发板| 官网链接 [start28034湖人开发板_北京中科
    发表于 09-12 12:34

    Start_DSC28034PNT湖人开发板免费体验】Start_DSC28034PNT湖人开发板上电测试

    Start_DSC28034PNT湖人开发板| 官网链接 [start28034湖人开发板_北京中科
    发表于 09-12 12:09

    Start_DSC28034PNT湖人开发板免费体验】Start_DSC28034PNT湖人开发板开箱视频

    | 官网链接 [start28034湖人开发板_北京中科科技有限公司] 官网图片发布是这样: 实物收到后有些出入:今天为大家介绍以下
    发表于 08-23 00:17

    Start_DSC28034PNT湖人开发板免费体验】Start_DSC28034PNT湖人开发板初体验

    官网链接 start28034湖人开发板_北京中科科技有限公司 官网图片发布是这样: 实物收到后有些出入:! 微信图片_2023082
    发表于 08-23 00:14

    Start_DSC28034PNT湖人开发板免费体验】开发板使用2

    接上文 【Start_DSC28034PNT湖人开发板免费体验】开发板使用1 | # 导入工程选择从下载的demo:H:\\\\武汉源CW32饭盒派\\\\
    发表于 08-19 10:11

    Start_DSC28034PNT湖人开发板免费体验】中科Start_DSC28034PNT PWM测试

    中科Start_DSC28034PNT PWM测试 本次测试主要对PWM进行测试,尝试使用D
    发表于 08-05 19:40

    Start_DSC28034PNT湖人开发板免费体验】开发板使用1

    提取码:yjyx | # 导入工程选择从下载的demo:H:\\\\武汉源CW32饭盒派\\\\中科Start_DSC28034PN
    发表于 08-04 18:10

    Start_DSC28034PNT湖人开发板免费体验】+开箱+软件

    感谢 发烧友学院以及中科提供产品Start_DSC28034PNT湖人开发板 打开快递封装的外包裹袋,里面有2个盒子。打开后是
    发表于 08-04 14:31

    Start_DSC28034PNT湖人开发板免费体验】DSC28034PNT-基于定时器和PWM输出三色灯

    DSC28034PNT-基于定时器和PWM输出三色灯 概述 DSC28034PNT-基于定时器和PWM输出三色灯项目旨在利用DSC28034
    发表于 07-31 21:42

    Start_DSC28034PNT湖人开发板免费体验】开发环境搭建

    资源下载 总的资源,我放在自己的阿里云盘了,就是下面的三个地方的合集 中科Start_DSC28034PNT开发板 https://ww
    发表于 07-30 16:27

    Start_DSC28034PNT湖人开发板免费体验】(开源)控制机械臂小游戏3

    Start_DSC28034PNT湖人开发板免费体验】定时器控制数字舵机 【Start_DSC28034PNT湖人开发板免费体验】1初识中科
    发表于 07-30 14:48

    Start_DSC28034PNT湖人开发板免费体验】1初识中科

    感谢 中科 感谢 电子发烧友社区 板子非常漂亮! 做工精良。 配套设施完善。 细节到位。 自研软件。 界面优良。
    发表于 07-18 00:52

    中科Start_DSC28034PNT开发板开箱体验

    中科Start_DSC28034PNT开发板开箱体验: 1.开发板开箱 jtag烧写口/us
    发表于 07-13 10:47

    Start_DSC28034PNT湖人开发板免费体验】中科Start_DSC28034PNT开箱测试

    中科Start_DSC28034PNT开箱测试一、Haawking-IDE安装与环境搭建1、 在中科
    发表于 07-09 23:12

    【RISC-V 专题】中科Start_DSC28034PNT湖人开发板免费试用

    Start_DSC28034PNT开发板使用了HXS320F28034PNT RISC-V DSP芯片,该芯片集成了
    发表于 05-19 10:50