1092|4

504

帖子

4

TA的资源

纯净的硅(高级)

楼主
 

【瑞萨电子200MHz Cortex-M33 RA6E2评估板】PWM测试-实现命令行控制的PWM信号源 [复制链接]

前言

这一篇我们来进行PWM的输出测试,并基于前面的命令行实现,添加PWM命令,以实现指令控制输出不同占空比和周期的PWM。这样就实现了一个可以使用的PWM信号源。

PWM配置

时钟

详见手册20. General PWM Timer (GPT)

这里对一些关心的基本特征描述下

GPT使用PCLKD最大100M

 

 

引脚

使用P207

GTIOC5A

 

 

 

参数

 

代码

初始化

gpt_initialize(void)

 

启动

gpt_start(void)

以上代码都不需要修改

 

 

 

 

设置占空比

set_intensity

修改为可以配置占空比和周期

fsp_err_t set_intensity(uint32_t raw_count, uint32_t period, uint8_t pin)

{

    fsp_err_t err = FSP_SUCCESS;

    //raw_count *= STEP;

#if defined(BOARD_RA4W1_EK) || defined (BOARD_RA6T1_RSSK)

    raw_count = (MAX_DUTY_CYCLE - raw_count);

#endif

    /* Set GPT timer's DutyCycle as per user input */

    err = R_GPT_DutyCycleSet (&g_timer_ctrl, raw_count, pin);

    if (FSP_SUCCESS != err)

    {

        APP_ERR_PRINT ("\r\n ** R_GPT_DutyCycleSet API failed **\r\n");

    }

 

    err = R_GPT_PeriodSet (&g_timer_ctrl, period);

    if (FSP_SUCCESS != err)

    {

        APP_ERR_PRINT ("\r\n ** R_GPT_PeriodSet API failed **\r\n");

    }

    return err;

}

最大频率测试

100M的时钟频率理论上可以输出最大100M的PWM波,

实测只能输出50MHz,直接修改初始化参数,周期设置为2,占空比设置为1,其他更小的值无法输出PWM

示波器实测50M输出准确,50MHz的输出也算比较高了。

 

 

任意频率占空比测试

实现接口

void pwm_set_frq_period(uint32_t duty, uint32_t frq)

{

uint32_t period = (uint64_t)100000000ul/frq;

duty = ((uint64_t)duty*period*2+100)/200;

set_intensity(duty, period, TIMER_PIN);

}

 

 

添加命令行

shell_func.c中添加

extern void pwm_set_frq_period(uint32_t duty, uint32_t frq);

void PwmFun(unsigned char* param)

{

uint32_t duty;

uint32_t frq;

if(2 == sscanf((const char*)param, "%*s %d %d", &duty, &frq))

  {

pwm_set_frq_period(duty, frq);

}

}

shell_cmd_list中添加一行

  { (const uint8_t*)"pwm",         PwmFun,         "pwm duty frq"},

 

shell_func.h中添加

void PwmFun(unsigned char* param);

 

输入help回车可以看到新添加的命令pwm

 

输入pwm 10 10000设置频率为10k占空比为10%

 

 

 

输入pwm 30 10000设置10K 30%占空比

示波器实测周期占空比都正确

 

以上实际就实现了一个PWM信号发生器,直接命令行操作,如果再加上上位机就可以更加灵活操作,具有一定实用价值了。

总结

r_gpt.c中只有R_GPT_DutyCycleSet等接口,但是没有设置时钟源频率的接口,配置好后hal_data.c中的参数只在Open时生效,时钟源频率没有接口再动态修改,

只能自己再通过寄存器读写实现。但是动态修改时钟源是一个很重要的需求,因为定时器只有16位,所以输出不同频率范围也需要时钟源做相应的修改。

这也是库代码一个可以优化的地方,灵活性不是很好。

 

最新回复

看了一下50M的波形还非常的不错,这芯片不错不错!  详情 回复 发表于 2023-10-20 09:19
点赞 关注(1)

回复
举报

6845

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

理论上可以输出最大100M的PWM波,实测只能输出50MHz,差距还是不小,不一定是测试方面,主要看能产生100M的波形不

点评

理论上应该周期设置为1,周期到tog一下就是100M,但是实际测试,没有tog, 不知道是不是需要特殊配置还是不支持这种模式。等有时间仔细看看手册。  详情 回复 发表于 2023-10-20 10:07
 
 

回复

7085

帖子

11

TA的资源

版主

板凳
 
看了一下50M的波形还非常的不错,这芯片不错不错!

点评

50M的输出确实很不错了  详情 回复 发表于 2023-10-20 10:05
 
 
 

回复

504

帖子

4

TA的资源

纯净的硅(高级)

4
 
lugl4313820 发表于 2023-10-20 09:19 看了一下50M的波形还非常的不错,这芯片不错不错!

50M的输出确实很不错了

 
 
 

回复

504

帖子

4

TA的资源

纯净的硅(高级)

5
 
Jacktang 发表于 2023-10-20 07:31 理论上可以输出最大100M的PWM波,实测只能输出50MHz,差距还是不小,不一定是测试方面,主要看能产生100M的 ...

理论上应该周期设置为1,周期到tog一下就是100M,但是实际测试,没有tog,

不知道是不是需要特殊配置还是不支持这种模式。等有时间仔细看看手册。

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表