这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » 软件与操作系统 » 野火启明6M5适配PWM

共7条 1/1 1 跳转至

野火启明6M5适配PWM

助工
2024-11-08 23:22:52     打赏

    前面已经分析过瑞萨适配RTT pwm框架的通用实现,这里在野火的RA6M5上把PWM模块的配置方法也实现一遍。

芯片PWM资源分配情况

管脚功能定义野火板卡支持情况
P100GTIOC5B
P101GTIOC5A
P102GTIOC2B
P103GTIOC2AJ29-23
P104GTIOC1BJ26-7
P105GTIOC1AJ26-9
P106GTIOC8B
P107GTIOC8AJ26-8
P108GTIOC0B
P109GTIOC1A
P110GTIOC1B
P111GTIOC3AJ25-8
P112GTIOC3BJ3-17
P113GTIOC2AJ3-19
P114GTIOC2BJ26-10
P115GTIOC4A
P202GTIOC5BJ25-3
P203GTIOC5AJ25-2
P204GTIOC4BJ25-4
P205GTIOC4A
P212GTIOC0A
P213GTIOC0B
P300GTIOC0A
P301GTIOC4BJ25-1
P302GTIOC4AJ25-10
P303GTIOC7BJ25-9
P304GTIOC7AJ29-46
P400GTIOC6ARED LED
P401GTIOC6B
P403GTIOC3ABLUE LED
P404GTIOC3BGREEN LED
P405GTIOC1A
P406GTIOC1B
P407GTIOC6A
P408GTIOC6BJ26-3
P410GTIOC9B
P411GTIOC9A
P414GTIOC0B
P415GTIOC0A
P511GTIOC0BJ35-1
P512GTIOC0AJ35-3
P600GTIOC6BJ29-12
P601GTIOC6AJ34-2
P602GTIOC7BJ34-1
P603GTIOC7AJ29-11
P604GTIOC8BJ29-14
P605GTIOC8A蜂鸣器
P608GTIOC4BJ29-39
P609GTIOC5A
P610GTIOC5B
P700GTIOC5A
P701GTIOC5B
P702GTIOC6A
P703GTIOC6B
P712GTIOC2B野火所选芯片无该pin脚
P713GTIOC2A野火所选芯片无该pin脚

    其中,GTIOC0~GTIOC3是32位的pwm,GTIOC4~GTIOC9是16位的pwm。

配置过程

RTT配置添加

Kconfig中添加如下信息:

    另外,由于之前配板卡时,已经在drv_config.h中预留了PWM编译引入的配置,因此不需要再去添加这部分。

配置代码

    在emu中运行menuconfig,打开PWM配置,由于启明6M5引出的GPT0默认被RTT串口占用,GPT9无对应引脚,因此暂不设置该接口。

2.jpg

        运行scons --target=mdk5,把dac部分导入工程

3.jpg

配置PWM

      打开新生成的keil工程后运行RASC,增加PWM相关配置。

      需要注意的是,RA6M5的PWM是通过定时器实现的,因此PWM配置依赖于定时器配置。

通用部分

配置GPT1

配置GPT2

配置GPT3

配置GPT4

配置GPT5

配置GPT6

配置GPT7

配置GPT8

生成代码配置

2.jpg

修改代码

      关闭rtt默认的点灯代码(位于hal_entry.c)

/*
 * Copyright (c) 2006-2021, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author        Notes
 * 2021-10-10     Sherman       first version
 */

#include <rtthread.h>
#include "hal_data.h"
#include <rtdevice.h>

#define LED_PIN    BSP_IO_PORT_04_PIN_00 /* RED LED pins */

void hal_entry(void)
{
    rt_kprintf("\nHello RT-Thread!\n");

    while (1)
    {
        //rt_pin_write(LED_PIN, PIN_HIGH);
        rt_thread_mdelay(500);
        //rt_pin_write(LED_PIN, PIN_LOW);
        rt_thread_mdelay(500);
    }
}

      编译固件

结果验证

      由于启明6M5引出的金针座仅J29方便使用母头杜邦线,因此仅测试J29座子上的PWM功能,以及呼吸灯,蜂鸣器效果。

\ | /
- RT -     Thread Operating System
 / | \     5.2.0 build Jun 10 2024 17:21:33
 2006 - 2024 Copyright by RT-Thread team

Hello RT-Thread!

