一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

什么是外設(shè)時(shí)鐘根配置

汽車(chē)電子技術(shù) ? 來(lái)源:程序猿搬磚 ? 作者:壞人 ? 2023-03-02 16:22 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

外設(shè)需要工作也需要時(shí)鐘驅(qū)動(dòng),通過(guò)多路選擇器以及對(duì)應(yīng)的寄存器配置初始化最適合的外設(shè)頻率可以讓外設(shè)更高頻的工作。

圖片

從上面截圖以及紅框中可以看到,外設(shè)時(shí)鐘根PERCLK_CLK_ROOTIPG_CLK_ROOT為大多數(shù)常用的外設(shè)提供時(shí)鐘,初始化這兩個(gè)時(shí)鐘根需要先對(duì)AHB_CLK_ROOT進(jìn)行初始化

初始化AHB_CLK_ROOT

AHB_CLK_ROOT的時(shí)鐘來(lái)源在CBCDR[PERIPH_CLK_SEL]處有一個(gè)多路選擇器

圖片

從上面這個(gè)圖可以看出AHB_CLK_ROOT最大支持的頻率是132MHz,如果在CBCDR[PERIPH_CLK_SEL]這個(gè)多路選擇器這里選擇了上路,那它的時(shí)鐘來(lái)源最大的頻率是PLL3_480,通過(guò)CBCDR[PERIPH_CLK2_RODF]分頻后最大只能到120(此時(shí)分頻器的值是4,如果是3的話160則超過(guò)了最大值),因?yàn)?code>AHB_CLK_ROOT限制最大是132。因此CBCDR[PERIPH_CLK_SEL]這個(gè)多路選擇器,選擇下路, 同時(shí)在CBCMR[PRE_PERIPH_CLK_SEL]時(shí)選擇PLL2PFD2時(shí)鐘源,它的時(shí)鐘頻率是396MHz,最終達(dá)到AHB_CLK_ROOT時(shí)經(jīng)過(guò)CBCDR[AHB_PODF]分頻器處理剛好得到132MHz的頻率。

/// 配置外接設(shè)備的時(shí)鐘頻率
    /// CBCMR[PRE_PERIPH_CLK_SEL]選擇PLL2->PFD2
    /// 先將19-18兩個(gè)bit位清0
    /// 再將19-18兩個(gè)bit位的數(shù)據(jù)寫(xiě)成1,選擇PFD2
    CCM->CBCMR &= ~(3 << 18);
    CCM->CBCMR |= (1 << 18);
    /// CBCDR[PERIPH_CLK_SEL]多路選擇器選擇下路
    CCM->CBCDR &= ~(1 << 25);
    /// 讀取第5個(gè)bit位(PERIPH_CLK_ SEL_BUSY),如果是1指示正忙于握手,如果是0表示握手完成
    while ((CCM->CDHIPR >> 5) & 0x1);

/* 修改 AHB_PODF 位的時(shí)候需要先禁止 AHB_CLK_ROOT 的輸出,但是
 * 我沒(méi)有找到關(guān)閉 AHB_CLK_ROOT 輸出的的寄存器,所以就沒(méi)法設(shè)置。
 * 下面設(shè)置 AHB_PODF 的代碼僅供學(xué)習(xí)參考不能直接拿來(lái)使用!!
 * 內(nèi)部 boot rom 將 AHB_PODF 設(shè)置為了 3 分頻,即使我們不設(shè)置 AHB_PODF, * AHB_ROOT_CLK 也依舊等于 396/3=132Mhz。
 */
#if 0
    /// 將CBCDR[AHB_PODF]的12-10三個(gè)bit位清0
    CCM->CBCDR &= ~(7 << 10);
    /// 將CBCDR[AHB_PODF]的值設(shè)置成3,即3分頻
    CCM->CBCDR | (2 << 10);
    /// 等待忙位檢測(cè)通過(guò)
    while ((CCM->CDHIPR >> 1) & 0x1);
#endif

初始化IPG_CLK_ROOT

IPG_CLK_ROOT的頻率最大值是66MHz,從AHB_CLK_ROOT過(guò)來(lái)的頻率是132MHz,所以這里只需要將CBCDR[IPG_PODF]分頻器的值設(shè)置成除2即可。

/// 將9-8兩個(gè)bit位的數(shù)據(jù)清0
CCM->CBCDR &= ~(3 << 8);
/// 設(shè)置成2分頻
CCM->CBCDR |= (1 << 8);

