国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32F407的晶振選型分析

jf_43510033 ? 來源:jf_43510033 ? 作者:jf_43510033 ? 2025-11-07 12:03 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

要讓 STM32F407 同時穩定運行 USB(OTG FS)、以太網(ETH)、CAN 三大功能,核心是選擇能滿足所有外設時鐘精度要求、且適配 STM32F4 PLL 時鐘樹的 HSE 晶振 ——最佳方案是:HSE 頻率選 25MHz,類型選「無源貼片晶振(Parallel Resonant 型)」,其次可選 8MHz 無源晶振(兼容性稍弱)。

一、選擇核心邏輯:三大外設的時鐘硬約束

STM32F407 的 USB/ETH/CAN 對時鐘有明確要求,HSE 作為核心時鐘源,必須同時滿足:

外設 關鍵時鐘要求 精度要求
USB OTG FS 必須提供 48MHz 精確時鐘(來自 PLL_Q 分頻輸出) ±0.25%(USB 2.0 標準)
以太網(ETH) RMII 模式需 50MHz 參考時鐘(可由 PHY 自供或 MCU 輸出);MAC 時鐘來自 AHB1(168MHz 系統時鐘下穩定) ±1%(主流 PHY 要求)
CAN 時鐘來自 APB1(最大 42MHz,168MHz 系統時鐘下由 APB1 4 分頻得到) ±1%(CAN 協議要求)

同時,STM32F4 的 PLL 時鐘樹有固定規則(PLL 輸入頻率 1-2MHz 最優,PLL_Q 需分頻出 48MHz),HSE 頻率需適配這一規則,才能讓系統時鐘(SYSCLK)穩定跑滿 168MHz(F407 最高性能)。

二、最佳 HSE 選擇:25MHz 無源晶振

1. 頻率選擇理由:完美適配 PLL 時鐘樹,兼顧所有外設

STM32F4 的 PLL 時鐘樹配置邏輯(目標:SYSCLK=168MHz + USB=48MHz + ETH 兼容):

PLL 核心公式:PLL_OUT = (HSE / PLL_M) * PLL_N

為了 USB 輸出 48MHz:PLL_OUT / PLL_Q = 48MHz → 最優解是 PLL_OUT=336MHz,PLL_Q=7(336/7=48,整數分頻無誤差);

為了 SYSCLK=168MHz:PLL_OUT / PLL_P = 168MHz → PLL_P=2(336/2=168);

為了 PLL 穩定:HSE / PLL_M = 1MHz(PLL 輸入頻率 1MHz 是最優區間)→ PLL_M=HSE(因 1MHz×PLL_M=HSE)。

當 HSE=25MHz 時,PLL 配置為:

PLL_M=25(25MHz /25=1MHz,滿足 PLL 輸入要求);

PLL_N=336(1MHz×336=336MHz,PLL_OUT 目標值);

PLL_P=2(336MHz/2=168MHz,SYSCLK 滿速);

PLL_Q=7(336MHz/7=48MHz,USB 時鐘精準)。

此時:

CAN 時鐘:APB1 4 分頻 → 168MHz/4=42MHz(符合 CAN 最大時鐘要求);

ETH 時鐘:25MHz 是以太網 PHY 的「標準參考頻率」,PHY 可直接用 25MHz 晶振生成 50MHz RMII 參考時鐘(無需 MCU 額外輸出,簡化配置、降低干擾)。

2. 類型選擇理由:無源晶振(Parallel Resonant 型)

優先選 無源貼片晶振,而非有源晶振 / 溫補晶振(TCXO),原因:

