|
|
|
|
/*
|
|
|
|
|
* Copyright (c) 2006-2018, RT-Thread Development Team
|
|
|
|
|
*
|
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
*
|
|
|
|
|
* Change Logs:
|
|
|
|
|
* Date Author Notes
|
|
|
|
|
* 2017-09-06 <EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD> first version
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef __OPENLOONGSON_PWM_H
|
|
|
|
|
#define __OPENLOONGSON_PWM_H
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// pwm<EFBFBD><EFBFBD><EFBFBD>Ŷ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
#define LS1C_PWM0_GPIO06 (6) // gpio06<EFBFBD><EFBFBD><EFBFBD><EFBFBD>pwm0
|
|
|
|
|
#define LS1C_PWM0_GPIO04 (4) // gpio04<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊpwm0
|
|
|
|
|
#define LS1C_PWM1_GPIO92 (92) // gpio92<EFBFBD><EFBFBD><EFBFBD><EFBFBD>pwm1
|
|
|
|
|
#define LS1C_PWM1_GPIO05 (5) // gpio05<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊpwm1
|
|
|
|
|
#define LS1C_PWM2_GPIO52 (52) // gpio52<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊpwm2
|
|
|
|
|
#define LS1C_PWM2_GPIO46 (46) // gpio46<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊpwm2
|
|
|
|
|
#define LS1C_PWM3_GPIO47 (47) // gpio47<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊpwm3
|
|
|
|
|
#define LS1C_PWM3_GPIO53 (53) // gpio53<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊpwm3
|
|
|
|
|
// ...<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һЩgpio<EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><EFBFBD><EFBFBD>Ϊgpio<EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// pwm<EFBFBD><EFBFBD><EFBFBD>ƼĴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><EFBFBD>bit
|
|
|
|
|
#define LS1C_PWM_INT_LRC_EN (11) // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD>
|
|
|
|
|
#define LS1C_PWM_INT_HRC_EN (10) // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD>
|
|
|
|
|
#define LS1C_PWM_CNTR_RST (7) // ʹ<EFBFBD><EFBFBD>CNTR<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
#define LS1C_PWM_INT_SR (6) // <EFBFBD>ж<EFBFBD>״̬λ
|
|
|
|
|
#define LS1C_PWM_INTEN (5) // <EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD>λ
|
|
|
|
|
#define LS1C_PWM_SINGLE (4) // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
|
|
|
|
#define LS1C_PWM_OE (3) // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>
|
|
|
|
|
#define LS1C_PWM_CNT_EN (0) // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Ӳ<EFBFBD><EFBFBD>pwm<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|
|
|
|
enum
|
|
|
|
|
{
|
|
|
|
|
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ--<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pwm<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
PWM_MODE_NORMAL = 0,
|
|
|
|
|
|
|
|
|
|
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD>ÿ<EFBFBD>ε<EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>壬<EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>pwm<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
PWM_MODE_PULSE
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Ӳ<EFBFBD><EFBFBD>pwm<EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
typedef struct
|
|
|
|
|
{
|
|
|
|
|
unsigned int gpio; // PWMn<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD>gpio
|
|
|
|
|
unsigned int mode; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>塢<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
|
|
|
|
float duty; // pwm<EFBFBD><EFBFBD>ռ<EFBFBD>ձ<EFBFBD>
|
|
|
|
|
unsigned long period_ns; // pwm<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<EFBFBD><EFBFBD>λns)
|
|
|
|
|
}pwm_info_t;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>PWMn
|
|
|
|
|
* @pwm_info PWMn<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
*/
|
|
|
|
|
void pwm_init(pwm_info_t *pwm_info);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* <EFBFBD><EFBFBD>ֹpwm
|
|
|
|
|
* @pwm_info PWMn<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
*/
|
|
|
|
|
void pwm_disable(pwm_info_t *pwm_info);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* ʹ<EFBFBD><EFBFBD>PWM
|
|
|
|
|
* @pwm_info PWMn<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><EFBFBD>Ϣ
|
|
|
|
|
*/
|
|
|
|
|
void pwm_enable(pwm_info_t *pwm_info);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|