msh >pwm probe pwm2
probe pwm2 success
Usage:
pwm probe      <device name>                - probe pwm by name
pwm enable     <channel>                    - enable pwm channel
pwm disable    <channel>                    - disable pwm channel
pwm get        <channel>                    - get pwm channel info
pwm set        <channel> <period> <pulse>   - set pwm channel info
pwm phase      <channel> <phase>            - set pwm phase
pwm dead_time  <channel> <dead_time>        - set pwm dead time
msh >pwm enable 0
pwm2 channel 0 is enabled success
msh >pwm set 0 1000000000 500000000
pwm info set on pwm2 at channel 0
msh >pwm probe pwm3
probe pwm3 success
Usage:
pwm probe      <device name>                - probe pwm by name
pwm enable     <channel>                    - enable pwm channel
pwm disable    <channel>                    - disable pwm channel
pwm get        <channel>                    - get pwm channel info
pwm set        <channel> <period> <pulse>   - set pwm channel info
pwm phase      <channel> <phase>            - set pwm phase
pwm dead_time  <channel> <dead_time>        - set pwm dead time
msh >pwm enable 0
pwm3 channel 0 is enabled success
msh >pwm set 0 1000000000 500000000
pwm info set on pwm3 at channel 0
msh >pwm probe pwm4
probe pwm4 success
Usage:
pwm probe      <device name>                - probe pwm by name
pwm enable     <channel>                    - enable pwm channel
pwm disable    <channel>                    - disable pwm channel
pwm get        <channel>                    - get pwm channel info
pwm set        <channel> <period> <pulse>   - set pwm channel info
pwm phase      <channel> <phase>            - set pwm phase
pwm dead_time  <channel> <dead_time>        - set pwm dead time
msh >pwm enable 0
pwm4 channel 0 is enabled success
msh >pwm set 0 655250 327680
pwm info set on pwm4 at channel 0
msh >pwm probe pwm6
probe pwm6 success
Usage:
pwm probe      <device name>                - probe pwm by name
pwm enable     <channel>                    - enable pwm channel
pwm disable    <channel>                    - disable pwm channel
pwm get        <channel>                    - get pwm channel info
pwm set        <channel> <period> <pulse>   - set pwm channel info
pwm phase      <channel> <phase>            - set pwm phase
pwm dead_time  <channel> <dead_time>        - set pwm dead time
msh >pwm enable 0
pwm6 channel 0 is enabled success
msh >pwm set 0 655250 327680
pwm info set on pwm6 at channel 0
msh >pwm set 0 655250 32768
pwm info set on pwm6 at channel 0
msh >pwm set 0 655250 3276
msh >pwm probe pwm8
probe pwm8 success
Usage:
pwm probe      <device name>                - probe pwm by name
pwm enable     <channel>                    - enable pwm channel
pwm disable    <channel>                    - disable pwm channel
pwm get        <channel>                    - get pwm channel info
pwm set        <channel> <period> <pulse>   - set pwm channel info
pwm phase      <channel> <phase>            - set pwm phase
pwm dead_time  <channel> <dead_time>        - set pwm dead time
msh >pwm enable 0
pwm8 channel 0 is enabled success
msh >pwm set 0 655250 3276
pwm info set on pwm8 at channel 0
msh >pwm set 0 655250 32768
pwm info set on pwm8 at channel 0
msh >pwm set 0 655250 327680
pwm info set on pwm8 at channel 0
msh >

运行过程讲解:

      在使能PWM2时,输入 pwm set 0 1000000000 500000000 时,用示波器查看,发现P103可调制出1Hz 50%占空比波形,与期望一致

      在使能PWM3时,输入 pwm set 0 1000000000 500000000 时,发现蓝灯和绿灯以1Hz为周期交替亮灭,与期望一致

      在使能PWM4时,输入 pwm set 0 655250 327680 时,用示波器查看,发现P608可调制出2000Hz 50%占空比波形

      在使能PWM6时,输入 pwm set 0 655250 327680 时,发现红灯变暗

      在使能PWM6时,输入 pwm set 0 655250 32768 时,发现红灯继续变暗

      在使能PWM6时,输入 pwm set 0 655250 3276 时,发现红灯暗的几乎无感

      在使能PWM8时,输入 pwm set 0 655250 3276 时,蜂鸣器响

      在使能PWM8时,输入 pwm set 0 655250 32768 时,蜂鸣器响的声音变化

      在使能PWM8时,输入 pwm set 0 655250 327680 时,蜂鸣器响的声音继续变化

      PWM5和PWM7由于缺乏引线,未测试





关键词: 野火     启明6m5     适配     pwm    

专家
2024-11-09 00:10:02     打赏
2楼

感谢楼主分享


专家
2024-11-09 01:34:33     打赏
3楼

感谢楼主分享


菜鸟
2024-11-09 11:45:20     打赏
4楼

感谢分享


菜鸟
2024-11-09 11:58:35     打赏
5楼

学习了,对于不熟悉 RT-Thread 驱动开发的人来说,受益良多。


专家
2024-11-09 22:37:06     打赏
6楼

感谢分享


专家
2024-11-09 22:45:09     打赏
7楼

感谢分享


共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]