2024-05-01 09:56 PM - edited 2024-05-01 11:03 PM
I am generating PWM signals for 4 channels using TIM1, with 2 complimentary outputs. The CCR values should come from an array lookup table via DMA.
is this means The DMA trigger by TM1 ?
I am trying to generate a sinewave from the following array
uint16_t sin_table[160]={0, 5, 10, 15, 20, 25, 29, 34, 39, 44, 49, 54, 58, 63, 68,
73, 77, 82, 87, 91, 96, 100, 105, 109, 113, 118, 122, 126, 131, 135, 139,
143, 147, 151, 155, 159, 162, 166, 170, 173, 177, 180, 184, 187, 190, 193,
196, 199, 202, 205, 208, 211, 213, 216, 218, 220, 223, 225, 227, 229, 231,
233, 235, 236, 238, 239, 241, 242, 243, 244, 245, 246, 247, 248, 248, 249,
249, 250, 250, 250, 250, 250, 250, 250, 249, 249, 248, 248, 247, 246, 245,
244, 243, 242, 241, 239, 238, 236, 235, 233, 231, 229, 227, 225, 223, 220,
218, 216, 213, 211, 208, 205, 202, 199, 196, 193, 190, 187, 184, 180, 177,
173, 170, 166, 162, 159, 155, 151, 147, 143, 139, 135, 131, 126, 122, 118,
113, 109, 105, 100, 96, 91, 87, 82, 77, 73, 68, 63, 58, 54, 49, 44, 39, 34, 29, 25, 20, 15, 10, 5};
HAL_TIM_PWM_Start_DMA(&htim1, TIM_CHANNEL_1, (uint32_t *)sin_table, 160);
HAL_TIMEx_PWMN_Start_IT(&htim1, TIM_CHANNEL_1);
HAL_TIM_PWM_Start_DMA(&htim1, TIM_CHANNEL_2, (uint32_t *)sin_table, 160);
HAL_TIMEx_PWMN_Start_IT(&htim1, TIM_CHANNEL_2);
I am not getting the 160 values as per the array value
FPWM is 16KHZ
What wrong with me ?
please help me
Solved! Go to Solution.
2024-05-02 02:00 AM
Aaaaa, come on: set ARR to max. used value in ccr loading -> 255 . Try.
2024-05-01 11:45 PM - edited 2024-05-02 12:38 AM
> What wrong with me ?
I dont know, maybe need a doctor .... :)
+
about your program:
- set DMA in Cube to half-word / half-word transfer data size .
- leave away (for test , now at first ) the //HAL_TIMEx_PWMN_Start_IT(..); lines .
2024-05-02 01:06 AM
Thanks
Now i can get only 12 ON pulses, am giving 160 varying valuse from Lookup table for duty cycle .
62.5μs×160=10000μs =10ms
But not showing 160 pulse ,is it due to small variation in the duty cycle ?
sorry for my bad english
2024-05-02 01:39 AM
Which STM32?
Read out and check/post content if TIM and relevant DMA registers.
JW
PS. Don't @-invoke users unnecessarily.
2024-05-02 01:51 AM
Stm32f070RB Nucleo Board
2024-05-02 02:00 AM
Aaaaa, come on: set ARR to max. used value in ccr loading -> 255 . Try.
2024-05-02 03:54 AM
Nice catch, @AScha.3
JW
2024-05-02 06:11 AM - edited 2024-05-02 06:13 AM
Thanks
When I select Centere Aligined mode1 ,which is not giving output ,when i select Centre Aligned Mode 2 it is working
why ?
2024-05-02 06:21 AM - edited 2024-05-02 06:22 AM
Well, i need to read the rm , to know the difference - so i recommend read it in rm of your cpu. :)
from F303 rm :
2024-05-02 06:38 AM - edited 2024-05-02 06:39 AM
I got expetced pwm But the PWM period is expected is 62.2micro second (Fpwm is 16khz)
but the output shows 124 micro second please see the image
why ?