2565|7

119

帖子

2

TA的资源

一粒金砂(中级)

楼主
 

【中科蓝讯AB32VG1 RISC-V板“碰上”RTT测评】定时器PWM模式与舵机应用 [复制链接]

  本帖最后由 xiyue521 于 2021-5-11 01:12 编辑

 

 

 

1.PWM的配置和函数也不多主要有两个: 

 rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, period, pulse);
   rt_pwm_enable(pwm_dev, PWM_DEV_CHANNEL);

还有要注意的是这个周期的单位是ns,使用   rt_device_find(PWM_DEV_NAME);找设备时,名字的编写,像Timer5是t5pwm,可以用list_device查看:

 

经过逻辑分析仪测试得占空比是高电平的脉宽:

2.因为很多pwm与一些硬件共用,所以本次实验选择:

通过settings配置PWM:

list_device查看设备名:(设备名一定要写对不然就不能正常使用了),虽然手册没有提供,但可以通过控制台查看,也是很方便!

 

3.在使用lpwm1和lpwm2时发现了一个现象,就是他们周期是一样的,所以猜测他们应该是同一个定时器的3个通道,占空比可以不一样

4.接下来就是到舵机的应用了,舵机主要是控制高电平脉宽来控制角度,当然频率一般50hz,但是这个pwm最低只有100hz,可以用。

0.5ms————-0度;
1.0ms————45度;
1.5ms————90度;
2.0ms———–135度;
2.5ms———–180度;

MSH_CMD_EXPORT用于将函数调到help控制台便于调试用,

所以这里我写了三个测试函数为45,,90,135三个角度。

 

help查看:

 

 

 

 

效果很不错!

 

代码:

#define PWM_DEV_CHANNEL     1   
struct rt_device_pwm  *pwm_dev1,*pwm_dev2;      /* PWM设备句柄 */
ALIGN(RT_ALIGN_SIZE)
static uint8_t PWM_Thread_Stack[1024];
static void PWM_Thread_Entry(void *para);
static struct rt_thread pwm_thread;
rt_uint32_t period, pulse;
void Pwm_Init(void){


   pwm_dev1 = (struct rt_device_pwm *)rt_device_find("lpwm1");
   RT_ASSERT(pwm_dev1 != RT_NULL);

   rt_pwm_set(pwm_dev1, PWM_DEV_CHANNEL, 2000000, 200000);

   rt_pwm_enable(pwm_dev1, PWM_DEV_CHANNEL);

   pwm_dev2 = (struct rt_device_pwm *)rt_device_find("lpwm2");
   RT_ASSERT(pwm_dev2 != RT_NULL);

   rt_pwm_set(pwm_dev2, PWM_DEV_CHANNEL, 10000000, 1500000);

   rt_pwm_enable(pwm_dev2, PWM_DEV_CHANNEL);



}

static void PWM_Thread_Entry(void *para){
    Pwm_Init();

}

int Pwm_Thread_Init(void){

   rt_thread_init(&pwm_thread, "pwm_thread", PWM_Thread_Entry, RT_NULL,
           &PWM_Thread_Stack[0], sizeof(PWM_Thread_Stack), 10, 10);

   rt_thread_startup(&pwm_thread);
   return 0;
}
INIT_APP_EXPORT(Pwm_Thread_Init);



void test45(void)
{

    rt_pwm_set(pwm_dev2, PWM_DEV_CHANNEL, 10000000, 1000000);



}void test90(void)
{

    rt_pwm_set(pwm_dev2, PWM_DEV_CHANNEL, 10000000, 1500000);



}void test135(void)
{

    rt_pwm_set(pwm_dev2, PWM_DEV_CHANNEL, 10000000, 2000000);



}
MSH_CMD_EXPORT(test45,45);MSH_CMD_EXPORT(test90,90);MSH_CMD_EXPORT(test135,135);

 

 

 

 

image.png (41.89 KB, 下载次数: 0)

image.png

image.png (26.14 KB, 下载次数: 0)

image.png

image.png (18.46 KB, 下载次数: 0)

image.png

image.png (2.44 MB, 下载次数: 0)

image.png

最新回复

呵呵,看起来差距还是蛮大的,英飞凌,nxp他们的手册里pwm的各种模式丰富的不是一般。   详情 回复 发表于 2021-5-16 21:34

赞赏

1

查看全部赞赏

点赞(1) 关注
 
 

回复
举报

1942

帖子

3

TA的资源

版主

沙发
 

舵机也是属于非常好玩的一个外设的,感谢分享,期待后续的测评!!!

 
 
 

回复

1700

帖子

0

TA的资源

五彩晶圆(初级)

板凳
 

lpwm1和lpwm2频率应该可以设置

占空比可以根据需要调整

 
 
 

回复

7608

帖子

2

TA的资源

五彩晶圆(高级)

4
 

这芯片的pwm有足够多的配置模式吗?

点评

没有了,手册也讲很少  详情 回复 发表于 2021-5-16 00:22
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复

119

帖子

2

TA的资源

一粒金砂(中级)

5
 
freebsder 发表于 2021-5-12 09:51 这芯片的pwm有足够多的配置模式吗?

没有了,手册也讲很少

点评

呵呵,看起来差距还是蛮大的,英飞凌,nxp他们的手册里pwm的各种模式丰富的不是一般。  详情 回复 发表于 2021-5-16 21:34
 
 
 

回复

7608

帖子

2

TA的资源

五彩晶圆(高级)

6
 
xiyue521 发表于 2021-5-16 00:22 没有了,手册也讲很少

呵呵,看起来差距还是蛮大的,英飞凌,nxp他们的手册里pwm的各种模式丰富的不是一般。

个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复

119

帖子

2

TA的资源

一粒金砂(中级)

7
 

看那个数据手册说明也挺少,只能靠rtt的底层驱动

 
 
 

回复

119

帖子

2

TA的资源

一粒金砂(中级)

8
 

看那个数据手册说明也挺少,只能靠rtt的底层驱动

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表