创龙28377d历程_C28x系列的28069、28377D的PWM使用经验
C28x系列的28069、28377D的PWM使用经验
[复制链接]
脉宽调制(PWM)基本的原理:控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替正弦波或所需要的波形。
一般工程的底层代码搭建好之后,大部分应用程序中用到的PWM功能可以用以下三个函数表示:
修改PWM占空比、周期
typedef struct{
Uint16 TBPRD7;
Uint16 TBPRD8;
Uint16 TBPRD9;
Uint16 TBPRD10;
Uint16 TBPRD11;
Uint16 TBPRD12;
Uint16 CmpA7;
Uint16 CmpA8;
Uint16 CmpA9;
Uint16 CmpA10;
Uint16 CmpA11;
Uint16 CmpA12;
}PwmData;
void PwmManage(PwmData*data)
{
EPwm7Regs.TBPRD = data->TBPRD7;
EPwm8Regs.TBPRD = data->TBPRD8;
EPwm9Regs.TBPRD = data->TBPRD9;
EPwm10Regs.TBPRD = data->TBPRD10;
EPwm11Regs.TBPRD = data->TBPRD11;
EPwm12Regs.TBPRD = data->TBPRD12;
EPwm7Regs.CMPA.bit.CMPA = data->CmpA7;
EPwm8Regs.CMPA.bit.CMPA = data->CmpA8;
EPwm9Regs.CMPA.bit.CMPA = data->CmpA9;
EPwm10Regs.CMPA.bit.CMPA = data->CmpA10;
EPwm11Regs.CMPA.bit.CMPA = data->CmpA11;
EPwm12Regs.CMPA.bit.CMPA = data->CmpA12;
}
释放PWM
void PwmEnable(void)
{
EALLOW;
EPwm1Regs.TZCLR.bit.OST = 1;
EPwm2Regs.TZCLR.bit.OST = 1;
EPwm3Regs.TZCLR.bit.OST = 1;
EPwm4Regs.TZCLR.bit.OST = 1;
EPwm5Regs.TZCLR.bit.OST = 1;
EPwm6Regs.TZCLR.bit.OST = 1;
EPwm7Regs.TZCLR.bit.OST = 1;
EPwm8Regs.TZCLR.bit.OST = 1;
EPwm9Regs.TZCLR.bit.OST = 1;
EPwm10Regs.TZCLR.bit.OST = 1;
EPwm11Regs.TZCLR.bit.OST = 1;
EPwm12Regs.TZCLR.bit.OST = 1;
EDIS;
}
闭锁PWM
void PwmDisable(void)
{
EALLOW;
EPwm1Regs.TZFRC.bit.OST = 1;
EPwm2Regs.TZFRC.bit.OST = 1;
EPwm3Regs.TZFRC.bit.OST = 1;
EPwm4Regs.TZFRC.bit.OST = 1;
EPwm5Regs.TZFRC.bit.OST = 1;
EPwm6Regs.TZFRC.bit.OST = 1;
EPwm7Regs.TZFRC.bit.OST = 1;
EPwm8Regs.TZFRC.bit.OST = 1;
EPwm9Regs.TZFRC.bit.OST = 1;
EPwm10Regs.TZFRC.bit.OST = 1;
EPwm11Regs.TZFRC.bit.OST = 1;
EPwm12Regs.TZFRC.bit.OST = 1;
EDIS;
}
上面代码中释放与闭锁PWM的功能是由软件TRIP实现的。
以上三个函数基本在两电平或者三电平逆变器上用的比较多,除此之外PWM还有很多其他功能,接下来笔者慢慢列举。
PWM启动ADC
这是一个比较常用的功能,基本上如果使用DSP的片内ADC,大部分都会用PWM触发ADC,或者外部中断启动ADC。
PWM启动ADC,主要是考虑启动ADC的周期,常规的做法启动ADC转换的周期就是PWM的周期,这种做法适用于PWM周期比较长的情况下,如果PWM周期比较短,可能需要隔好几个PWM周期,再启动一次ADC转换。
//ADC SOC
EPwm1Regs.ETSEL.bit.SOCAEN = 1; // Enable SOC on A group
EPwm1Regs.ETSEL.bit.SOCASEL = 1; // When TBCTR == 0x0000,EPWMxSOCA pulse will be
//generated
EPwm1Regs.ETPS.bit.SOCAPRD = 1; // Generate pulse on 1st event
PWM触发中断
一般DSP系统中的主中断,都是ADC转换完成后触发的主中断,因为大部分的应用需求,都是希望DSP进入主中断后能够读取ADCRESULT,所以采用ADC触发的中断,一点都不浪费时间。
但有人认为ADC是个不稳定的东西,他们认为ADC转换过程中有机率出现问题,这种情况下,会导致系统无法进入主中断,而产生一系列问题?所以也有人用PWM的CMPB触发的中断作为主中断,但CMPB要在ADC转换完成之后才能触发中断,,这是为了进入主中断后读取的ADCRESULT,是当前周期转换的,而不是上个周期的。
EPwm1Regs.ETSEL.bit.INTSEL = 6; // time-base counter equal to
//CMPB when the timer
//is incrementin
EPwm1Regs.ETPS.bit.INTPRD = 1; // Generate interrupt on 1st event
EPwm1Regs.CMPB = 1000;
PWM的TRIP模块
TRIP这个词,不好翻译,暂时还是用英文吧,笔者也没有看过特别合适的中文翻译,PWM的TRIP模块,主要功能是关系到PWM的释放与闭锁,闭锁一般是使PWM的A、B 引脚输出低电平。
然后TRIP分为硬件TRIP、软件TRIP,这两者实现的功能是相同的,只是触发TRIP事件的源头不同。硬件TRIP事件是怎么产生的,把DSP的一个GPIO设置为TRIP引脚,当该引脚的电平被拉低时,立即产生TRIP事件,此时PWM即会被闭锁。硬件TRIP闭锁PWM的速度很快,软件闭锁,可能至少需要几十us或者一个中断周期才能够闭锁PWM。
软件TRIP就是实现人为的闭锁、释放PWM功能。
EPwm1Regs.TZSEL.bit.OSHT1 = 1; // one-shit
EPwm1Regs.TZCTL.bit.TZA = TZ_FORCE_LO; //Force EPWMxA to a low state
EPwm1Regs.TZCTL.bit.TZB = TZ_FORCE_LO; // Force EPWMxB to a low state
创龙28377d历程_C28x系列的28069、28377D的PWM使用经验相关推荐
- 创龙基于Xilinx Artix-7系列FPGA处理器的HDMI、SFP接口
处理器 Xilinx Artix-7 FPGA型号为XC7A100T-2FGG484I,逻辑单元101K个,DSP Slice 240个,在28nm节点实现最低功耗和成本. HDMI CON12和CO ...
- 创龙Xilinx Artix-7系列FPGA开发板的拨码开关、拓展IO
TLA7-EasyEVM开发板是一款由广州创龙基于Xilinx Artix-7系列FPGA自主研发的核心板+底板方式的开发板,可快速评估FPGA性能.核心板尺寸仅70mm x 50mm,采用沉金无铅工 ...
- 广州创龙TLK7-EVM开发板介绍
开发板简介 Ø 基于Xilinx Kintex-7系列高性价比FPGA处理器: Ø FPGA芯片型号为XC7K325T-2FFG676I,兼容XC7K160T/410T-2FFG676I,NOR FL ...
- 创龙TI TMS320C6678 DSP + Xilinx Kintex-7 FPGA
开发板简介 基于TI KeyStone C66x多核定点/浮点DSP TMS320C6678 + Xilinx Kintex-7 FPGA的高性能信号处理器: TI TMS320C6678集成8核C6 ...
- 【学习分享】8 创龙TMS320C6748开发板 基于PRU的Demo例程演示
hello亲爱的读者们,小编又来更新啦,今天例程所处开发环境依然还是广州创龙开发的TMS320C6748开发板,对往期文章有兴趣的读者可以转到置顶查看往期文章.至此,[学习分享]创龙TMS320C67 ...
- 创龙28377d历程_广州创龙SOM-TL138/1808/6748核心板 JTAG仿真器接口/LED
前言 TL138/1808/6748-EVM是广州创龙基于SOM-TL138/1808/6748核心板开发的一款开发板.由于SOM-TL138/1808/6748核心板管脚兼容,所以此三个核心板共用同 ...
- 创龙Xilinx Zynq-7000系列XC7Z035/XC7Z045/XC7Z100高性能SoC处理器评估板SMA端子
CPU CPU为Xilinx Zynq-7000 SOC,兼容XC7Z035/XC7Z045/XC7Z100,平台升级能力强,以下为Xilinx Zynq-7000特性参数: 创龙TLZ7xH-EVM ...
- 创龙Xilinx Zynq-7000系列SoC高性能处理器开发板的SFP+接口、FMC接口
TLZ7xH-EVM是一款由创龙基于SOM-TLZ7xH核心板设计的开发板,底板采用沉金无铅工艺的6层板设计,为用户提供了SOM-TLZ7xH核心板的测试平台,用于快速评估核心板的整体性能. SOM- ...
- 创龙Xilinx Zynq-7000系列SoC高性能处理器开发板的RTC座、SMA端子
CPU TLZ7xH-EVM是一款由创龙基于SOM-TLZ7xH核心板设计的开发板,底板采用沉金无铅工艺的6层板设计 CPU为Xilinx Zynq-7000 SOC,兼容XC7Z035/XC7Z04 ...
最新文章
- msf rhosts设置文件_聊一聊基于 msf 的免杀项目测试过程
- Linux scp常用命令
- 《SPARK/TACHYON:基于内存的分布式存储系统》-史鸣飞(英特尔亚太研发有限公司大数据软件部工程师)...
- time.h 详细介绍
- 第八章《对象引用、可变性和垃圾回收》(下)
- 关于.net项目从vs2003升级到2005的若干问题
- windows qt 不能debug_linux配置vlc-qt
- Qt深入:不能不知道的Type、Attribute和Flags
- 服务器搬迁方案_医院机房迁移细则规范 amp; 机房搬迁实施规划方案
- SASS+COMPASS 自适应 学习笔记
- WinRAR 永久去除弹窗广告
- C语言: gotoxy函数
- ITIL学习笔记——核心流程之:IT服务连续性管理
- word怎么加入html,Word中怎么放入html
- Oracle for update skip locked 详解
- calc() 工作原理
- mysql autoenlist默认_Dapper MySql DateTime 异常
- Lib之过?Java反序列化漏洞通用利用分析
- Serialize的使用
- Oracle打补丁步骤
热门文章
- 解决scrapy不执行Request回调函数callback
- wpf 图片绝对路径引用_Python Pillow 图片处理
- djanjo 使用a标签跳转_djangoGETPOST用法以及点击a标签和form表单跳转的类型取参等...
- c++ 线程软件看门狗_装配生产线MES系统软件
- 【算法•日更•第三十期】区间动态规划:洛谷P4170 [CQOI2007]涂色题解
- leecode刷题(4)-- 存在重复数组
- linux之expect
- boost 正则 分割字符串
- CPU是如何处理指令的
- c post请求网页_Python使用urllib2抓取网页