X-CUBE-SPN11 for X-NUCLEO-IHM11M1: stm32F401_nucleo_ihm11m1.c Source File

X-CUBE-SPN11 for X-NUCLEO-IHM11M1

stm32F401_nucleo_ihm11m1.c
Go to the documentation of this file.
1 /**
2  ******************************************************************************
3  * @file stm32F401_nucleo_ihm11m1.c
4  * @author IPC
5  * @version V0
6  * @date 10/07/2016
7  * @brief This file provides the interface between the MC-lib and STM Nucleo F401xx
8  ******************************************************************************
9  *
10  * COPYRIGHT(c) 2015 STMicroelectronics
11  *
12  * Redistribution and use in source and binary forms, with or without modification,
13  * are permitted provided that the following conditions are met:
14  * 1. Redistributions of source code must retain the above copyright notice,
15  * this list of conditions and the following disclaimer.
16  * 2. Redistributions in binary form must reproduce the above copyright notice,
17  * this list of conditions and the following disclaimer in the documentation
18  * and/or other materials provided with the distribution.
19  * 3. Neither the name of STMicroelectronics nor the names of its contributors
20  * may be used to endorse or promote products derived from this software
21  * without specific prior written permission.
22  *
23  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
24  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
27  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
29  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
31  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33  *
34  ******************************************************************************
35  */
36 
38  #include "6Step_Lib.h"
39  #include "X-NUCLEO-IHM11M1.h"
40 
41  extern SIXSTEP_Base_InitTypeDef SIXSTEP_parameters; /*!< Main SixStep structure*/
42  extern SIXSTEP_PI_PARAM_InitTypeDef_t PI_parameters; /*!< SixStep PI regulator structure*/
44 
45  extern void MC_ADCx_SixStep_Bemf(void);
46  extern void MC_TIMx_SixStep_timebase(void);
47  extern void MC_SysTick_SixStep_MediumFrequencyTask(void);
48 
49 /** @addtogroup MIDDLEWARES MIDDLEWARES
50  * @brief Middlewares Layer
51  * @{
52  */
53 
54 
55 /** @addtogroup MC_6-STEP_LIB MC_6-STEP_LIB
56  * @brief Motor Control driver
57  * @{
58  */
59 
60 /** @addtogroup stm32F401_nucleo_ihm11m1 stm32F401_nucleo_ihm11m1
61  * @brief Interface file for STM32F401 and Motor Control Library configuration
62  * @{
63  */
64 
65 /** @defgroup MC_SixStep_ADC_Channel MC_SixStep_ADC_Channel
66  * @{
67  * @brief Select the new ADC Channel
68 */
69 /**
70  * @brief Select the new ADC Channel
71  * @param adc_ch
72  * @retval None
73 */
74  void MC_SixStep_ADC_Channel(uint32_t adc_ch)
75  {
76  __HAL_ADC_DISABLE(&ADCx);
77  /* Clear the old SQx bits for the selected rank */
78  ADCx.Instance->SQR3 &= ~ADC_SQR3_RK(ADC_SQR3_SQ1, 1);
79  /* Set the SQx bits for the selected rank */
80  ADCx.Instance->SQR3 |= ADC_SQR3_RK(adc_ch, 1);
81  __HAL_ADC_ENABLE(&ADCx);
82  }
83 /**
84  * @}
85  */
86 
87 /** @defgroup MC_SixStep_Nucleo_Init MC_SixStep_Nucleo_Init
88  * @{
89  * @brief Init the STM32 register
90 */
91 /**
92  * @brief Init the STM32 register
93  * @retval None
94 */
96  {
97  TIM_ClearInputConfigTypeDef sClearInputConfig;
98  ADC_ChannelConfTypeDef sConfig;
99 
100  /******************** ETR CONFIGURATION **************************P*********/
101  sClearInputConfig.ClearInputState = 1;
102  sClearInputConfig.ClearInputSource = TIM_CLEARINPUTSOURCE_ETR;
103  sClearInputConfig.ClearInputPolarity = TIM_CLEARINPUTPOLARITY_NONINVERTED;
104  sClearInputConfig.ClearInputPrescaler = TIM_CLEARINPUTPRESCALER_DIV1;
105  sClearInputConfig.ClearInputFilter = 0;
106  HAL_TIM_ConfigOCrefClear(&HF_TIMx, &sClearInputConfig, HF_TIMx_CH1);
107  HAL_TIM_ConfigOCrefClear(&HF_TIMx, &sClearInputConfig, HF_TIMx_CH2);
108  HAL_TIM_ConfigOCrefClear(&HF_TIMx, &sClearInputConfig, HF_TIMx_CH3);
109  /***************************************************************************/
110 
111  __HAL_FREEZE_TIM1_DBGMCU(); /* Stop TIM during Breakpoint */
112 
113  __HAL_TIM_ENABLE_IT(&htim1, TIM_IT_BREAK); /* Enable the TIM Break interrupt */
114 
115  /******************** REGULAR CHANNELS CONFIGURATION *************************/
116  sConfig.Channel = ADC_CH_1; /* Current feedabck */
117  sConfig.Rank = 1;
118  sConfig.SamplingTime = ADC_CH_1_ST;
119  sConfig.Offset = 0;
120  HAL_ADC_ConfigChannel(&hadc1, &sConfig);
121  sConfig.Channel = ADC_CH_3; /* Bus voltage */
122  sConfig.SamplingTime = ADC_CH_3_ST;
123  HAL_ADC_ConfigChannel(&hadc1, &sConfig);
124  sConfig.Channel = ADC_CH_4; /* Temperature feedback */
125  sConfig.SamplingTime = ADC_CH_4_ST;
126  HAL_ADC_ConfigChannel(&hadc1, &sConfig);
127  sConfig.Channel = ADC_Bemf_CH1; /* BEMF feedback phase A */
128  sConfig.SamplingTime = ADC_Bemf_CH1_ST;
129  HAL_ADC_ConfigChannel(&hadc1, &sConfig);
130  sConfig.Channel = ADC_Bemf_CH2; /* BEMF feedback phase B */
131  sConfig.SamplingTime = ADC_Bemf_CH2_ST;
132  HAL_ADC_ConfigChannel(&hadc1, &sConfig);
133  sConfig.Channel = ADC_Bemf_CH3; /* BEMF feedback phase C */
134  sConfig.SamplingTime = ADC_Bemf_CH3_ST;
135  HAL_ADC_ConfigChannel(&hadc1, &sConfig);
136  sConfig.Channel = ADC_CH_2; /* Potentiometer */
137  sConfig.SamplingTime = ADC_CH_2_ST;
138  HAL_ADC_ConfigChannel(&hadc1, &sConfig);
139  /***************************************************************************/
140  }
141 /**
142  * @}
143  */
144 
145 
146 /** @defgroup START_DAC START_DAC
147  * @{
148  @brief Start DAC for debug
149 */
150 /**
151  * @brief Start DAC for debug
152  * @retval None
153 */
154  void START_DAC()
155  {
156 
157  }
158 /**
159  * @}
160  */
161 /** @defgroup STOP_DAC STOP_DAC
162  * @{
163  @brief Stop DAC for debug
164 */
165 /**
166  * @brief Stop DAC for debug
167  * @retval None
168 */
169  void STOP_DAC()
170  {
171 
172  }
173 /**
174  * @}
175  */
176 /** @defgroup SET_DAC_value SET_DAC_value
177  * @{
178  @brief Set DAC value for debug
179 */
180 /**
181  * @brief Set DAC value for debug
182  * @param dac_value: information to plot through DAC
183  * @retval None
184 */
185  void SET_DAC_value(uint16_t dac_value)
186  {
187 
188  }
189 /**
190  * @}
191  */
192 
193 
194 
195 /** @defgroup HAL_ADC_ConvCpltCallback HAL_ADC_ConvCpltCallback
196  * @{
197  * @brief ADC callback
198 */
199 /**
200  * @brief ADC callback
201  * @param hadc
202  * @retval None
203 */
204  void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
205  {
207  }
208 /**
209  * @}
210  */
211 
212 /** @defgroup HAL_TIM_PeriodElapsedCallback HAL_TIM_PeriodElapsedCallback
213  * @{
214  * @brief htim callback
215 */
216 /**
217  * @brief htim callback
218  * @param htim
219  * @retval None
220 */
221  void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
222  {
224  }
225 /**
226  * @}
227  */
228 
229 /** @defgroup HAL_SYSTICK_Callback HAL_SYSTICK_Callback
230  * @{
231  * @brief Systick callback
232 */
233 /**
234  * @brief Systick callback
235  * @retval None
236 */
237 
239  {
241  }
242 /**
243  * @}
244  */
245 
246 /** @defgroup HAL_GPIO_EXTI_Callback HAL_GPIO_EXTI_Callback
247  * @{
248  * @brief EXT callback
249 */
250 /**
251  * @brief EXT callback
252  * @param GPIO_Pin
253  * @retval None
254 */
255 
256  void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
257  {
259  }
260 /**
261  * @}
262  */
263 
264 /** @defgroup EnableInput_CH1_E_CH2_E_CH3_D EnableInput_CH1_E_CH2_E_CH3_D
265  * @{
266  * @brief Enable Input channel for STSPIN230
267  */
268 /**
269  * @brief Enable Input channel CH1 and CH2 for STSPIN230
270  * @retval None
271 */
272 
274 {
275  STSPIN230MotorDriver.EnableInput_CH1_E_CH2_E_CH3_D();
276 }
277 
278 /**
279  * @}
280  */
281 
282  /** @defgroup EnableInput_CH1_E_CH2_D_CH3_E EnableInput_CH1_E_CH2_D_CH3_E
283  * @{
284  * @brief Enable Input channel for STSPIN230
285  */
286 /**
287  * @brief Enable Input channel CH1 and CH3 for STSPIN230
288  * @retval None
289 */
290 
292 {
293  STSPIN230MotorDriver.EnableInput_CH1_E_CH2_D_CH3_E();
294 }
295 
296 /**
297  * @}
298  */
299 
300 /** @defgroup EnableInput_CH1_D_CH2_E_CH3_E EnableInput_CH1_D_CH2_E_CH3_E
301  * @{
302  * @brief Enable Input channel for STSPIN230
303  */
304 /**
305  * @brief Enable Input channel CH2 and CH3 for STSPIN230
306  * @retval None
307 */
308 
310 {
311  STSPIN230MotorDriver.EnableInput_CH1_D_CH2_E_CH3_E();
312 }
313 
314 /**
315  * @}
316  */
317 
318 /** @defgroup DisableInput_CH1_D_CH2_D_CH3_D DisableInput_CH1_D_CH2_D_CH3_D
319  * @{
320  * @brief Disable All Input channels for STSPIN230
321  */
322 /**
323  * @brief Enable Input channel CH2 and CH3 for STSPIN230
324  * @retval None
325 */
326 
328 {
329  STSPIN230MotorDriver.DisableInput_CH1_D_CH2_D_CH3_D();
330 }
331 
332 /**
333  * @}
334  */
335 
336 /** @defgroup Start_PWM_driving Start_PWM_driving
337  * @{
338  * @brief Enable the PWM generation on Input channels
339  */
340 /**
341  * @brief Enable PWM channels for STSPIN230
342  * @retval None
343 */
344 
346 {
347  STSPIN230MotorDriver.Start_PWM_driving();
348 }
349 
350 /**
351  * @}
352  */
353 
354 /** @defgroup Stop_PWM_driving Stop_PWM_driving
355  * @{
356  * @brief Disable the PWM generation on Input channels
357  */
358 /**
359  * @brief Disable PWM channels for STSPIN230
360  * @retval None
361 */
362 
364 {
365  STSPIN230MotorDriver.Stop_PWM_driving();
366 }
367 
368 /**
369  * @}
370  */
371 
372 /** @defgroup HF_TIMx_SetDutyCycle_CH1 HF_TIMx_SetDutyCycle_CH1
373  * @{
374  * @brief Set the Duty Cycle value for CH1
375 */
376 /**
377  * @brief Set the Duty Cycle value for CH1
378  * @retval None
379 */
380 
381 void MC_SixStep_HF_TIMx_SetDutyCycle_CH1(uint16_t CCR_value)
382 {
383  STSPIN230MotorDriver.HF_TIMx_SetDutyCycle_CH1(CCR_value);
384 }
385 
386 
387 /**
388  * @}
389  */
390 
391 /** @defgroup HF_TIMx_SetDutyCycle_CH2 HF_TIMx_SetDutyCycle_CH2
392  * @{
393  * @brief Set the Duty Cycle value for CH2
394 */
395 /**
396  * @brief Set the Duty Cycle value for CH2
397  * @retval None
398 */
399 
400 void MC_SixStep_HF_TIMx_SetDutyCycle_CH2(uint16_t CCR_value)
401 {
402  STSPIN230MotorDriver.HF_TIMx_SetDutyCycle_CH2(CCR_value);
403 }
404 /**
405  * @}
406  */
407 
408 
409 
410 
411 
412 
413 /** @defgroup HF_TIMx_SetDutyCycle_CH3 HF_TIMx_SetDutyCycle_CH3
414  * @{
415  * @brief Set the Duty Cycle value for CH3
416 */
417 /**
418  * @brief Set the Duty Cycle value for CH3
419  * @retval None
420 */
421 
422 
423 void MC_SixStep_HF_TIMx_SetDutyCycle_CH3(uint16_t CCR_value)
424 {
425  STSPIN230MotorDriver.HF_TIMx_SetDutyCycle_CH3(CCR_value);
426 }
427 
428 /**
429  * @}
430  */
431 
432 /** @defgroup Current_Reference_Start Current_Reference_Start
433  * @{
434  * @brief Enable the Current Reference generation
435 */
436 /**
437  * @brief Enable the Current Reference generation
438  * @retval None
439 */
440 
442 {
443  STSPIN230MotorDriver.Current_Reference_Start();
444 }
445 
446 /**
447  * @}
448  */
449 
450 
451 /** @defgroup Current_Reference_Stop Current_Reference_Stop
452  * @{
453  * @brief Disable the Current Reference generation
454 */
455 /**
456  * @brief Disable the Current Reference generation
457  * @retval None
458 */
459 
461 {
462  STSPIN230MotorDriver.Current_Reference_Stop();
463 }
464 
465 /**
466  * @}
467  */
468 
469 
470 /** @defgroup Current_Reference_Setvalue Current_Reference_Setvalue
471  * @{
472  * @brief Set the value for Current Reference
473 */
474 /**
475  * @brief Set the value for Current Reference
476  * @retval None
477 */
478 
479 
481 {
482  STSPIN230MotorDriver.Current_Reference_Setvalue(Iref);
483 }
484 
485 /**
486  * @}
487  */
488 
489 
490 /** @defgroup Bemf_delay_calc Bemf_delay_calc
491  * @{
492  * @brief Bemf delay calculation
493 */
494 /**
495  * @brief Bemf delay calculation
496  * @retval None
497 */
499 {
500 if(PI_parameters.Reference>=0)
501  {
502  if(SIXSTEP_parameters.speed_fdbk_filtered<=12000 && SIXSTEP_parameters.speed_fdbk_filtered>10000)
503  {
504  SIXSTEP_parameters.demagn_value = DEMAGN_VAL_2;
505  }
506  else if(SIXSTEP_parameters.speed_fdbk_filtered<=10000 && SIXSTEP_parameters.speed_fdbk_filtered>9400)
507  {
508  SIXSTEP_parameters.demagn_value = DEMAGN_VAL_3;
509  }
510  else if(SIXSTEP_parameters.speed_fdbk_filtered<=9400 && SIXSTEP_parameters.speed_fdbk_filtered>7600)
511  {
512  SIXSTEP_parameters.demagn_value = DEMAGN_VAL_4;
513  }
514  else if(SIXSTEP_parameters.speed_fdbk_filtered<=7600 && SIXSTEP_parameters.speed_fdbk_filtered>6000)
515  {
516  SIXSTEP_parameters.demagn_value = DEMAGN_VAL_5;
517  }
518  else if(SIXSTEP_parameters.speed_fdbk_filtered<=6000 && SIXSTEP_parameters.speed_fdbk_filtered>5400)
519  {
520  SIXSTEP_parameters.demagn_value = DEMAGN_VAL_6;
521  }
522  else if(SIXSTEP_parameters.speed_fdbk_filtered<=5400 && SIXSTEP_parameters.speed_fdbk_filtered>4750)
523  {
524  SIXSTEP_parameters.demagn_value = DEMAGN_VAL_7;
525  }
526  else if(SIXSTEP_parameters.speed_fdbk_filtered<=4750 && SIXSTEP_parameters.speed_fdbk_filtered>4200)
527  {
528  SIXSTEP_parameters.demagn_value = DEMAGN_VAL_8;
529  }
530  else if(SIXSTEP_parameters.speed_fdbk_filtered<=4200 && SIXSTEP_parameters.speed_fdbk_filtered>2600)
531  {
532  SIXSTEP_parameters.demagn_value = DEMAGN_VAL_9;
533  }
534  else if(SIXSTEP_parameters.speed_fdbk_filtered<=2600 && SIXSTEP_parameters.speed_fdbk_filtered>1800)
535  {
536  SIXSTEP_parameters.demagn_value = DEMAGN_VAL_10;
537  }
538  else if(SIXSTEP_parameters.speed_fdbk_filtered<=1800 && SIXSTEP_parameters.speed_fdbk_filtered>1500)
539  {
540  SIXSTEP_parameters.demagn_value = DEMAGN_VAL_11;
541  }
542  else if(SIXSTEP_parameters.speed_fdbk_filtered<=1500 && SIXSTEP_parameters.speed_fdbk_filtered>1300)
543  {
544  SIXSTEP_parameters.demagn_value = DEMAGN_VAL_12;
545  }
546  else if(SIXSTEP_parameters.speed_fdbk_filtered<=1300 && SIXSTEP_parameters.speed_fdbk_filtered>1000)
547  {
548  SIXSTEP_parameters.demagn_value = DEMAGN_VAL_13;
549  }
550  else if(SIXSTEP_parameters.speed_fdbk_filtered<=1000 && SIXSTEP_parameters.speed_fdbk_filtered>500)
551  {
552  SIXSTEP_parameters.demagn_value = DEMAGN_VAL_14;
553  }
554  }
555  else
556  {
557  if(SIXSTEP_parameters.speed_fdbk_filtered>=-12000 && SIXSTEP_parameters.speed_fdbk_filtered<-10000)
558  {
559  SIXSTEP_parameters.demagn_value = DEMAGN_VAL_1;
560  }
561  else if(SIXSTEP_parameters.speed_fdbk_filtered>=-10000 && SIXSTEP_parameters.speed_fdbk_filtered<-7800)
562  {
563  SIXSTEP_parameters.demagn_value = DEMAGN_VAL_2;
564  }
565  else if(SIXSTEP_parameters.speed_fdbk_filtered>=-7800 && SIXSTEP_parameters.speed_fdbk_filtered<-6400)
566  {
567  SIXSTEP_parameters.demagn_value = DEMAGN_VAL_3;
568  }
569  else if(SIXSTEP_parameters.speed_fdbk_filtered>=-6400 && SIXSTEP_parameters.speed_fdbk_filtered<-5400)
570  {
571  SIXSTEP_parameters.demagn_value = DEMAGN_VAL_4;
572  }
573  else if(SIXSTEP_parameters.speed_fdbk_filtered>=-5400 && SIXSTEP_parameters.speed_fdbk_filtered<-4650)
574  {
575  SIXSTEP_parameters.demagn_value = DEMAGN_VAL_5;
576  }
577  else if(SIXSTEP_parameters.speed_fdbk_filtered>=-4650 && SIXSTEP_parameters.speed_fdbk_filtered<-4100)
578  {
579  SIXSTEP_parameters.demagn_value = DEMAGN_VAL_6;
580  }
581  else if(SIXSTEP_parameters.speed_fdbk_filtered>=-4100 && SIXSTEP_parameters.speed_fdbk_filtered<-3650)
582  {
583  SIXSTEP_parameters.demagn_value = DEMAGN_VAL_7;
584  }
585  else if(SIXSTEP_parameters.speed_fdbk_filtered>=-3650 && SIXSTEP_parameters.speed_fdbk_filtered<-3300)
586  {
587  SIXSTEP_parameters.demagn_value = DEMAGN_VAL_8;
588  }
589  else if(SIXSTEP_parameters.speed_fdbk_filtered>=-3300 && SIXSTEP_parameters.speed_fdbk_filtered<-2650)
590  {
591  SIXSTEP_parameters.demagn_value = DEMAGN_VAL_9;
592  }
593  else if(SIXSTEP_parameters.speed_fdbk_filtered>=-2600 && SIXSTEP_parameters.speed_fdbk_filtered<-1800)
594  {
595  SIXSTEP_parameters.demagn_value = DEMAGN_VAL_10;
596  }
597  else if(SIXSTEP_parameters.speed_fdbk_filtered>=-1800 && SIXSTEP_parameters.speed_fdbk_filtered<-1500)
598  {
599  SIXSTEP_parameters.demagn_value = DEMAGN_VAL_11;
600  }
601  else if(SIXSTEP_parameters.speed_fdbk_filtered>=-1500 && SIXSTEP_parameters.speed_fdbk_filtered<-1300)
602  {
603  SIXSTEP_parameters.demagn_value = DEMAGN_VAL_12;
604  }
605  else if(SIXSTEP_parameters.speed_fdbk_filtered>=-1300 && SIXSTEP_parameters.speed_fdbk_filtered<-1000)
606  {
607  SIXSTEP_parameters.demagn_value = DEMAGN_VAL_13;
608  }
609  else if(SIXSTEP_parameters.speed_fdbk_filtered>=-1000 && SIXSTEP_parameters.speed_fdbk_filtered<-500)
610  {
611  SIXSTEP_parameters.demagn_value = DEMAGN_VAL_14;
612  }
613 
614  }
615 }
616 
617 /**
618  * @}
619  */
620 
621 /** @defgroup Get_UART_data Get_UART_data
622  * @{
623  * @brief Get the UART value from DR register
624 */
625 /**
626  * @brief Get the UART value from DR register
627  * @retval uint32_t
628 */
629 uint32_t Get_UART_Data()
630 {
631  return (UART.Instance->DR);
632 }
633 /**
634  * @}
635  */
636 
637 /**
638  * @} // end STM32F401_Interface
639  */
640 
641 /**
642  * @} end MC_6-STEP_LIB
643  */
644 
645 /**
646  * @} // end MIDDLEWARES
647  */
void MC_SixStep_Start_PWM_driving()
Enable PWM channels for STSPIN230.
#define ADC_Bemf_CH3_ST
#define DEMAGN_VAL_11
#define DEMAGN_VAL_1
#define DEMAGN_VAL_8
#define ADC_Bemf_CH2
#define DEMAGN_VAL_14
void(* EnableInput_CH1_E_CH2_E_CH3_D)(void)
Definition: MC_Common.h:65
void MC_SixStep_HF_TIMx_SetDutyCycle_CH2(uint16_t CCR_value)
Set the Duty Cycle value for CH2.
void START_DAC()
Start DAC for debug.
This file provides the set of functions to manage the X-Nucleo board.
#define ADC_Bemf_CH3
void(* DisableInput_CH1_D_CH2_D_CH3_D)(void)
Definition: MC_Common.h:68
void MC_SixStep_HF_TIMx_SetDutyCycle_CH1(uint16_t CCR_value)
Set the Duty Cycle value for CH1.
void MC_SixStep_EnableInput_CH1_E_CH2_E_CH3_D()
Enable Input channel CH1 and CH2 for STSPIN230.
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
EXT callback.
SIXSTEP_PI_PARAM_InitTypeDef_t PI_parameters
Definition: 6Step_Lib.c:74
#define HF_TIMx_CH3
void(* HF_TIMx_SetDutyCycle_CH3)(uint16_t)
Definition: MC_Common.h:73
#define DEMAGN_VAL_6
#define ADC_Bemf_CH1_ST
void(* Current_Reference_Stop)(void)
Definition: MC_Common.h:75
void MC_SixStep_EnableInput_CH1_D_CH2_E_CH3_E()
Enable Input channel CH2 and CH3 for STSPIN230.
void MC_SysTick_SixStep_MediumFrequencyTask(void)
Definition: 6Step_Lib.c:1246
void(* Start_PWM_driving)(void)
Definition: MC_Common.h:69
void MC_EXT_button_SixStep(void)
Definition: 6Step_Lib.c:1577
void MC_SixStep_HF_TIMx_SetDutyCycle_CH3(uint16_t CCR_value)
Set the Duty Cycle value for CH3.
void(* Stop_PWM_driving)(void)
Definition: MC_Common.h:70
#define DEMAGN_VAL_13
void HAL_SYSTICK_Callback()
Systick callback.
#define ADC_CH_2_ST
#define ADC_CH_2
#define ADC_Bemf_CH1
#define HF_TIMx_CH1
#define ADC_CH_1
#define DEMAGN_VAL_4
void SET_DAC_value(uint16_t dac_value)
Set DAC value for debug.
This file provides the interface between the MC-lib and STM Nucleo.
SIXSTEP_Base_InitTypeDef SIXSTEP_parameters
Definition: 6Step_Lib.c:73
void MC_SixStep_Stop_PWM_driving()
Disable PWM channels for STSPIN230.
uint32_t Get_UART_Data()
Get the UART value from DR register.
ADC_HandleTypeDef hadc1
Definition: main_F401.c:46
#define ADC_CH_3
#define DEMAGN_VAL_5
Six Step parameters.
Definition: 6Step_Lib.h:94
void MC_SixStep_EnableInput_CH1_E_CH2_D_CH3_E()
Enable Input channel CH1 and CH3 for STSPIN230.
#define ADCx
void MC_SixStep_DisableInput_CH1_D_CH2_D_CH3_D()
Enable Input channel CH2 and CH3 for STSPIN230.
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
htim callback
void MC_SixStep_Current_Reference_Stop()
Disable the Current Reference generation.
This header file provides the set of functions for Motor Control library.
#define DEMAGN_VAL_2
STSPIN230_MotorDriver_TypeDef STSPIN230MotorDriver
It handles all API functions for STSPIN230 MC Driver.
Definition: STSPIN230.c:70
#define ADC_CH_3_ST
#define ADC_CH_4
#define HF_TIMx
void(* HF_TIMx_SetDutyCycle_CH2)(uint16_t)
Definition: MC_Common.h:72
#define UART
void MC_TIMx_SixStep_timebase(void)
Definition: 6Step_Lib.c:1123
void(* Current_Reference_Start)(void)
Definition: MC_Common.h:74
#define DEMAGN_VAL_9
#define ADC_CH_4_ST
#define DEMAGN_VAL_3
#define DEMAGN_VAL_7
void(* HF_TIMx_SetDutyCycle_CH1)(uint16_t)
Definition: MC_Common.h:71
void STOP_DAC()
Stop DAC for debug.
void MC_SixStep_Current_Reference_Setvalue(uint16_t Iref)
Set the value for Current Reference.
#define HF_TIMx_CH2
#define DEMAGN_VAL_10
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc)
ADC callback.
void MC_ADCx_SixStep_Bemf(void)
Definition: 6Step_Lib.c:1381
void MC_SixStep_Nucleo_Init()
Init the STM32 register.
#define ADC_Bemf_CH2_ST
void(* Current_Reference_Setvalue)(uint16_t)
Definition: MC_Common.h:76
#define ADC_CH_1_ST
void MC_SixStep_ADC_Channel(uint32_t adc_ch)
Select the new ADC Channel.
void(* EnableInput_CH1_E_CH2_D_CH3_E)(void)
Definition: MC_Common.h:66
void Bemf_delay_calc()
Bemf delay calculation.
void(* EnableInput_CH1_D_CH2_E_CH3_E)(void)
Definition: MC_Common.h:67
#define DEMAGN_VAL_12
void MC_SixStep_Current_Reference_Start()
Enable the Current Reference generation.
Six PI regulator parameters.
Definition: 6Step_Lib.h:170
TIM_HandleTypeDef htim1
Definition: main_F401.c:48
Generated by   doxygen 1.8.11