色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

ESP32C3 LED PWM控制器的使用方法

CHANBAEK ? 來源: FunIO ? 作者: FunIO ? 2023-07-23 11:06 ? 次閱讀

目前對于遙控雙發差速小飛機計劃采用如下架構:

圖片

遙控小飛機框圖

馬達控制要用到 pwm,今天把 esp32c3 的 pwm 跑一下。

簡介

esp32c3 中把 pwm 外設稱為“LED PWM 控制器”,共有 6 個通道,可分配到任意 GPIO 管腳:

  • 四個獨立定時器,可實現小數分頻
  • 波形的周期和占空比可配置,占空比精確度可達 14 位
  • PWM 輸出信號相位可調節
  • 可在 Light-sleep 模式下工作
  • 多種時鐘源選擇,包括 APB 總線時鐘、外置主晶振時鐘
  • 支持硬件自動步進式地增加或減少占空比,可用于 LED RGB 彩色梯度發生器

占空比自動漸變是一個特色功能,用于呼吸燈或其它 LED 燈效會很方便,在官方文檔特意介紹說是 LED PWM 控制器。

使用方法

圖片

LED PWM控制器架構

4 個定時器可獨立配置(可配置時鐘分頻器和計數器最大值),每個定時器內部有一個時基計數器(即基于基準時鐘周期計數的計數器)。每個 PWM 生成器在四個定時器中擇一,以該定時器的計數值為基準生成 PWM 信號。

下圖為定時器和 PWM 生成器的主要功能塊。

圖片

定時器和PWM生成器功能塊

LED PWM 控制器的每個定時器內部都有一個時基計數器。上圖中時基計數器使用的時鐘信號稱為ref_pulsex。所有定時器使用同一個時鐘源信號LEDC_CLKx,該時鐘源信號經分頻器分頻后產生ref_pulsex供計數器使用。

設置 LEDC 通道分三步完成。注意,與 ESP32 不同,ESP32-C3 僅支持設置通道為低速模式。

  1. 定時器配置,指定 PWM 信號的頻率和占空比分辨率。
  2. 通道配置,綁定定時器和輸出 PWM 信號的 GPIO。
  3. 改變 PWM 信號,輸出 PWM 信號來驅動 LED??赏ㄟ^軟件控制或使用硬件漸變功能來改變 LED 的亮度。

另一個可選步驟是可以在漸變終端設置一個中斷。

圖片

LED PWM 控制器 API 的關鍵配置

首次 LEDC 配置時,最好先配置定時器(調用函數 ledc_timer_config()),再配置通道(調用函數 ledc_channel_config())。這樣可以確保 IO 腳上的 PWM 信號自有輸出開始其頻率就是正確的。

定時器配置