初始化PERCLK_CLK_ROOT

PERCLK_CLK_ROOT的頻率最大值是66MHz,在CBCDR[IPG_PODF]分頻器的作用下它的頻率已經(jīng)是66MHz了,所以此時(shí)只需要將CSCMR1[PERCLK_CLK_SEL]多路選擇器選擇到IPG_CLK_ROOT,將PERCLK_PODF分頻器的值設(shè)置成1分頻即可。

/// CSCMR1[PERCLK_CLK_SEL]選擇ipg clk root
CCM->CSCMR1 &= ~(1 << 6);
/// 將5-0 6個(gè)bit位清0,設(shè)置成1分頻,此時(shí)已經(jīng)是1分頻了
CCM->CSCMR1 &= ~(0x3F << 0);

以上都初始化完成后IPG_CLK_ROOTPERCLK_CLK_ROOT兩個(gè)時(shí)鐘根的頻率就工作在子66MHz,最大的發(fā)揮了SOC的性能,這兩個(gè)時(shí)鐘根也是大部分外設(shè)的時(shí)鐘源。

特別說(shuō)明

修改 AHB_PODF 位的時(shí)候需要先禁止 AHB_CLK_ROOT 的輸出,但是

  • 我沒(méi)有找到關(guān)閉 AHB_CLK_ROOT 輸出的的寄存器,所以就沒(méi)法設(shè)置。
  • 下面設(shè)置 AHB_PODF 的代碼僅供學(xué)習(xí)參考不能直接拿來(lái)使用!!
  • 內(nèi)部 boot rom 將 AHB_PODF 設(shè)置為了 3 分頻,即使我們不設(shè)置 AHB_PODF, * AHB_ROOT_CLK 也依舊等于 396/3=132Mhz。# 外設(shè)時(shí)鐘根配置
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 時(shí)鐘
    +關(guān)注

    關(guān)注

    11

    文章

    1898

    瀏覽量

    133200
  • 外設(shè)
    +關(guān)注

    關(guān)注

    0

    文章

    42

    瀏覽量

    11916
  • 多路選擇器
    +關(guān)注

    關(guān)注

    1

    文章

    22

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    STM32為什么要先開(kāi)啟外設(shè)時(shí)鐘

    相信很多朋友都曾遇到過(guò)這種坑,我最初學(xué)習(xí)STM32的時(shí)候同樣也遇到過(guò)。下面,我就來(lái)說(shuō)說(shuō)為什么我們要先開(kāi)啟STM32外設(shè)模塊時(shí)鐘,再對(duì)其外設(shè)模塊初始化配置
    的頭像 發(fā)表于 10-20 14:10 ?5036次閱讀
    STM32為什么要先開(kāi)啟<b class='flag-5'>外設(shè)</b><b class='flag-5'>時(shí)鐘</b>?

    STM32基于標(biāo)準(zhǔn)外設(shè)庫(kù)的外部中斷配置

    本文介紹了STM32基于標(biāo)準(zhǔn)外設(shè)庫(kù)的外部中斷配置,以及基于參考手冊(cè)如何更加寄存器配置外部中斷
    的頭像 發(fā)表于 11-02 14:13 ?2953次閱讀
    STM32基于標(biāo)準(zhǔn)<b class='flag-5'>外設(shè)</b>庫(kù)的外部中斷<b class='flag-5'>配置</b>

    STM32L552系統(tǒng)時(shí)鐘外設(shè)時(shí)鐘配置錯(cuò)誤導(dǎo)致系統(tǒng)不穩(wěn)定的原因?怎么解決?

    系統(tǒng)時(shí)鐘外設(shè)時(shí)鐘配置錯(cuò)誤導(dǎo)致系統(tǒng)不穩(wěn)定
    發(fā)表于 03-20 07:59

    PWM對(duì)應(yīng)的外設(shè)時(shí)鐘

    1. 時(shí)鐘配置時(shí)鐘樹(shù)上面,PWM對(duì)應(yīng)的外設(shè)時(shí)鐘為APB1 Timer Clock, 48MHz.2. PWM通道的
    發(fā)表于 08-06 09:08

    系統(tǒng)時(shí)鐘的相關(guān)配置

    時(shí)鐘配置概述時(shí)鐘概述經(jīng)過(guò)前文對(duì)GPIO、USART外設(shè)的初步學(xué)習(xí),發(fā)現(xiàn)有兩個(gè)基本知識(shí)需要補(bǔ)充學(xué)習(xí),一個(gè)是系統(tǒng)時(shí)鐘的相關(guān)
    發(fā)表于 08-12 06:57

    時(shí)鐘配置

    時(shí)鐘樹(shù)見(jiàn)最后(stm32F407VGET6)1、首先需要明確的一點(diǎn)是時(shí)鐘配置時(shí)鐘、外設(shè)對(duì)應(yīng)時(shí)鐘
    發(fā)表于 08-12 06:36

    淺析STM32F105RBT6使用外部晶振8M時(shí)配置外設(shè)時(shí)鐘

    STM32F105RBT6使用外部晶振8M時(shí)配置外設(shè)時(shí)鐘
    發(fā)表于 08-18 07:51

    STM32F105RBT6是如何使用外部晶振8M去配置外設(shè)時(shí)鐘

    STM32F105RBT6是如何使用外部晶振8M去配置外設(shè)時(shí)鐘的?有哪些操作步驟呢?
    發(fā)表于 11-22 06:02

    時(shí)鐘樹(shù)常見(jiàn)配置

    時(shí)鐘樹(shù)常見(jiàn)配置時(shí)鐘用途總線時(shí)鐘和圖中被大括號(hào)標(biāo)出的時(shí)鐘都可以作為相應(yīng)外設(shè)
    發(fā)表于 01-20 08:02

    為什么那么多外設(shè)選擇內(nèi)部48Mhz RC時(shí)鐘作為root?

    時(shí)鐘、MIPI_REF 時(shí)鐘等。2、為什么不選用精密的外部振蕩器24Mhz時(shí)鐘?主要優(yōu)點(diǎn)和缺點(diǎn)是什么?3.如果我要
    發(fā)表于 03-21 07:16

    基于STM32時(shí)鐘系統(tǒng)的開(kāi)發(fā)及配置

    研究過(guò)時(shí)鐘來(lái)源,再來(lái)研究時(shí)鐘的去向,MCU自身要能正常運(yùn)作,即需要一個(gè)時(shí)鐘,這個(gè)時(shí)鐘既是系統(tǒng)時(shí)鐘(SYSCLK),而基本上所有
    發(fā)表于 10-19 15:55 ?2500次閱讀
    基于STM32<b class='flag-5'>時(shí)鐘</b>系統(tǒng)的開(kāi)發(fā)及<b class='flag-5'>配置</b>

    STM32的時(shí)鐘配置——時(shí)鐘樹(shù)解析

    STM32為什么要有復(fù)雜的時(shí)鐘系統(tǒng)首先STM32 本身非常復(fù)雜,外設(shè)非常的多,但是并不是所有外設(shè)都需要系統(tǒng)時(shí)鐘這么高的頻率,比如看門(mén)狗以及 RTC 只需要幾十 k 的
    發(fā)表于 11-23 18:21 ?8次下載
    STM32的<b class='flag-5'>時(shí)鐘</b><b class='flag-5'>配置</b>——<b class='flag-5'>時(shí)鐘</b>樹(shù)解析

    基本時(shí)鐘配置

    DCO頻率配置 MCLK,SMCLK時(shí)鐘源選擇,分頻配置 時(shí)鐘信號(hào)選擇
    發(fā)表于 11-25 09:36 ?40次下載
    基本<b class='flag-5'>時(shí)鐘</b><b class='flag-5'>配置</b>

    STM32F4時(shí)鐘配置的操作步驟

    本文將介紹STM32F4時(shí)鐘配置的操作步驟、并對(duì)比時(shí)鐘配置前后LED外設(shè)閃爍的快慢以及對(duì)應(yīng)代碼的講解。
    的頭像 發(fā)表于 04-21 11:29 ?4584次閱讀
    STM32F4<b class='flag-5'>時(shí)鐘</b><b class='flag-5'>配置</b>的操作步驟

    STM32失能時(shí)鐘和復(fù)位外設(shè)的區(qū)別

    STM32失能時(shí)鐘和復(fù)位外設(shè)的區(qū)別
    的頭像 發(fā)表于 10-17 11:48 ?1206次閱讀
    STM32失能<b class='flag-5'>時(shí)鐘</b>和復(fù)位<b class='flag-5'>外設(shè)</b>的區(qū)別