TMS570LS1224PWM的生成及捕获

本文主要是关于TMS570LS1224的PWM生成以及捕获。关于TMS570网上有关的配置极少,所以写出来和大家分享,有不对的地方,欢迎大家在评论区指出。

PWM基本概念及原理

脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制PWM 原理如图 所示:

    假定定时器工作在向上计数 PWM模式,且当 CNT<CCRx 时,输出 0,当 CNT>=CCRx 时输出 1。那么就可以得到如上的 PWM示意图:当 CNT 值小于 CCRx 的时候,IO 输出低电平(0),当 CNT 值大于等于 CCRx 的时候,IO 输出高电平(1),当 CNT 达到 ARR 值的时候,重新归零,然后重新向上计数,依次循环。改变 CCRx 的值,就可以改变 PWM 输出的占空比,改变 ARR 的值,就可以改变 PWM 输出的频率,这就是 PWM 输出的原理。

一.TMS570LS1224PWM生成

生成PWM波需要使用到定时器,这里以HET1为例。TMS570LS1224通过HCG软件进行配置,具体的配置如下,:

1.使能HET定时器驱动

2.选择引脚映射关系,这儿可以通过勾选框内的HET1将所有与HET1有关的引脚连接起来,也可以只选择与具体使用相关的引脚。

3.选择PWM的输出引脚以及使能引脚,这里可以配置输出PWM的周期以及占空比。这里PIN8的意思是将PWM波从该引脚输出。

4.将对应的PIN引脚选择为输出模式。

5.生成代码并奖励ccs工程将其导入,在sys_main.c中加入以下代码。

hetInit();(初始化定时器) 

pwmSetDuty(hetRAM1,pwm0,50); (也可以在这改变输出pwm的占空比)

pwmStart(hetRAM1,pwm0); (开启pwm)

while(1);

6.验证。我是用的开发板为TMS570LS1224PGE,所以上面选择PIN8引脚即为N2HET1[8],在原理图中查找对应的开发板引脚J10的24脚,所以只需要测量这个引脚的高低电平既可以验证是否有PWM波生成。

二、输入捕获功能

输入捕获模式可以用来测量脉冲宽度或者测量频率。以测量脉宽为例,用一个简图来说明输入捕获的原理

        如图所示,就是输入捕获测量高电平脉宽的原理,假定定时器工作在向上计数模式,图中 t1~t2 时间,就是我们需要测量的高电平时间。测量方法如下:首先设置定时器通道x为上升沿捕获,这样,t1时刻,就会捕获到当前的CNT值,然后立即清零CNT,并设置通道 x为下降沿捕获,这样到 t2 时刻,又会发生捕获事件,得到此时的 CNT 值,记为 CCRx2。这样,根据定时器的计数频率,我们就可以算出 t1~t2 的时间,从而得到高电平脉宽。在 t1~t2 之间,可能产生 N 次定时器溢出,这就要求我们对定时器溢出,做处理,防止高电平太长,导致数据不准确。如图15.1.1所示,t1~t2之间,CNT计数的次数等于:N*ARR+CCRx2,有了这个计数次数,再乘以 CNT 的计数周期,即可得到 t2-t1 的时间长度,即高电平持续时间。

 

    上面我们已经产生了pwm波,我们可以通过捕获模式来捕捉产生的pwm。配置如下

1.所有生成PWM的配置不变,然后配置cap的输入引脚,HET1有8路捕获通道,既原则上HET1可以同时捕捉8路PWM。下图的意思是:cap1的输入通道通过N2HET[0]的引脚接入。既测量时要将N2HET[0]在开发板上对应的引脚和N2HET[8]对应的引脚用杜邦线连接起来。

2.配置引脚0为输入。

注意:

HALCoGen的捕获Capture功能接口是针对双PIN捕获设计的。也就是说,测量从PIN0输入的脉冲,HALCoGen生成的HET程序使用了一条汇编来测量PIN0上的duty,而用另外一条语句来测量PIN1上的period。所以这两个引脚要绑定在一起输出。也就是说如果不对生成的代码进行修改,只能通过两个引脚才能正常测量 一路输出。所以要想8路cap都可以使用,就需要使用16个引脚且是可以存在绑定关系的引脚,如上图所示。这个双引脚测量机制可以通过修改生成的代码变为单引脚测量,可以在het.c的const hetINSTRUCTION_t het1PROGRAM[]数组中找到对应的PCNT指令位置。比如,使用cap0的指令应该是第25和26条指令。如图:

     

可以看到,第26条指令在测量PIN1而不是PIN0上的信号.。这样导致capGetSignal不能正常工作。可以把这个1U去掉,让这条指令针对PIN0.另外,(0U<<6U)这里,是在配置目标脉冲的"极性",把它改成"3U",即上升沿到上升沿之间的宽度。而第25条指令处,改为"1U",即上升沿到下降沿之间的宽度。这样,就相当于对一个"正极性"的脉冲进行测量了。这样,就可以通过单引脚进行测量。

3.配置完成,建立ccs工程,在sys_main.c函数中添加如下代码:

可以通过查看pulse10变量看自己捕捉到的周期和占空比。

以上就是生成和捕获pwm的配置过程,TMS570LS1224还提供了ETPWM和ECAP模式用于生成和捕获PWM,具体配置过程官方提供的历程很清晰,可以参照试验。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
TMS570LS43是一款高性能的汽车电子控制单元(ECU)微控制器。它基于Arm Cortex-R4F处理器架构,具备可靠的实时性能和丰富的外设。 TMS570LS43代码是指用于开发和编程TMS570LS43微控制器的软件代码。代码可用于实现各种汽车电子控制应用,如发动机管理系统、刹车控制系统和安全气囊系统等。 TMS570LS43代码可以使用C或C++等编程语言编写。该代码涵盖了与微控制器外设(如GPIO、CAN、SPI和UART等)交互的驱动程序、中断服务程序和应用逻辑。通过编写这些代码,开发人员能够控制外部设备、读取传感器数据、处理复杂算法和执行决策操作。 为了编写TMS570LS43代码,开发人员需要使用能够生成针对该微控制器的可执行代码的集成开发环境(IDE),如Code Composer Studio。IDE提供了工具和功能,用于编辑、编译、调试和下载代码到目标设备中。 开发人员可以使用TMS570LS43代码来开发高性能的汽车电子系统。代码可以进行实时控制、数据采集和处理、网络通信和故障诊断等功能。借助TMS570LS43的高性能和可靠性,开发人员能够满足汽车行业对安全性、可靠性和实时性的要求。 总之,TMS570LS43代码是用于开发和编程TMS570LS43微控制器的软件代码。它可以实现各种汽车电子控制应用,并且通过提供强大的性能和功能,有助于提高汽车系统的效率和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值