晶振類型 優勢 劣勢 適配性
無源晶振(推薦) 成本低、體積小(貼片封裝如 3225/2520)、功耗低、STM32F4 原生支持(僅需外接負載電容 需 MCU 提供振蕩電路(簡單) ? 最佳選擇(滿足所有精度)
有源晶振 精度極高(±1ppm)、抗干擾強 成本高、需額外供電(VCC/GND)、PCB 設計復雜 ? 沒必要(無源已滿足精度)
溫補晶振(TCXO) 極端溫度下精度高(±0.1ppm) 成本高、體積大、功耗高 ? 僅極端環境(-40℃~85℃+)考慮

具體選型參數

封裝:優先 3225(3.2×2.5mm)或 2520(2.5×2.0mm)貼片(節省 PCB 空間),插件 HC-49S 也可(適合面包板 / 原型機);

精度:±10ppm(工業級,-40℃~85℃),嚴苛環境可選 ±5ppm(足夠覆蓋 USB±0.25% 要求);

負載電容:12pF(STM32F407 HSE 引腳典型推薦值,需與晶振規格書匹配,否則頻率偏移);

頻率容差:±10ppm(常溫下),溫漂:±10ppm(-40℃~85℃)。

三、次選方案:8MHz 無源晶振(兼容性備選)

若供應鏈中 25MHz 晶振不易獲取,可選擇 8MHz 無源晶振(經典通用頻率),配置邏輯如下:

PLL 配置:PLL_M=8(8MHz/8=1MHz)、PLL_N=336、PLL_P=2、PLL_Q=7(與 25MHz 配置一致,同樣滿足 USB=48MHz、SYSCLK=168MHz);

ETH 適配:需 PHY 自帶 25MHz 晶振生成 50MHz RMII 參考時鐘(8MHz 晶振無法通過 MCU 直接生成 50MHz 整數分頻時鐘,需 PHY 自供);

優缺點:兼容性強(8MHz 晶振隨處可得),但 ETH 配置需依賴 PHY 自供時鐘,靈活性稍弱于 25MHz。

四、不推薦的頻率(避坑)

12MHz/16MHz:雖能通過 PLL 配置滿足 USB / 系統時鐘,但 ETH 兼容性差(PHY 少見 12/16MHz 參考晶振);

26MHz:部分 PHY 支持,但晶振通用性不如 25MHz/8MHz,成本稍高;

32MHz 以上:PLL_M 分頻后難以滿足 1MHz 輸入要求,PLL 穩定性下降。

五、關鍵配置注意事項(避免踩坑)

晶振布局:負載電容需緊貼晶振引腳(引線長度<3mm),避免電磁干擾(ETH/USB 對時鐘干擾敏感);

PLL 時鐘配置代碼(HAL 庫示例):

// 25MHz HSE 配置:SYSCLK=168MHz,USB=48MHz,APB1=42MHz(CAN)
void SystemClock_Config(void) {
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

  // 1. 使能 HSE 并等待就緒
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1; // HSE 不分頻(25MHz)
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  RCC_OscInitStruct.PLL.PLLM = 25;        // 25MHz/25=1MHz
  RCC_OscInitStruct.PLL.PLLN = 336;       // 1MHz×336=336MHz
  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; // 336MHz/2=168MHz(SYSCLK)
  RCC_OscInitStruct.PLL.PLLQ = 7;         // 336MHz/7=48MHz(USB)
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {
    Error_Handler();
  }

  // 2. 配置系統時鐘、AHB/APB 分頻
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;    // AHB=168MHz
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;     // APB1=42MHz(CAN)
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;     // APB2=84MHz(ETH 等)

  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK) {
    Error_Handler();
  }
}

ETH PHY 時鐘:若用 25MHz HSE,可將 PHY 的 XTAL 引腳直接接 HSE 晶振(需確認 PHY 支持 25MHz 輸入),無需額外配置 MCO1 輸出;

電源與復位:HSE 晶振啟動時間約 1ms,需在代碼中等待 HSE 就緒(HAL 庫 HAL_RCC_OscConfig 已包含),避免時鐘未穩定就啟動外設。

總結

