芯查查logo
  • 物料选型
  • 数据服务
    1. 新产品
    2. 查替代
    3. 丝印反查
    4. 查品牌
    5. PCN/PDN
    6. 查方案
    7. 查代理
    8. 数据合作
  • 应用方案
  • SaaS产品
      SaaS产品
    1. 供应链波动监测预警
    2. 半导体产业链地图
    3. 智能BOM管家
    4. 解决方案
    5. 汽车电子
    6. 政府机构
    7. 数据API
  • 商城
  • 行业资讯
    1. 资讯
    2. 直播
  • 论坛社区
    1. 论坛
    2. 学习
    3. 测评中心
    4. 活动中心
    5. 积分商城
  • 查一下
聪聪哥哥
RA4M2-SENSOR+GPT驱动步进电机

一:瑞萨的GPT定时器

通用PWM定时器(GPT)是一款32位定时器,具备GPT32X4通道功能,以及16位定时器,具备GPT16X4通道功能。通过控制上计数器、下计数器或同时控制上、下计数器,便可生成PWM波形。此外,PWM波形还可用于控制无刷直流电机。GPT还可用作通用型定时器。

通用 PWM定时器(GPT,General PWMTimer)是RA MCU 的其中一种32/16位的定时器外设。在GPT当中,可分为GPT32和GPT16,它们最主要的区别是计数器的不同。GPT32是32位的定时器,包含的计数器是32位的,所能计数的范围为:0~0xFFFF_FFFF;而GPT16是16位的定时器,包含的计数器是16位的,所能计数的范围为:0~0xFFFF。

定时器(Timer)最基本的功能就是定时,比如定时发送串口数据、定时采集AD数据、定时触发中断处理其它事务等等。如果把定时器与GPIO引脚结合起来使用的话可以实现更加丰富的功能,可以对输入信号进行计数,可以测量输入信号的脉冲宽度,可以输出单个脉冲、PWM等波形,等等。通过定时器生成PWM波形信号来控制电机状态是工业控制的普遍方法,这方面知识非常值得深人了解。

GPT模块可用于计数事件、测量外部输入信号、作为通用计时器并产生周期性中断、以及输出周期性或PWM信号到GTIOC引脚。GPT也可用于输出单个脉冲,但是注意这是通过软件来实现的,GPT硬件本身不支持输出单个脉冲(One-Shot)功能。当使用单个脉冲(One-Shot)模式时,必须要开启中断,计时器需要在脉冲周期结束后在ISR 中断服务函数中被停止。

二:PWM知识总结如下

PWM(Pulse Width Modulation 脉宽调制)是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。它是一种对模拟信号电平进行数字编码的方法。是指在一定时间内波形的高电平(即 1 状态)所占用的时间比例。

通过高分辨率计数器的使用,方波占空比被调制用来对一个模拟信号的电平进行编码。PWM 信号任然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有,要么完全无。比如我们的电压输出是 5V的,那么经过改变 PWM 的占空比,可以达到在一定时间内输出 3.3V 或者 1.3V 的效果。

这里我们对定时器输出脉冲的频率进行一个简单的测试

PWM是脉冲宽度调制,具有两个非常重要的参数:频率和占空比。

频率:PWM的频率是整个周期的倒数。

占空比:占空比是指一个周期内高电平所占的比例。

定时器的输出部分由比较器和输出控制构成,用于编程输出信号的周期、占空比、极性。高级定时器的输出部分在不同通道上有所不同。

 

三:FSP的配置过程

四:软件代码如下所示:

4.1 PWM的初始化函数:

void PWM_init(void)

{

fsp_err_t err = FSP_SUCCESS;

 

err = R_GPT_Open(&g_timer2_ctrl, &g_timer2_cfg);

/* Handle any errors. This function should be defined by the user. */

assert(FSP_SUCCESS == err);

R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);

/* Start the timer. */

R_GPT_Start(&g_timer2_ctrl);

R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);

 

R_BSP_SoftwareDelay (1000, BSP_DELAY_UNITS_MILLISECONDS);

 

err = R_GPT_PeriodSet(&g_timer2_ctrl, 1000);//频率

assert(FSP_SUCCESS == err);

R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);//不加延时可能会设置不成功

 

err = R_GPT_DutyCycleSet(&g_timer2_ctrl, 500, GPT_IO_PIN_GTIOCB);//占空比

assert(FSP_SUCCESS == err);

R_BSP_SoftwareDelay (20, BSP_DELAY_UNITS_MILLISECONDS);

R_GPT_Start(&g_timer2_ctrl);

}

 

五:实物验证:

版块: 瑞萨电子
前4天 21:32
  • 举报
😁😂😃😄😅😆😉😊😋😌😍😏😒😓😔😖😘😚😜😝😞😠😡😢😣😤😥😨😩😪😫😭😰😱😲😳😵😷😸😹😺😻😼😽😾😿🙀🙅🙆🙇🙈🙉🙊🙋🙌🙍🙎🙏✂✅✈✉✊✋✌✏✒✔✖✨✳✴❄❇❌❎❓❔❕❗❤➕➖➗➡➰🚀🚃🚄🚅🚇🚉🚌🚏🚑🚒🚓🚕🚗🚙🚚🚢🚤🚥🚧🚨🚩🚪🚫🚬🚭🚲🚶🚹🚺🚻🚼🚽🚾🛀Ⓜ🅰🅱🅾🅿🆎🆑🆒🆓🆔🆕
@好友

全部评论

加载中
游客登录通知
已选择 0 人
自定义圈子
移动
发布帖子
发布动态
发布问答
最新帖子
RA4M2-SENSOR+ADC采集工业位移传感器RA4M2-SENSOR+SCI(IIC)触屏测试ESP8266时钟还能当示波器?V16.6硬核更新!GBSC-扩展板_带信号增强ESP8266时钟还能当万用表?V16.4颠覆认知!
热门版块
查看更多
萤火工场
问型号
问技术
问行情
硬件资源下载区
飞腾
开源硬件项目
机器人开源工坊
每日打卡
电子DIY

80

收藏

分享

微信扫码
分享给好友

评论