68#define PWM_REG_CHN_OFFSET 0x20
70#define PWM_CLK_SRC_SHIFT 0x7
71#define PWM_CLK_SRC_WIDTH 0x2
73#define PWM_DIV_M_SHIFT 0x0
74#define PWM_DIV_M_WIDTH 0x4
76#define PWM_PRESCAL_SHIFT 0x0
77#define PWM_PRESCAL_WIDTH 0x8
79#define PWM_ACT_CYCLES_SHIFT 0x0
80#define PWM_ACT_CYCLES_WIDTH 0x10
82#define PWM_PERIOD_CYCLES_SHIFT 0x10
83#define PWM_PERIOD_CYCLES_WIDTH 0x10
85#define PWM_CLK_GATING_SHIFT 0x0
86#define PWM_CLK_GATING_WIDTH 0x1
88#define PWM_EN_CONTROL_SHIFT 0x0
89#define PWM_EN_CONTORL_WIDTH 0x1
91#define PWM_ACT_STA_SHIFT 0x8
92#define PWM_ACT_STA_WIDTH 0x1
94#define PWM_DZ_EN_SHIFT 0x0
95#define PWM_DZ_EN_WIDTH 0x1
97#define PWM_PDZINTV_SHIFT 0x8
98#define PWM_PDZINTV_WIDTH 0x8
100#define PWM_PULSE_SHIFT 0x9
101#define PWM_PULSE_WIDTH 0x1
103#define PWM_PULSE_NUM_SHIFT 0x10
104#define PWM_PULSE_NUM_WIDTH 0x10
106#define PWM_PULSE_START_SHIFT 0xa
107#define PWM_PULSE_START_WIDTH 0x1
109#define PWM_CLK_BYPASS_SHIFT 0x10
111#define TIME_1_SECOND 1000000000
112#define PWM_BIND_NUM (2)
u32_t uint32_t
Definition stdint.h:13
u8_t uint8_t
Definition stdint.h:7
PWM channel configuration.
Definition sys-pwm.h:169
uint32_t dead_time
Dead time (in nanoseconds) between signal transitions.
Definition sys-pwm.h:172
sunxi_pwm_channel_mode_t channel_mode
The mode of the PWM channel.
Definition sys-pwm.h:173
uint32_t bind_channel
The bind channel ID for multi-channel synchronization.
Definition sys-pwm.h:171
gpio_mux_t pin
GPIO pin used for the PWM signal.
Definition sys-pwm.h:170
PWM clock source configuration.
Definition sys-pwm.h:182
uint32_t clk_src_hosc
The oscillator clock source.
Definition sys-pwm.h:183
uint32_t clk_src_apb
The APB clock source.
Definition sys-pwm.h:184
PWM configuration parameters.
Definition sys-pwm.h:210
sunxi_pwm_polarity_t polarity
The polarity of the PWM signal.
Definition sys-pwm.h:213
uint32_t duty_ns
The duty cycle duration in nanoseconds.
Definition sys-pwm.h:211
sunxi_pwm_mode_t pwm_mode
The mode of operation for the PWM signal.
Definition sys-pwm.h:214
uint32_t pluse_count
The number of pulses in pulse mode operation.
Definition sys-pwm.h:215
uint32_t period_ns
The total period duration in nanoseconds.
Definition sys-pwm.h:212
Main PWM configuration structure.
Definition sys-pwm.h:193
bool status
The operational status of the PWM module (enabled/disabled).
Definition sys-pwm.h:201
sunxi_pwm_clk_src_t clk_src
The clock sources for the PWM module.
Definition sys-pwm.h:200
sunxi_clk_t pwm_clk
The main clock for the PWM module.
Definition sys-pwm.h:199
sunxi_clk_t pwm_bus_clk
Clock for the PWM bus.
Definition sys-pwm.h:198
uint32_t base
The base address of the PWM hardware module.
Definition sys-pwm.h:194
uint8_t id
The PWM module ID.
Definition sys-pwm.h:195
sunxi_pwm_channel_t * channel
Pointer to the array of PWM channels.
Definition sys-pwm.h:196
uint32_t channel_size
The number of PWM channels.
Definition sys-pwm.h:197
struct sunxi_pwm_channel sunxi_pwm_channel_t
PWM channel configuration.
sunxi_pwm_source_t
PWM clock source.
Definition sys-pwm.h:145
@ PWM_CLK_SRC_OSC
Clock source is the oscillator.
Definition sys-pwm.h:146
@ PWM_CLK_SRC_APB
Clock source is the APB bus.
Definition sys-pwm.h:147
void sunxi_pwm_deinit(sunxi_pwm_t *pwm)
Deinitialize the PWM instance.
Definition sys-pwm.c:600
sunxi_pwm_channel_mode_t
PWM channel modes.
Definition sys-pwm.h:157
@ PWM_CHANNEL_BIND
Multi-channel bind mode.
Definition sys-pwm.h:159
@ PWM_CHANNEL_SINGLE
Single-channel PWM mode.
Definition sys-pwm.h:158
struct sunxi_pwm_config sunxi_pwm_config_t
PWM configuration parameters.
sunxi_pwm_mode_t
PWM operation modes.
Definition sys-pwm.h:121
@ PWM_MODE_PLUSE
PWM operates in pulse mode.
Definition sys-pwm.h:123
@ PWM_MODE_CYCLE
PWM operates in cycle mode.
Definition sys-pwm.h:122
sunxi_pwm_reg_offset_t
Definition sys-pwm.h:20
@ PWM_PER
Definition sys-pwm.h:48
@ PWM_PPCNTR
Definition sys-pwm.h:60
@ PWM_CFLR
Definition sys-pwm.h:63
@ PWM_PCCR45
Definition sys-pwm.h:29
@ PWM_PDZCR23
Definition sys-pwm.h:40
@ PWM_CCR
Definition sys-pwm.h:61
@ PWM_PDZCR_BASE
Definition sys-pwm.h:38
@ PWM_PCNTR
Definition sys-pwm.h:59
@ PWM_PDZCRab
Definition sys-pwm.h:44
@ PWM_PCCR23
Definition sys-pwm.h:28
@ PWM_PDZCR89
Definition sys-pwm.h:43
@ PWM_PDZCRef
Definition sys-pwm.h:46
@ PWM_PDZCR67
Definition sys-pwm.h:42
@ PWM_PCCR_BASE
Definition sys-pwm.h:26
@ PWM_PCCRcd
Definition sys-pwm.h:33
@ PWM_PCR
Definition sys-pwm.h:57
@ PWM_PGR3
Definition sys-pwm.h:53
@ PWM_PISR
Definition sys-pwm.h:22
@ PWM_PDZCR45
Definition sys-pwm.h:41
@ PWM_PCCR67
Definition sys-pwm.h:30
@ PWM_CISR
Definition sys-pwm.h:24
@ PWM_CIER
Definition sys-pwm.h:23
@ PWM_PCCRab
Definition sys-pwm.h:32
@ PWM_CER
Definition sys-pwm.h:55
@ PWM_PCCRef
Definition sys-pwm.h:34
@ PWM_PPR
Definition sys-pwm.h:58
@ PWM_PGR2
Definition sys-pwm.h:52
@ PWM_PGR0
Definition sys-pwm.h:50
@ PWM_PGR1
Definition sys-pwm.h:51
@ PWM_VR
Definition sys-pwm.h:65
@ PWM_PDZCRcd
Definition sys-pwm.h:45
@ PWM_PCCR89
Definition sys-pwm.h:31
@ PWM_CRLR
Definition sys-pwm.h:62
@ PWM_PIER
Definition sys-pwm.h:21
@ PWM_PDZCR01
Definition sys-pwm.h:39
@ PWM_PCGR
Definition sys-pwm.h:36
@ PWM_PCCR01
Definition sys-pwm.h:27
void sunxi_pwm_init(sunxi_pwm_t *pwm)
Initialize the PWM instance.
Definition sys-pwm.c:586
sunxi_pwm_polarity_t
PWM signal polarity.
Definition sys-pwm.h:133
@ PWM_POLARITY_NORMAL
Normal PWM signal polarity.
Definition sys-pwm.h:135
@ PWM_POLARITY_INVERSED
Inverted PWM signal polarity.
Definition sys-pwm.h:134
struct sunxi_pwm sunxi_pwm_t
Main PWM configuration structure.
int sunxi_pwm_release(sunxi_pwm_t *pwm, int channel)
Release the PWM channel.
Definition sys-pwm.c:648
int sunxi_pwm_set_config(sunxi_pwm_t *pwm, int channel, sunxi_pwm_config_t *config)
Set configuration for a PWM channel.
Definition sys-pwm.c:618
struct sunxi_pwm_clk_src sunxi_pwm_clk_src_t
PWM clock source configuration.