STM32F407 同時使用 USB/ETH/CAN 時,最佳 HSE 方案是 25MHz 無源貼片晶振(3225 封裝,±10ppm,12pF 負載電容)—— 既完美適配 PLL 時鐘樹,滿足所有外設的精度和頻率要求,又能簡化 ETH 配置,是工業級應用的主流選擇。若 25MHz 晶振不可得,8MHz 無源晶振可作為備選(需 PHY 自供 50MHz 時鐘)。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 晶振
    +關注

    關注

    35

    文章

    3560

    瀏覽量

    73436
  • STM32F407
    +關注

    關注

    15

    文章

    189

    瀏覽量

    31629
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    選型指南

    關注點三方面,一起聊聊選型的關鍵要素。一、應用場景與類型的精準匹配不同設備對時鐘精度、穩定性和功耗的需求差異顯著,
    的頭像 發表于 03-02 08:27 ?59次閱讀
    <b class='flag-5'>晶</b><b class='flag-5'>振</b><b class='flag-5'>選型</b>指南

    定制選型?星通時頻任意頻點、尺寸齊全、快速打樣!

    選型與定制,可能是大部分工程師或采購經理都要經歷的“頭疼大事”——找不到參數匹配的?找不到適配特殊場景的
    的頭像 發表于 01-14 16:20 ?488次閱讀
    <b class='flag-5'>晶</b><b class='flag-5'>振</b>定制<b class='flag-5'>選型</b>?星通時頻任意頻點、尺寸齊全、快速打樣!

    STM32的那些小關系

    STM32 適配,以及解剖圖
    的頭像 發表于 11-21 15:37 ?5133次閱讀
    <b class='flag-5'>晶</b><b class='flag-5'>振</b>與<b class='flag-5'>STM32</b>的那些小關系

    VCOCXO恒溫

    100hzm產品選型手冊
    發表于 09-23 16:43 ?0次下載

    在rt-thread4.0.2版本stm32f407硬件平臺上,使用reboot命令無法重啟,會讓系統死機的原因?

    我在rt-thread4.0.2版本stm32f407硬件平臺上,使用reboot命令無法重啟,會讓系統死機。 reboot命令默認是調用rt_hw_cpu_reset()
    發表于 09-12 06:08

    STM32F407的IO去驅動5V的外部上拉電阻,請問VDD_FT的電壓范圍是多少?

    目前想用STM32F407的IO去驅動5V的外部上拉電阻,看手冊5V容忍的VDD_FT且有保護二極管。 請問VDD_FT的電壓范圍是多少? 開漏輸出時,PA8口的上拉電阻能否輸出5V? 謝謝!
    發表于 07-10 06:03

    華昕電子|有源選型和使用指南

    有源選型和使用指南有源的核心特點有源(晶
    的頭像 發表于 05-23 18:13 ?1038次閱讀
    華昕電子|有源<b class='flag-5'>晶</b><b class='flag-5'>振</b><b class='flag-5'>選型</b>和使用指南

    STM32F103C8T6無法選擇外部怎么解決?

    我從網上購入了STM32F103C8T6的核心板,板上有外部。但我使用STM32CubeMX生成項目時,卻無法選擇外部
    發表于 04-28 07:03

    STM32F030內部怎么設置,內部是延時函數怎么設置?

    STM32F030內部怎么設置,內部是延時函數怎么設置 使用STM32F030時沒使用
    發表于 04-23 07:45

    STM32F1能使用11.059Mhz外部嗎?怎么設置系統頻率和PLL?

    請問STM32F1能使用11.059Mhz外部嗎?如果可以,怎么設置系統頻率和PLL?
    發表于 03-14 06:31

    STM32F407VGT6使用PLL倍頻后芯片會反復重啟怎么解決?

    STM32F407VGT6使用內部16M,沒有使用PLL倍頻,直接用HSI做時鐘源程序可以正常跑通,但是使用PLL倍頻后芯片就會反復重啟,就算倍頻到16M也會反復重啟,,每33ms重啟一起。
    發表于 03-12 06:04

    stm32F407平臺上使用freertos,使用pvPortMalloc申請內存,發現內存中的數據總被修改,怎么解決?

    如題,我現在在stm32F407平臺上打開FREERTOS,然后使用pvPortMalloc動態申請內存的時候,發現這塊內存中的數據總是變化,后面改為malloc申請,內存中的數據就符合預期了,我已經按照網上的流程配置了freertos,不知道是什么原因導致這種現象?
    發表于 03-07 09:03

    使用STM32F030時沒使用內部怎么設置,使用內部時延時函數怎么寫?

    STM32F030內部怎么設置,內部是延時函數怎么設置 使用STM32F030時沒使用
    發表于 03-07 08:13

    stm32f407這個STM32_RCC_PERIPHCLK_SDMMC是哪里定義的?

    stm32f407這個STM32_RCC_PERIPHCLK_SDMMC 是哪里定義的 函數調用這個會報錯 Error[Pe020]: identifier \"
    發表于 03-07 07:34

    STM32F407的高速USB,采用的是虛擬串口方式,VCP驅動有linux系統的嗎?

    STM32F407使用高速USB的Device模式,使用的是虛擬串口VCP方式,網站上有Window7和Window8的驅動,是否也有linux系統下的驅動?
    發表于 03-07 06:42