要設置定時器,可調用函數 ledc_timer_config(),并將包括如下配置參數的數據結構 ledc_timer_config_t 傳遞給該函數:

  • 速度模式(值必須為 LEDC_LOW_SPEED_MODE
  • 定時器索引 ledc_timer_t
  • PWM 信號頻率(Hz)
  • PWM 占空比分辨率
  • 時鐘源 ledc_clk_cfg_t

頻率和占空比分辨率相互關聯。PWM 頻率越高,占空比分辨率越低,反之亦然。如果 API 不是用來改變 LED 亮度,而是用于其它目的,這種相互關系可能會很重要。時鐘源同樣可以限制 PWM 頻率。選擇的時鐘源頻率越高,可以配置的 PWM 頻率上限就越高。

圖片
esp32c3 ledc時鐘源特性

備注

1.如果 ESP32-C3 的定時器選用了 RC_FAST_CLK 作為其時鐘源,驅動會通過內部校準來得知這個時鐘源的實際頻率。這樣確保了輸出 PWM 信號頻率的精準性。

  1. ESP32-C3 的所有定時器共用一個時鐘源。因此 ESP32-C3 不支持給不同的定時器配置不同的時鐘源。

當一個定時器不再被任何通道所需要時,可以通過調用相同的函數 ledc_timer_config() 來重置這個定時器。此時,函數入參的配置結構體需要指定:

  • ledc_timer_config_t::speed_mode 重置定時器的所屬速度模式 (ledc_mode_t
  • ledc_timer_config_t::timer_num 重置定時器的索引 (ledc_timer_t
  • ledc_timer_config_t::deconfigure 將指定定時器重置必須配置此項為 true

通道配置

定時器設置好后,請配置所需的通道(ledc_channel_t 之一)。配置通道需調用函數 ledc_channel_config()。

通道的配置與定時器設置類似,需向通道配置函數傳遞包括通道配置參數的結構體 ledc_channel_config_t 。

此時,通道會按照 ledc_channel_config_t 的配置開始運作,并在選定的 GPIO 上生成由定時器設置指定的頻率和占空比的 PWM 信號。在通道運作過程中,可以隨時通過調用函數 ledc_stop() 將其暫停。

改變 PWM 占空比

調用函數 ledc_set_duty() 可以設置新的占空比。之后,調用函數 ledc_update_duty() 使新配置生效。要查看當前設置的占空比,可使用 _get_ 函數 ledc_get_duty()。

另外一種設置占空比和其他通道參數的方式是調用 通道配置 一節提到的函數 ledc_channel_config()

傳遞給函數的占空比數值范圍取決于選定的 duty_resolution,應為 0(2 ** duty_resolution) - 1。例如,如選定的占空比分辨率為 10,則占空比的數值范圍為 01023。此時分辨率為 ~0.1%。

圖片
常用配置頻率及精度

實例

/* LEDC (LED Controller) basic example

   This example code is in the Public Domain (or CC0 licensed, at your option.)

   Unless required by applicable law or agreed to in writing, this
   software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
   CONDITIONS OF ANY KIND, either express or implied.
*/
#include < stdio.h >
#include "driver/ledc.h"
#include "esp_err.h"

#define LEDC_OUTPUT_IO          (5) // Define the output GPIO
#define LEDC_DUTY               (4095) // Set duty to 50%. ((2 ** 13) - 1) * 50% = 4095
#define LEDC_FREQUENCY          (5000) // Frequency in Hertz. Set frequency at 5 kHz

static void example_ledc_init(void)
{
    // Prepare and then apply the LEDC PWM timer configuration
    ledc_timer_config_t ledc_timer = {
        .speed_mode       = LEDC_LOW_SPEED_MODE,
        .timer_num        = LEDC_TIMER_0,
        .duty_resolution  = LEDC_TIMER_13_BIT,
        .freq_hz          = LEDC_FREQUENCY,  // Set output frequency at 5 kHz
        .clk_cfg          = LEDC_AUTO_CLK
    };
    ESP_ERROR_CHECK(ledc_timer_config(&ledc_timer));

    // Prepare and then apply the LEDC PWM channel configuration
    ledc_channel_config_t ledc_channel = {
        .speed_mode     = LEDC_LOW_SPEED_MODE,
        .channel        = LEDC_CHANNEL_0,
        .timer_sel      = LEDC_TIMER_0,
        .intr_type      = LEDC_INTR_DISABLE,
        .gpio_num       = LEDC_OUTPUT_IO,
        .duty           = 0, // Set duty to 0%
        .hpoint         = 0
    };
    ESP_ERROR_CHECK(ledc_channel_config(&ledc_channel));
}

void app_main(void)
{
    // Set the LEDC peripheral configuration
    example_ledc_init();
    // Set duty to 50%
    ESP_ERROR_CHECK(ledc_set_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, LEDC_DUTY));
    // Update duty to apply the new value
    ESP_ERROR_CHECK(ledc_update_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0));
}

編譯后運行,捕捉如下波形:

圖片

5kHz 50%占空比

修改下占空比:

ESP_ERROR_CHECK(ledc_set_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, LEDC_DUTY-400));

