ESP 8266 PWM 인터페이스 참조
PWM 의 특성 은 다음 과 같다.
1.2 실현 방식
ESP 8266 시스템 은 FRC 1 타이머 에 NMI 를 마 운 트 함으로써 GPIO 포트 에 여러 개의 PWM 신 호 를 출력 하 는 최 적 화 된 소프트웨어 알고리즘 을 제공 했다.PWM 의 시 계 는 고속 시스템 시계 에서 제공 되 는데 그 주파 수 는 80MHz 에 달한다.PWM 은 프 리 젠 테 이 션 스크린 16 분 주파 수 를 통 해 시계 주파 수 를 5MHz 로 입력 한다.PWM 은 FRC 1 을 통 해 굵게 시간 을 조정 하고 고속 시스템 시계의 미세 조정 과 결합 하여 해상 도 를 45ns 까지 높 일 수 있다.
설명: NMI 는 최고 인 터 럽 트 우선 순 위 를 가지 고 있어 PWM 출력 파형 의 정확 도 를 확보 할 수 있다.
1.3 설정 설명
1.4 매개 변수 설명
2.1 코드 예제
#ifndef __PWM_H__
#define __PWM_H__
#define PWM_CHANNEL_NUM_MAX 8 // 8 PWM
struct pwm_single_param // PWM
{
uint16 gpio_set; // GPIO
uint16 gpio_clear; // GPIO
uint32 h_time; // FRC1_LOAD
};
struct pwm_param // PWM
{
uint32 period; // PWM
uint32 freq; // PWM
uint32 duty[PWM_CHANNEL_NUM_MAX]; // PWM
};
void pwm_init(uint32 period, uint32 *duty, uint32 pwm_channel_num, uint32(*pin_info_list)[3]);
void pwm_start(void);
void pwm_set_duty(uint32 duty, uint8 channel);
uint32 pwm_get_duty(uint8 channel);
void pwm_set_freq(uint32 period);
uint32 pwm_get_freq(void);
2.2 인터페이스 설명
:pwm_init
:PWM
:pwm_init(uint32 freq, uint32 *duty, uint32 pwm_channel_num, uint32 (*pin_info_list)[3]);
:PWM GPIO,
:
uint32 freq: PWM
uint32 *duty:
uint32 pwm_channel_num: PWM 。
uint32 (*pin_info_list)[3]: PWM GPIO , n*3 。 GPIO , PIN IO , GPIO 。
: 3 PWM。
uint32 io_info[][3] =
{{PWM_0_OUT_IO_MUX, PWM_0_OUT_IO_FUNC, PWM_0_OUT_IO_NUM},
{PWM_1_OUT_IO_MUX, PWM_1_OUT_IO_FUNC, PWM_1_OUT_IO_NUM},
{PWM_2_OUT_IO_MUX, PWM_2_OUT_IO_FUNC, PWM_2_OUT_IO_NUM}};
pwm_init(light_param.pwm_period, light_param.pwm_duty, 2, io_info);
: 。 。
:
:pwm_set_period
: PWM
:pwm_set_period(uint32 period)
: PWM , us。
:1KHz PWM, 1000us.
:uint32 period:PWM
: pwm_start() 。
:
:pwm_set_duty
: PWM
:pwm_set_duty(uint32 duty, uint8 channel);
: PWM 。 PWM ,duty PWM 。 :period * 1000 / 45 ( 1KHz :duty 0 ~ 22222)。
:uint32 duty: , (duty * 45) / (period * 1000).
uint8 channel: PWM , PWM_CHANNEL 。
: pwm_start() 。
:
:pwm_get_period
: PWM
:pwm_get_period(void)
:
:PWM , us.
:pwm_get_duty
: channel PWM duty 。
:pwm_get_duty(uint8 channel)
:uint8 channel: PWM , PWM_CHANNEL
: pwm_start() 。
:channel , (duty * 45) / (period * 1000)。
:pwm_start
:PWM
:pwm_start(void);
:
:PWM , pwm_start()
:
3. 사용자 정의 채널
사용 자 는 GPIO 4 가 PWM 으로 출력 되 는 네 번 째 채널 을 추가 할 수 있 으 며 설정 절 차 는 다음 과 같다.
1. 。
uint32 io_info[][3] =
{
{PWM_0_OUT_IO_MUX, PWM_0_OUT_IO_FUNC, PWM_0_OUT_IO_NUM},
{PWM_1_OUT_IO_MUX, PWM_1_OUT_IO_FUNC, PWM_1_OUT_IO_NUM},
{PWM_2_OUT_IO_MUX, PWM_2_OUT_IO_FUNC, PWM_2_OUT_IO_NUM},
{PWM_3_OUT_IO_MUX, PWM_3_OUT_IO_FUNC, PWM_3_OUT_IO_NUM},
{PWM_4_OUT_IO_MUX, PWM_4_OUT_IO_FUNC, PWM_4_OUT_IO_NUM},
};
pwm_init(light_param.pwm_period, light_param.pwm_duty, PWM_CHANNEL, io_info);
2. user_light.h
#define PWM_0_OUT_IO_MUX PERIPHS_IO_MUX_MTDI_U
#define PWM_0_OUT_IO_NUM 12
#define PWM_0_OUT_IO_FUNC FUNC_GPIO12
#define PWM_1_OUT_IO_MUX PERIPHS_IO_MUX_MTDO_U
#define PWM_1_OUT_IO_NUM 15
#define PWM_1_OUT_IO_FUNC FUNC_GPIO15
#define PWM_2_OUT_IO_MUX PERIPHS_IO_MUX_MTCK_U
#define PWM_2_OUT_IO_NUM 13
#define PWM_2_OUT_IO_FUNC FUNC_GPIO13
#define PWM_3_OUT_IO_MUX PERIPHS_IO_MUX_GPIO4_U
#define PWM_3_OUT_IO_NUM 4
#define PWM_3_OUT_IO_FUNC FUNC_GPIO4
#define PWM_4_OUT_IO_MUX PERIPHS_IO_MUX_GPIO5_U
#define PWM_4_OUT_IO_NUM 5
#define PWM_4_OUT_IO_FUNC FUNC_GPIO5
#define PWM_CHANNEL 5
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ESP8266 시작GND RXD TXD(I02)는 PC와의 통신에 사용합니다. PC와의 커뮤니케이션을 위해 USB 단자와 TTL 시리얼 케이블(예: ) 등을 사용하여 연결합니다. 최초의 Flash 메모리의 내용은 비어 있습니다. 프로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.