<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【Renesas RA6M4開發板之兩路PWM驅動】

RT-Thread單片機學習 ? 來源:RT-Thread單片機學習 ? 作者: RT-Thread單片機學習 ? 2023-01-14 11:48 ? 次閱讀

1.0 PWM 簡介

PWM(Pulse Width Modulation , 脈沖寬度調制) 是一種對模擬信號電平進行數字編碼的方法,通過不同頻率的脈沖使用方波的占空比用來對一個具體模擬信號的電平進行編碼,使輸出端得到一系列幅值相等的脈沖,用這些脈沖來代替所需要波形的設備。

在這里插入圖片描述

上圖是一個簡單的 PWM 原理示意圖,假定定時器工作模式為向上計數,當計數值小于閾值時,則輸出一種電平狀態,比如高電平,當計數值大于閾值時則輸出相反的電平狀態,比如低電平。當計數值達到最大值是,計數器從0開始重新計數,又回到最初的電平狀態。高電平持續時間(脈沖寬度)和周期時間的比值就是占空比,范圍為0~100%。上圖高電平的持續時間剛好是周期時間的一半,所以占空比為50%。

1.1 原理

一個比較常用的pwm控制情景就是用來調節燈或者屏幕的亮度,根據占空比的不同,就可以完成亮度的調節。PWM調節亮度并不是持續發光的,而是在不停地點亮、熄滅屏幕。當亮、滅交替夠快時,肉眼就會認為一直在亮。在亮、滅的過程中,滅的狀態持續時間越長,屏幕給肉眼的觀感就是亮度越低。亮的時間越長,滅的時間就相應減少,屏幕就會變亮。

在這里插入圖片描述

1.2 訪問 PWM 設備

應用程序通過 RT-Thread 提供的 PWM 設備管理接口來訪問 PWM 設備硬件,相關接口如下所示:

函數 描述
rt_device_find() 根據 PWM 設備名稱查找設備獲取設備句柄
rt_pwm_set() 設置 PWM 周期和脈沖寬度
rt_pwm_enable() 使能 PWM 設備
rt_pwm_disable() 關閉 PWM 設備

2. RT-theard配置

2.1 硬件需求

實現功能:

板載LED3(P106)和P107的LED兩路PWM驅動。

1、RA6M4開發板

在這里插入圖片描述

2、USB下載線,ch340串口和附帶4根母母線,rx---p613;tx---p614

3、準備LED燈一個,正極接3.3V,負極接P107,板載LED3(P106)不變

在這里插入圖片描述

在這里插入圖片描述

硬件到此配置完成

2.2 軟件配置

Renesas RA6M4開發板環境配置參照:【基于 RT-Thread Studio的CPK-RA6M4 開發板環境搭建】

1、新建項目RA6M4-pwm工程

在這里插入圖片描述

2、查閱RA6M4硬件資源,相關資料,在RT-theard Setting 硬件下開啟PWM,使能pwm8

在這里插入圖片描述

pdf文檔第21章pwm

在這里插入圖片描述

需要使能pwm8

在這里插入圖片描述

3、打開RA Smart Congigurator,在Stacks中New Stack添加r_gpt

在這里插入圖片描述

4、在Property的Module的General中選Channel8,Pins選擇P107和P106

在這里插入圖片描述

5、然后Generate Project Content 同步更新剛剛配置的文件

圖形化配置已經完成,接下來配置相關代碼

3. 代碼分析

1、修改hal_entry.c函數,屏蔽LED3普通GPIO輸出

/*
 * 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
 * 2021-11-03     Sherman       Add icu_sample
 */

#include 
#include "hal_data.h"
#include 

//#define LED3_PIN    BSP_IO_PORT_01_PIN_06
#define USER_INPUT  "P105"