編譯后運行,捕捉如下波形:

圖片

5kHz 45.1%占空比

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

    關注

    242

    文章

    23295

    瀏覽量

    661251
  • 控制器
    +關注

    關注

    112

    文章

    16382

    瀏覽量

    178303
  • 陀螺儀
    +關注

    關注

    44

    文章

    785

    瀏覽量

    98742
  • PWM
    PWM
    +關注

    關注

    114

    文章

    5190

    瀏覽量

    214109
  • 定時器
    +關注

    關注

    23

    文章

    3250

    瀏覽量

    114910
收藏 人收藏

    評論

    相關推薦

    利用ESP32 PWM信號控制LED的亮度

    在本教程中,我們將討論ESP32 開發板的 PWM(脈沖寬度調制)引腳。ESP32 開發板的所有 GPIO 引腳(Power、GND、Tx、Rx 和 EN 除外)均可用于獲取 PWM
    的頭像 發表于 08-12 15:21 ?1.6w次閱讀
    利用<b class='flag-5'>ESP32</b> <b class='flag-5'>PWM</b>信號<b class='flag-5'>控制</b><b class='flag-5'>LED</b>的亮度

    基于XIAO ESP32C3的智能家居四路控制器設計

    今天小編給大家帶來的是印度的Maker Technolab creation的基于ESP32C3的智能家居四路控制器,該控制器可以通過傳統的手動開關按鈕、紅外遙控、智能手機進行
    的頭像 發表于 01-02 10:53 ?1732次閱讀
    基于XIAO <b class='flag-5'>ESP32C3</b>的智能家居四路<b class='flag-5'>控制器</b>設計

    esp32c3項目采用wss_server例程,把wifi斷開的話esp32c3會重啟,為什么?

    esp32c3項目采用wss_server 例程,運行后連接WiFi正常,但是如果之后把wifi斷開的話,esp32c3會重啟,監視顯示“assert failed: tlsf_free
    發表于 06-06 07:29

    請問ESP32C3怎么作為普通IO口使用?

    請教下ESP32C3怎么作為普通IO口使用?GPIO14~17, 我直接使用配置GPIO的方法都不行,還有哪里需要調整嗎?
    發表于 06-17 08:10

    esp32c3是否能在40mhz運行,功耗是多少?

    你好我想使用esp32c3開發低功耗設備,由外部電子開關控制1小時檢測一次傳感并上傳,考慮到芯片功耗我有幾個疑問; 1:esp32c3 在160mhz 80mhz下的正常工作電流是多
    發表于 06-20 06:17

    【DFRobot Beetle ESP32-C3開發板試用體驗】WEBSOKET—PWMLED

    本帖最后由 華仔stm32 于 2022-6-1 09:57 編輯 【目的】展示ESP32作為web服務的,用ESP32C3寫一個websocket服務,用網頁來實現
    發表于 06-01 08:11

    esp32c3連接wifi和tcp服務速度能否加快,esp8266 速度在5-7s左右,esp32c3能否加快?

    你好我想使用esp32c3開發低功耗設備,由外部電子開關控制1小時檢測一次傳感并上傳,考慮到芯片功耗我有幾個疑問;1:esp32c3 在160mhz 80mhz下的正常工作電流是多少
    發表于 02-17 06:44

    esp32c3不能操縱RTC引腳而只能保持它們或被喚醒嗎?

    我想在存根函數中操作(輸入,輸出)我的ESP32C3的RTC PINS。但我開始懷疑 esp32c3 是否有能力做到這一點……確實,在功能存根中,我嘗試了以下方法但沒有成功:[size=150
    發表于 03-02 08:32

    esp32c3不能操縱RTC引腳而只能保持它們或被喚醒嗎?

    我想在存根函數中操作(輸入,輸出)我的ESP32C3的RTC PINS。但我開始懷疑 esp32c3 是否有能力做到這一點……確實,在功能存根中,我嘗試了以下方法但沒有成功:[size=150
    發表于 04-14 07:30

    深入剖析esp32c3的系統底層啟動

    riscv底層的愛好者來說,跳過ESP-IDF框架,直接像使用單片機一樣去使用ESP32C3更加有意思。本文的目的就是理解ESP32C3的裸機開發流程,像玩單片機一樣去使用這個riscv的mcu。 2.
    的頭像 發表于 07-06 10:38 ?1.3w次閱讀
    深入剖析<b class='flag-5'>esp32c3</b>的系統底層啟動

    在Arduino IDE環境下用ESP32控制多路LED調光

    ESP32帶一個包含16通道LED PWM控制器,可配置以產生不同特性的PWM信號。項目開始之前需要先安裝Arduino IDE,連接妥當后
    發表于 03-17 11:04 ?4626次閱讀

    ESP32 LED控制器

    電子發燒友網站提供《ESP32 LED控制器板.zip》資料免費下載
    發表于 08-05 11:41 ?3次下載
    <b class='flag-5'>ESP32</b> <b class='flag-5'>LED</b><b class='flag-5'>控制器</b>板

    【DFRobot Beetle ESP32-C3開發板試用體驗】WEBSOKET—PWMLED

    的,用ESP32C3寫一個websocket服務,用網頁來實現控制板載LED燈亮度的例子。 【實現思路】1、ESP32建立webserve
    的頭像 發表于 11-28 14:11 ?1579次閱讀
    【DFRobot Beetle <b class='flag-5'>ESP32-C3</b>開發板試用體驗】WEBSOKET—<b class='flag-5'>PWM</b>—<b class='flag-5'>LED</b>

    ESP32 PWM驅動電機

    18 PWM控制B電機 4 A1 15 A2 17 B1 5 B2PWM控制電機方法參考—— PWM
    發表于 03-20 11:37 ?4次下載
    <b class='flag-5'>ESP32</b> <b class='flag-5'>PWM</b>驅動電機

    如何使用ESP32的LEDC進行PWM控制?

    LEDC(LED控制器)是ESP32中的一個功能強大的PWM(脈沖寬度調制)控制器
    發表于 05-19 11:14 ?2564次閱讀
    如何使用<b class='flag-5'>ESP32</b>的LEDC進行<b class='flag-5'>PWM</b><b class='flag-5'>控制</b>?
    主站蜘蛛池模板: 丰满的女朋友 在线播放| 中文字幕亚洲综合小综合在线| 精品人伦一区二区三区潘金莲 | 白白操在线视频| 99精品久久精品一区二区| 中文字幕在线观看| 中文字幕亚洲第一| 综合精品欧美日韩国产在线| 在线中文字幕网站| 在线一本码道高清| 正在播放黑人杂交派对卧槽| 伊人久久青草| 尤物yw193can入口| 中文字幕在线播放视频| 中文字幕一区二区三区在线观看 | 中文字幕一区二区三区在线不卡| 一本大道手机在线看| 亚洲中文字幕无码一久久区| 亚洲人成电影网站| 一本色道久久88综合日韩精品| 亚洲一区二区三区免费看| 亚洲中文在线精品国产| 正在播放国产尾随丝袜美女| 24小时日本在线电影| 97综合久久| xnxnxn69日本| 国产99久久久欧美黑人刘玥| 国产精品青青草原app大全| 国产亚洲精品久久久久5区| 激情内射亚洲一区二区三区爱妻| 久久不射网| 免费观看激烈日板子| 欧美午夜特黄AAAAAA片| 肉伦禁忌小说np| 亚洲AV电影天堂男人的天堂| 亚洲视频中文字幕在线| 最新国产精品福利2020| xnxnxn69日本| 国产视频精品在线偷拍| 久久大香萑太香蕉av| 摸老师丝袜小内内摸出水|