1 /*
2  * Copyright (c) 2006-2018, RT-Thread Development Team
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  *
6  * Change Logs:
7  * Date           Author       Notes
8  * 2017-09-06     ��Ϊ��       first version
9  */
10 
11 
12 #ifndef __OPENLOONGSON_PWM_H
13 #define __OPENLOONGSON_PWM_H
14 
15 
16 // pwm���Ŷ���
17 #define LS1C_PWM0_GPIO06                    (6)         // gpio06����pwm0
18 #define LS1C_PWM0_GPIO04                    (4)         // gpio04����Ϊpwm0
19 #define LS1C_PWM1_GPIO92                    (92)        // gpio92����pwm1
20 #define LS1C_PWM1_GPIO05                    (5)         // gpio05����Ϊpwm1
21 #define LS1C_PWM2_GPIO52                    (52)        // gpio52����Ϊpwm2
22 #define LS1C_PWM2_GPIO46                    (46)        // gpio46����Ϊpwm2
23 #define LS1C_PWM3_GPIO47                    (47)        // gpio47����Ϊpwm3
24 #define LS1C_PWM3_GPIO53                    (53)        // gpio53����Ϊpwm3
25 // ...����һЩgpio���Ը���Ϊgpio�ģ�����Ҫ�����Լ����
26 
27 
28 
29 // pwm���ƼĴ�����ÿ��bit
30 #define LS1C_PWM_INT_LRC_EN                 (11)        // ������������ж�ʹ��
31 #define LS1C_PWM_INT_HRC_EN                 (10)        // ������������ж�ʹ��
32 #define LS1C_PWM_CNTR_RST                   (7)         // ʹ��CNTR����������
33 #define LS1C_PWM_INT_SR                     (6)         // �ж�״̬λ
34 #define LS1C_PWM_INTEN                      (5)         // �ж�ʹ��λ
35 #define LS1C_PWM_SINGLE                     (4)         // ���������λ
36 #define LS1C_PWM_OE                         (3)         // �������ʹ��
37 #define LS1C_PWM_CNT_EN                     (0)         // ��������ʹ��
38 
39 
40 // Ӳ��pwm����ģʽ
41 enum
42 {
43     // ����ģʽ--�������pwm����
44     PWM_MODE_NORMAL = 0,
45 
46     // ������ģʽ��ÿ�ε���ֻ����һ�����壬���ü���������pwm����
47     PWM_MODE_PULSE
48 };
49 
50 
51 // Ӳ��pwm��Ϣ
52 typedef struct
53 {
54     unsigned int gpio;                      // PWMn���ڵ�gpio
55     unsigned int mode;                      // ����ģʽ(�����塢��������)
56     float duty;                             // pwm��ռ�ձ�
57     unsigned long period_ns;                // pwm����(��λns)
58 }pwm_info_t;
59 
60 
61 
62 
63 /*
64  * ��ʼ��PWMn
65  * @pwm_info PWMn����ϸ��Ϣ
66  */
67 void pwm_init(pwm_info_t *pwm_info);
68 
69 
70 /*
71  * ��ֹpwm
72  * @pwm_info PWMn����ϸ��Ϣ
73  */
74 void pwm_disable(pwm_info_t *pwm_info);
75 
76 
77 
78 /*
79  * ʹ��PWM
80  * @pwm_info PWMn����ϸ��Ϣ
81  */
82 void pwm_enable(pwm_info_t *pwm_info);
83 
84 
85 #endif
86 
87