void hal_entry(void)
{
    rt_kprintf("
Hello RT-Thread!
");

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

void irq_callback_test(void *args)
{
    rt_kprintf("
 IRQ00 triggered 
");
}

void icu_sample(void)
{
    /* init */
    rt_uint32_t pin = rt_pin_get(USER_INPUT);
    rt_kprintf("
 pin number : 0x%04X 
", pin);
    rt_err_t err = rt_pin_attach_irq(pin, PIN_IRQ_MODE_RISING, irq_callback_test, RT_NULL);
    if(RT_EOK != err)
    {
        rt_kprintf("
 attach irq failed. 
");
    }
    err = rt_pin_irq_enable(pin, PIN_IRQ_ENABLE);
    if(RT_EOK != err)
    {
        rt_kprintf("
 enable irq failed. 
");
    }
}
MSH_CMD_EXPORT(icu_sample, icu sample);

在src文件下新建pwmled.c和pwmled.h文件,其他不變。

在這里插入圖片描述

pwmled.c

/*
 * Copyright (c) 2006-2021, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2022-07-11     Asus       the first version
 */
/*
 * 程序清單:這是一個 PWM 設備使用例程
 * 例程導出了 pwm_led_sample 命令到控制終端
 * 命令調用格式:pwm_led_sample
 * 程序功能:通過 PWM 設備控制 LED 燈的亮度,可以看到LED不停的由暗變到亮,然后又從亮變到暗。
*/

#include 
#include 
#define PWM_DEV_NAME        "pwm8"  /* PWM設備名稱 */
#define PWM_DEV_CHANNEL      0   /* PWM通道 */
struct rt_device_pwm *pwm_dev;      /* PWM設備句柄 */
//static int pwm_led_sample(int argc, char *argv[])
int pwm_led_sample(void)
{
    rt_uint32_t period, pulse, dir;
    period = 500000;    /* 周期為0.5ms,單位為納秒us */
    dir = 1;            /* PWM脈沖寬度值的增減方向 */
    pulse = 0;          /* PWM脈沖寬度值,單位為納秒ns */
    /* 查找設備 */
    pwm_dev = (struct rt_device_pwm *)rt_device_find(PWM_DEV_NAME);
    if (pwm_dev == RT_NULL)
    {
        rt_kprintf("pwm sample run failed! can't find %s device!
", PWM_DEV_NAME);
        return RT_ERROR;
    }
    /* 設置PWM周期和脈沖寬度默認值 */
    rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, period, pulse);
    rt_pwm_set(pwm_dev, 1, period, pulse);
    /* 使能設備 */
    rt_pwm_enable(pwm_dev, PWM_DEV_CHANNEL);
    rt_pwm_enable(pwm_dev, 1);
    while (1)
    {
        rt_thread_mdelay(50);
        if (dir)
        {
            pulse += 5000;      /* 從0值開始每次增加5000ns */
        }
        else
        {
            pulse -= 5000;      /* 從最大值開始每次減少5000ns */
        }
        if (pulse >= period)
        {
            dir = 0;
        }
        if (0 == pulse)
        {
            dir = 1;
        }
        /* 設置PWM周期和脈沖寬度 */
        rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, period, pulse);
        rt_pwm_set(pwm_dev, 1, period, abs(period-pulse));
    }
}
/* 導出到 msh 命令列表中 */
MSH_CMD_EXPORT(pwm_led_sample, pwm sample);

pwmled.h

/*
 * Copyright (c) 2006-2021, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author       Notes
 * 2022-07-11     Asus       the first version
 */
#ifndef PWMLED_H_
#define PWMLED_H_

int pwm_led_sample(void);

#endif /* PWMLED_H_ */

保存完是灰色,沒有保存是藍色。

pwm_led_sample導 出 到 msh 命 令 列 表 中,實現pwm8的兩路輸出

4. 下載驗證

1、編譯重構

在這里插入圖片描述

編譯成功

2、下載程序

在這里插入圖片描述

下載成功

3、CMD串口調試

在這里插入圖片描述

然后板載復位,輸入:pwm_led_sample

在這里插入圖片描述

效果如下

請添加圖片描述

這樣我們就可以天馬行空啦!

參考文獻;

【基于 RT-Thread Studio的CPK-RA6M4 開發板環境搭建】

【開發板評測】Renesas RA6M4開發板之PWM呼吸燈

pwm端口是成對存在的,一共有10對

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • PWM
    PWM
    +關注

    關注

    114

    文章

    4935

    瀏覽量

    210472
  • Renesas
    +關注

    關注

    0

    文章

    1755

    瀏覽量

    22405
  • 開發板
    +關注

    關注

    25

    文章

    4560

    瀏覽量

    94880
  • PWM驅動
    +關注

    關注

    0

    文章

    26

    瀏覽量

    1138
  • RA6M4
    +關注

    關注

    0

    文章

    51

    瀏覽量

    389
收藏 人收藏

    評論

    相關推薦

    Renesas RA6M4開發板之I2C(模擬)驅動ssd1306 OLED屏幕】

    Renesas RA6M4開發板之I2C(模擬)驅動ssd1306 OLED屏幕】
    的頭像 發表于 01-11 09:34 ?4062次閱讀
    【<b class='flag-5'>Renesas</b> <b class='flag-5'>RA6M4</b><b class='flag-5'>開發板</b>之I2C(模擬)<b class='flag-5'>驅動</b>ssd1306 OLED屏幕】

    如何對Renesas RA6M4開發板的FLASH模塊進行測評呢

    硬件部分本次測評的板子為基于瑞薩 RA6M4 MCU 開發的 CPK-RA6M4 MCU 評估。支持 TrustZone?的 200 MHz Arm? Cortex?-
    發表于 04-01 16:54

    Renesas RA6M4開發板PWM呼吸燈測評

    在寫這個測評時,已經是提交測評期限的最后一天了 ,最近比較忙沒有太多的精力去好好研究瑞薩的開發板,板載資源還是挺豐富的,主芯片為R7FA6M4AF3CFB,200MHz,Arm Cortex
    發表于 06-17 10:17

    基于RT-Thread Studio的CPK-RA6M4開發板環境搭建方案推薦

    1、基于RT-Thread Studio的CPK-RA6M4開發板環境搭建CPK-RA6M4 開發板特點基于瑞薩RA6M4 MCU
    發表于 07-14 17:45

    Renesas RA6M4開發板Arduino六ADC采樣分析

    —-p614實驗中J13六處模擬信號需要焊接插針,方便調試2.2 軟件配置Renesas RA6M4開發板環境配置參照:【基于 RT-Thread Studio的CPK-RA6M4
    發表于 07-20 11:25

    Renesas CPK-RA6M4開發板SDIO模塊評測

    首先感謝RT-Thread和Renesas給我這次評測的機會,很榮幸成為本次評測的一員。本次評測的開發板Renesas的CPK-RA6M4開發板
    發表于 07-21 11:14

    Renesas RA6M4開發板Serial studio串口交互

    、RA6M4開發板2、USB下載線,個ch340串口和附帶4根母母線,第一串口是UART0端口rx—-p101;tx—-p100,實現S
    發表于 07-28 14:14

    CPK-RA6M4開發板的RTC和WatchDog模塊評測

    本次評測的開發板Renesas的CPK-RA6M4開發板,它是一款Renesas官方基于RA6M4
    發表于 08-22 16:46

    Renesas RA2L1開發板PWM呼吸燈功能設計實現

    1、Renesas RA2L1開發板PWM呼吸燈功能實現  CPK-RA2L1評估
    發表于 10-25 14:48

    Renesas RA2L1開發板PWM評測相關資料介紹

    1、Renesas RA2L1開發板PWM  硬件對PWM支持狀況  板載LED中,支持
    發表于 10-25 14:55

    Renesas RA2L1開發板PWM方波配置相關資料推薦

    1、Renesas RA2L1開發板PWM方波配置  工程的配置  時鐘的配置  本次直接基于官方的例程進行
    發表于 11-02 15:31

    Renesas RA6M4開發板USB-H評測活動

    1、Renesas RA6M4開發板USB-H評測  這次是第二次接觸這塊開發板了,但是還是第一次仔細觀察這塊
    發表于 11-22 16:08

    開發板評測】Renesas RA6M4開發板之SDIO(SDHI)

    本次評測的開發板Renesas的CPK-RA6M4開發板,它是一款Renesas官方基于RA6M4
    的頭像 發表于 12-27 13:15 ?1522次閱讀

    Renesas RA6M4開發板之I2C讀取mpu6050】

    本篇通過Renesas RA6M4開發板采用I2C讀取mpu6050傳感器的角加速度,角速度和溫度示例程序演示。
    的頭像 發表于 01-17 09:07 ?3836次閱讀
    【<b class='flag-5'>Renesas</b> <b class='flag-5'>RA6M4</b><b class='flag-5'>開發板</b>之I2C讀取mpu6050】

    Renesas RA6M4開發板之DHT11溫濕度讀取】

    本篇通過Renesas RA6M4開發板DHT11溫濕度讀取示例程序演示。
    的頭像 發表于 01-18 17:18 ?1375次閱讀
    【<b class='flag-5'>Renesas</b> <b class='flag-5'>RA6M4</b><b class='flag-5'>開發板</b>之DHT11溫濕度讀取】
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>