29#define TR_HAL_NUM_PWM 5
42#define PWM_DEFAULT_PIN 1
57 #define CHIP_MEMORY_MAP_PWM0_BASE (0x50026000UL)
58 #define CHIP_MEMORY_MAP_PWM1_BASE (0x50026100UL)
59 #define CHIP_MEMORY_MAP_PWM2_BASE (0x50026200UL)
60 #define CHIP_MEMORY_MAP_PWM3_BASE (0x50026300UL)
61 #define CHIP_MEMORY_MAP_PWM4_BASE (0x50026400UL)
63 #define CHIP_MEMORY_MAP_PWM0_BASE (0x40026000UL)
64 #define CHIP_MEMORY_MAP_PWM1_BASE (0x40026100UL)
65 #define CHIP_MEMORY_MAP_PWM2_BASE (0x40026200UL)
66 #define CHIP_MEMORY_MAP_PWM3_BASE (0x40026300UL)
67 #define CHIP_MEMORY_MAP_PWM4_BASE (0x40026400UL)
83 __IO uint32_t settings;
86 __IO uint32_t counter_end;
89 __IO uint32_t sequence_repeat;
92 __IO uint32_t rseq_num_elements;
93 __IO uint32_t rseq_num_repeats;
94 __IO uint32_t rseq_delay;
97 __IO uint32_t tseq_num_elements;
98 __IO uint32_t tseq_num_repeats;
99 __IO uint32_t tseq_delay;
101 __IO uint32_t reserved1[5];
105 __IO uint32_t dma0_enable;
106 __IO uint32_t dma0_reset;
107 __IO uint32_t dma0_segment_size;
108 __IO uint32_t dma0_start_addr;
142#define PWM0_REGISTERS ((PWM_REGISTERS_T *) CHIP_MEMORY_MAP_PWM0_BASE)
143#define PWM1_REGISTERS ((PWM_REGISTERS_T *) CHIP_MEMORY_MAP_PWM1_BASE)
144#define PWM2_REGISTERS ((PWM_REGISTERS_T *) CHIP_MEMORY_MAP_PWM2_BASE)
145#define PWM3_REGISTERS ((PWM_REGISTERS_T *) CHIP_MEMORY_MAP_PWM3_BASE)
146#define PWM4_REGISTERS ((PWM_REGISTERS_T *) CHIP_MEMORY_MAP_PWM4_BASE)
151#define PWM_CTRL_REG_ENABLE_PWM 0x01
152#define PWM_CTRL_REG_DISABLE_PWM 0x00
153#define PWM_CTRL_REG_ENABLE_CLK 0x02
154#define PWM_CTRL_REG_DISABLE_CLK 0x00
158#define PWM_CTRL_REG_RESET 0x01
164#define PWM_CTRL_REG_RSEQ_FIRST 0x00
165#define PWM_CTRL_REG_TSEQ_FIRST 0x01
168#define PWM_CTRL_REG_ONE_SEQUENCE 0x00
169#define PWM_CTRL_REG_TWO_SEQUENCE 0x02
172#define PWM_CTRL_REG_NON_CONTINUOUS 0x00
173#define PWM_CTRL_REG_CONTINUOUS 0x04
176#define PWM_CTRL_REG_DMA_FORMAT_0 0x00
177#define PWM_CTRL_REG_DMA_FORMAT_1 0x08
180#define PWM_CTRL_REG_UP_COUNTER 0x00
181#define PWM_CTRL_REG_DOWN_AND_UP_COUNTER 0x10
184#define PWM_CTRL_REG_TRIGGER_ON_ENABLE 0x00
185#define PWM_CTRL_REG_TRIGGER_ON_FIFO 0x20
188#define PWM_CTRL_REG_NO_AUTO_TRIGGER 0x00
189#define PWM_CTRL_REG_AUTO_TRIGGER 0x40
192#define PWM_CTRL_REG_MODE_DMA 0x00
193#define PWM_CTRL_REG_MODE_REGISTER 0x80
196#define PWM_CLK_DIV1_1 0x0000
197#define PWM_CLK_DIV1_2 0x0100
198#define PWM_CLK_DIV1_4 0x0200
199#define PWM_CLK_DIV1_8 0x0300
200#define PWM_CLK_DIV1_16 0x0400
201#define PWM_CLK_DIV1_32 0x0500
202#define PWM_CLK_DIV1_64 0x0600
203#define PWM_CLK_DIV1_128 0x0700
204#define PWM_CLK_DIV1_256 0x0800
206#define PWM_CLK_DIV1_MASK 0x0F00
209#define PWM_CTRL_REG_TRIGGER_ON_PWM0 0x0000
210#define PWM_CTRL_REG_TRIGGER_ON_PWM1 0x1000
211#define PWM_CTRL_REG_TRIGGER_ON_PWM2 0x2000
212#define PWM_CTRL_REG_TRIGGER_ON_PWM3 0x3000
213#define PWM_CTRL_REG_TRIGGER_ON_PWM4 0x4000
214#define PWM_CTRL_REG_SELF_TRIGGER 0x7000
219#define PWM_CTRL_REG_DATA_PLAY_1 0x000000
220#define PWM_CTRL_REG_DATA_PLAY_2 0x100000
227#define PWM_CLK_DIV2_MASK 0xFF000000
229#define PWM_CLK_DIV2_1 0x01000000
230#define PWM_CLK_DIV2_2 0x02000000
231#define PWM_CLK_DIV2_4 0x04000000
232#define PWM_CLK_DIV2_8 0x08000000
233#define PWM_CLK_DIV2_16 0x10000000
234#define PWM_CLK_DIV2_32 0x20000000
235#define PWM_CLK_DIV2_64 0x40000000
236#define PWM_CLK_DIV2_128 0x80000000
240#define PWM_CLK_DIV2_NO_VALUE 0x00000000
245#define PWM_DMA_ENABLE 0x00000001
246#define PWM_DMA_DISABLE 0x00000000
250#define PWM_DMA_RESET 0x00000001
299#define PWM_END_COUNT_CLKDIV_1_1MHZ 0x0020
301#define PWM_THRESHHOLD_CLKDIV_1_1MHZ_DUTY_CYCLE_75 0x0018
303#define PWM_THRESHHOLD_CLKDIV_1_1MHZ_DUTY_CYCLE_50 0x0010
305#define PWM_THRESHHOLD_CLKDIV_1_1MHZ_DUTY_CYCLE_25 0x0008
312#define PWM_END_COUNT_CLKDIV_1_500KHZ 0x0040
314#define PWM_THRESHHOLD_CLKDIV_1_500KHZ_DUTY_CYCLE_75 0x0030
316#define PWM_THRESHHOLD_CLKDIV_1_500KHZ_DUTY_CYCLE_50 0x0020
318#define PWM_THRESHHOLD_CLKDIV_1_500KHZ_DUTY_CYCLE_25 0x0010
325#define PWM_END_COUNT_CLKDIV_1_250KHZ 0x0080
327#define PWM_THRESHHOLD_CLKDIV_1_250KHZ_DUTY_CYCLE_75 0x0060
329#define PWM_THRESHHOLD_CLKDIV_1_250KHZ_DUTY_CYCLE_50 0x0040
331#define PWM_THRESHHOLD_CLKDIV_1_250KHZ_DUTY_CYCLE_25 0x0020
334#define MINIMUM_END_COUNT_VALUE 4
335#define MAXIMUM_END_COUNT_VALUE 0x7FFF
338#define MINIMUM_THRESHHOLD_VALUE 4
339#define MAXIMUM_THRESHHOLD_VALUE 0x7FFF
374#define DEFAULT_PWM_CONFIG \
376 .pin_to_use = (tr_hal_gpio_pin_t) { PWM_DEFAULT_PIN }, \
377 .clock_to_use = TR_HAL_PWM_CLK_SELECT_DEFAULT, \
378 .clock_divider = TR_HAL_PWM_CLOCK_DIVIDER_1, \
379 .end_count = PWM_END_COUNT_CLKDIV_1_500KHZ, \
380 .threshhold = PWM_THRESHHOLD_CLKDIV_1_500KHZ_DUTY_CYCLE_75,\
tr_hal_pwm_clk_select_t
Definition T32CM11_pwm.h:236
tr_hal_pwm_clk_div_t
Definition T32CM11_pwm.h:218
tr_hal_pwm_id_t
Definition T32CM11_pwm.h:31
@ TR_HAL_PWM_CLK_SELECT_DEFAULT
Definition T32CM11_pwm.h:238
@ TR_HAL_PWM_CLK_SELECT_PER_CLK
Definition T32CM11_pwm.h:237
@ TR_HAL_PWM_CLOCK_DIVIDER_128
Definition T32CM11_pwm.h:226
@ TR_HAL_PWM_CLOCK_DIVIDER_256
Definition T32CM11_pwm.h:227
@ TR_HAL_PWM_CLOCK_DIVIDER_1
Definition T32CM11_pwm.h:219
@ TR_HAL_PWM_CLOCK_DIVIDER_32
Definition T32CM11_pwm.h:224
@ TR_HAL_PWM_CLOCK_DIVIDER_4
Definition T32CM11_pwm.h:221
@ TR_HAL_PWM_CLOCK_DIVIDER_2
Definition T32CM11_pwm.h:220
@ TR_HAL_PWM_CLOCK_DIVIDER_64
Definition T32CM11_pwm.h:225
@ TR_HAL_PWM_CLOCK_DIVIDER_8
Definition T32CM11_pwm.h:222
@ TR_HAL_PWM_CLOCK_DIVIDER_16
Definition T32CM11_pwm.h:223
@ PWM_4_ID
Definition T32CM11_pwm.h:36
@ PWM_3_ID
Definition T32CM11_pwm.h:35
@ PWM_0_ID
Definition T32CM11_pwm.h:32
@ PWM_1_ID
Definition T32CM11_pwm.h:33
@ PWM_2_ID
Definition T32CM11_pwm.h:34
PWM_REGISTERS_T * tr_hal_pwm_get_register_address(tr_hal_pwm_id_t pwm_id)
@ TR_HAL_PWM_CLK_SELECT_SLOW_CLK
Definition T32CZ20_pwm.h:280
@ TR_HAL_PWM_CLK_SELECT_RCO_1M
Definition T32CZ20_pwm.h:279
@ TR_HAL_PWM_CLK_SELECT_HCLK
Definition T32CZ20_pwm.h:277
the struct we use so we can address registers using field names
Definition T32CM11_pwm.h:70
__IO uint32_t dma1_settings
Definition T32CZ20_pwm.h:119
__IO uint32_t interrupt_status
Definition T32CM11_pwm.h:123
__IO uint32_t reg_data_0_save
Definition T32CZ20_pwm.h:132
__IO uint32_t dma1_addr_status
Definition T32CZ20_pwm.h:121
__IO uint32_t interrupt_mask
Definition T32CM11_pwm.h:122
__IO uint32_t reserved4[8]
Definition T32CM11_pwm.h:118
__IO uint32_t dma0_settings
Definition T32CZ20_pwm.h:109
__IO uint32_t dma0_status
Definition T32CZ20_pwm.h:112
__IO uint32_t dma1_enable
Definition T32CM11_pwm.h:110
__IO uint32_t dma1_reset
Definition T32CM11_pwm.h:111
__IO uint32_t reserved2[2]
Definition T32CM11_pwm.h:105
__IO uint32_t dma1_status
Definition T32CZ20_pwm.h:122
__IO uint32_t dma1_segment_size
Definition T32CM11_pwm.h:112
__IO uint32_t dma1_start_addr
Definition T32CM11_pwm.h:113
__IO uint32_t dma0_addr_status
Definition T32CZ20_pwm.h:111
__IO uint32_t interrupt_clear
Definition T32CM11_pwm.h:121
__IO uint32_t reg_data_1_save
Definition T32CZ20_pwm.h:133
__IO uint32_t reserved3[2]
Definition T32CM11_pwm.h:114
pin type
Definition tr_hal_platform.h:23
Definition T32CM11_pwm.h:302