天天看點

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置

Odrive STM32F405配置說明

文章目錄

  • Odrive STM32F405配置說明
  • 1、原理圖
  • 2、系統時鐘配置
    • 2.1 晶振配置
    • 2.2 時鐘樹配置
    • 2.3 系統配置
    • 2.4 中斷配置
  • 3、定時器TIM配置
    • 3.1 TIMER1六路帶死區PWM
    • 3.2 TIMER3 編碼器模式
    • 3.3 TIMER8 霍爾傳感器模式
  • 4、ADC配置
    • 4.1 規則通道配置
    • 4.2 注入通道配置
  • 5、CANopen總線配置
    • 5.1 CAN驅動配置
    • 5.2 TIM5定時器配置
    • 5.3 CanFestival移植即對象字典生成
  • 6、SPI3配置
    • 6.1 預驅DRV8301(DRV8303)
    • 6.2 磁編碼器AS5047
  • 7、全速USB(虛拟序列槽)
  • 8、GPIO配置
  • 9、FreeRTOS配置
    • 9.1 添加Task
    • 9.2 添加隊列Quene
    • 9.3 添加二值信号量
    • 9.4 添加互斥信号量
  • 10、NVIC中斷配置

通過Odrive V3.6版本電路闆來編寫自己電機驅動軟體,以下是MCU部分的Cubemax配置。

1、原理圖

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置

此工程隻配置M0(單軸)。

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置

2、系統時鐘配置

2.1 晶振配置

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置

其他為預設配置

2.2 時鐘樹配置

外部晶振配置8MHz,系統時鐘PLL倍頻到168MHz。

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置

2.3 系統配置

時基源選擇:TIM14

滴答定時器用于FreeRTOS

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置

2.4 中斷配置

(STM32中斷,及FreeRTOS中斷優先級配置:https://blog.csdn.net/ybhuangfugui/article/details/99827056)

1、STM32中斷優先級數值越小,優先級越大

2、FreeRTOS任務優先級是數值越大,優先級越高

3、定時器TIM配置

3.1 TIMER1六路帶死區PWM

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置

Slave Mode選擇Tigger Mode,Trigger Source選擇ITR2。即TIM3(Encoder)内部觸發啟動

TIM1計數器

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置

Channel4選擇PWM Genneration No Output模式。此通道生成PWM,上升沿觸發ADC注入通

道采樣。

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置

中心 對齊模式:

當選擇中心對齊計數模式1時,隻在向下計數過程中發生比對動作時才置位比較事件标志CC4IF;

當選擇中心對齊計數模式2時,隻在向上計數過程中發生比對動作時才置位比較事件标志CC4IF;

當選擇中心對齊計數模式3時,在向上/向下計數過程中發生比對動作時都會置位比較事件标志CC4IF。當然,比較事件标志被置位時可以觸發中斷或DMA請求

(原文連結:https://blog.csdn.net/weixin_38106263/article/details/108787090)

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置

(第32章 TIM—進階定時器—零死角玩轉STM32-F429系列:https://www.cnblogs.com/firege/p/5805894.html)

Repetition Counter(重複計數):

RepetitionCounter=1時,表示延長一倍的時間。

(STM32 定時器中TIM_RepetitionCounter 作用詳解:https://blog.csdn.net/longgyue/article/details/80161380)

Counter Period :(斬波頻率10KHz)

TIM1CLK / (PwmFreq * 2) = 168 * 10^6 / (10 * 10^3 * 2) = 8400

Dead Time :

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置

0x94=10010100

【7:5】=100 【5:0】=10100=0x14=20

DTG[7:5]=100 => DT=(64+DTG[5:0]) * Tdtg = (64+20) * 2 / (168 * 10^6) = 1us

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置
Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置
Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置
// 啟動TIM1 PWM各通道 
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1); 
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2); 
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_3); 
HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_1); 
HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_2); 
HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_3); 
// 啟動觸發ADC采樣PWM 
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_4); 
// 啟動TIM1定時器溢出中斷 
HAL_TIM_Base_Start_IT(&htim1);
           

3.2 TIMER3 編碼器模式

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置
Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置
Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置
Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置
Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置
// 啟動TIM3編碼器中斷 
HAL_TIM_Encoder_Start_IT(&htim3, TIM_CHANNEL_ALL);
           

(STM32 編碼器模式詳解:https://blog.csdn.net/xuzhexing/article/details/107152512)

3.3 TIMER8 霍爾傳感器模式

(【MM32】定時器:霍爾傳感器接口與六步算法https://blog.csdn.net/chendu103/article/details/107689028

BLDC開發筆記3.霍爾接口與觸發換相:

https://www.cnblogs.com/ckk-blog/p/13837457.html)

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置
Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置
Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置
Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置
Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置
// 啟動TIM4霍爾傳感器中斷 
HAL_TIMEx_HallSensor_Start_IT(&htim4);
           

4、ADC配置

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置
Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置
Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置
Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置

4.1 規則通道配置

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置

采樣時間:1/(84/4)3=0.143us

ADC轉換總時間:1/(84/4)(3+15)=0.857us

開啟DMA:

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置

4.2 注入通道配置

采樣觸發方式:TIM1 CC4上升沿

ADC轉換時間:1/(84/4)*(3+15)=0.857us

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置
// 啟動ADC1注入通道采樣中斷 
HAL_ADCEx_InjectedStart_IT(&hadc1);
           

5、CANopen總線配置

5.1 CAN驅動配置

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置
Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置
Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置
// 啟動CAN1 
HAL_CAN_Start(&hcan1); 
// 使能CAN1 FIFO0接收中斷 
HAL_CAN_ActivateNotification(&hcan1, CAN_IT_RX_FIFO0_MSG_PENDING);
           

5.2 TIM5定時器配置

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置
Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置
Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置

定時中斷周期Period = (13999+1) / (84 * 10^6 / (5+1)) = 1ms

// 啟動定時器TIM5中斷 
HAL_TIM_Base_Start_IT(&htim5);
           

5.3 CanFestival移植即對象字典生成

(CANopen STM32移植:https://blog.csdn.net/qq_27620407/article/details/109021175)

(STM32無系統移植CanFestival小白教程:https://blog.csdn.net/weixin_43072093/article/details/115245443)

(CANOpen協定詳解(一):CANfestival源碼分析:https://blog.csdn.net/u012846795/article/details/121008265)

(CANOpen協定詳解(二):協定具體内容:https://lixiaoyao.blog.csdn.net/article/details/121008306)

6、SPI3配置

6.1 預驅DRV8301(DRV8303)

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置

6.2 磁編碼器AS5047

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置

7、全速USB(虛拟序列槽)

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置
Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置
Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置

8、GPIO配置

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置

9、FreeRTOS配置

(【FreeRTOS】STM32CubeMX配置STM32FreeRTOS(一):https://blog.csdn.net/weixin_41865104/article/details/107399420)

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置

9.1 添加Task

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置

9.2 添加隊列Quene

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置

9.3 添加二值信号量

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置

9.4 添加互斥信号量

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置

10、NVIC中斷配置

Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置
Odrive STM32F405配置說明Odrive STM32F405配置說明1、原理圖2、系統時鐘配置3、定時器TIM配置4、ADC配置5、CANopen總線配置6、SPI3配置7、全速USB(虛拟序列槽)8、GPIO配置9、FreeRTOS配置10、NVIC中斷配置

繼續閱讀