0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

【Renesas RA6M4開發(fā)板之兩路PWM驅(qū)動】

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

1.0 PWM 簡介

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

在這里插入圖片描述

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

1.1 原理

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

在這里插入圖片描述

1.2 訪問 PWM 設備

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

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

2. RT-theard配置

2.1 硬件需求

實現(xiàn)功能:

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

1、RA6M4開發(fā)板

在這里插入圖片描述

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

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

在這里插入圖片描述

在這里插入圖片描述

硬件到此配置完成

2.2 軟件配置

Renesas RA6M4開發(fā)板環(huán)境配置參照:【基于 RT-Thread Studio的CPK-RA6M4 開發(fā)板環(huán)境搭建】

1、新建項目RA6M4-pwm工程

在這里插入圖片描述

2、查閱RA6M4硬件資源,相關(guān)資料,在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 同步更新剛剛配置的文件

圖形化配置已經(jīng)完成,接下來配置相關(guān)代碼

3. 代碼分析

1、修改hal_entry.c函數(shù),屏蔽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 命令到控制終端
 * 命令調(diào)用格式: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 命 令 列 表 中,實現(xiàn)pwm8的兩路輸出

4. 下載驗證

1、編譯重構(gòu)

在這里插入圖片描述

編譯成功

2、下載程序

在這里插入圖片描述

下載成功

3、CMD串口調(diào)試

在這里插入圖片描述

然后板載復位,輸入:pwm_led_sample

在這里插入圖片描述

效果如下

請?zhí)砑訄D片描述

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

參考文獻;

【基于 RT-Thread Studio的CPK-RA6M4 開發(fā)板環(huán)境搭建】

【開發(fā)板評測】Renesas RA6M4開發(fā)板之PWM呼吸燈

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

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

    關(guān)注

    114

    文章

    5186

    瀏覽量

    213936
  • Renesas
    +關(guān)注

    關(guān)注

    0

    文章

    1757

    瀏覽量

    22756
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5050

    瀏覽量

    97468
  • PWM驅(qū)動
    +關(guān)注

    關(guān)注

    0

    文章

    28

    瀏覽量

    1204
  • RA6M4
    +關(guān)注

    關(guān)注

    0

    文章

    51

    瀏覽量

    450
收藏 人收藏

    評論

    相關(guān)推薦

    開發(fā)板評測】Renesas RA6M4開發(fā)板ESP8266_AT

    串口也是比較常用的外設,應用也比較簡單,具體的外設功能描述也不多講什么了。下面只講如何使用CPK-RA6M4開發(fā)板通過串口連接esp8266(esp-01s)使用AT命令聯(lián)網(wǎng)。 評測所需要的環(huán)境
    的頭像 發(fā)表于 12-30 12:35 ?2385次閱讀
    【<b class='flag-5'>開發(fā)板</b>評測】<b class='flag-5'>Renesas</b> <b class='flag-5'>RA6M4</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>之</b>ESP8266_AT

    Renesas RA6M4開發(fā)板I2C(模擬)驅(qū)動ssd1306 OLED屏幕】

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

    Renesas RA6M4開發(fā)板I2C讀取BMP180氣壓溫度】

    本篇通過Renesas RA6M4開發(fā)板采用I2C讀取BMP180傳感器的氣壓溫度示例程序演示。
    的頭像 發(fā)表于 01-16 09:29 ?4009次閱讀
    【<b class='flag-5'>Renesas</b> <b class='flag-5'>RA6M4</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>之</b>I2C讀取BMP180氣壓溫度】

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

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

    Renesas RA6M4開發(fā)板Arduino六ADC采樣分析

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

    Renesas CPK-RA6M4開發(fā)板SDIO模塊評測

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

    Renesas RA6M4開發(fā)板Serial studio串口交互

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

    Renesas RA6M4開發(fā)板USB-H評測活動

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

    RA6M4驅(qū)動5寸屏顯示PC運行狀態(tài)并進行監(jiān)控源碼

    RA6M4驅(qū)動5寸屏顯示PC運行狀態(tài)并進行監(jiān)控源碼?;谌鹚_ CPK-RA6M4 開發(fā)板。
    發(fā)表于 09-26 14:53 ?0次下載

    開發(fā)板評測】Renesas RA6M4開發(fā)板FLASH

    硬件部分 本次測評的板子為基于瑞薩RA6M4 MCU開發(fā)的 CPK-RA6M4 MCU 評估。 ● 支持 TrustZone ? 的200 MHz Arm Cortex -
    的頭像 發(fā)表于 12-16 18:25 ?1523次閱讀

    開發(fā)板評測】Renesas RA6M4開發(fā)板CAN

    一、開箱 心心念念的開發(fā)板終于到了,外包裝很簡潔。打開后,除開發(fā)板外,還有《評估快速入門》和《基礎(chǔ)知識》本書,通過書中的內(nèi)容可以快速上手CPK-
    的頭像 發(fā)表于 12-20 12:10 ?1487次閱讀

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

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

    基于RT-Thread Studio的CPK-RA6M4開發(fā)板環(huán)境搭建

    基于瑞薩RA6M4 MCU開發(fā)的CPK-RA6M4 MCU評估 ,通過 靈活配置軟件包和IDE,可幫助用戶對RA6M4 MCU 群組的特性
    的頭像 發(fā)表于 01-10 14:56 ?1338次閱讀
    基于RT-Thread Studio的CPK-<b class='flag-5'>RA6M4</b><b class='flag-5'>開發(fā)板</b>環(huán)境搭建

    Renesas RA6M4開發(fā)板I2C讀取mpu6050】

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

    Renesas RA6M4開發(fā)板DHT11溫濕度讀取】

    本篇通過Renesas RA6M4開發(fā)板DHT11溫濕度讀取示例程序演示。
    的頭像 發(fā)表于 01-18 17:18 ?1688次閱讀
    【<b class='flag-5'>Renesas</b> <b class='flag-5'>RA6M4</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>之</b>DHT11溫濕度讀取】