1 STM32總線
首先,說點不靠譜的,APB和AHB總線,我個人感覺這個類似于個人PC系統(tǒng)里的北橋和南橋總線。
南橋總線上掛接的都是鼠標、鍵盤這些慢速的設備,北橋上掛接顯卡等高速設備。南橋頻率低,北橋頻率高。另外,南橋最后也要接到北橋上。
這些感覺都類似于APB和AHB。
AHB,是Advanced High performance Bus的縮寫,譯作高級高性能總線,這是一種“系統(tǒng)總線”。
AHB主要用于高性能模塊(如CPU、DMA和DSP等)之間的連接。AHB 系統(tǒng)由主模塊、從模塊和基礎結(jié)構(gòu)(Infrastructure)3部分組成,整個AHB總線上的傳輸都由主模塊發(fā)出,由從模塊負責回應。
APB,是Advanced Peripheral Bus的縮寫,這是一種外圍總線。
APB主要用于低帶寬的周邊外設之間的連接,例如UART、1284等,它的總線架構(gòu)不像 AHB支持多個主模塊,在APB里面唯一的主模塊就是APB 橋。再往下,APB2負責AD,I/O,高級TIM,串口1;APB1負責DA,USB,SPI,I2C,CAN,串口2345,普通TIM。
這兩者都是總線,符合AMBA規(guī)范。
ARM公司推出的AMBA片上總線受到了廣大IP開發(fā)商和SoC系統(tǒng)集成者的青睞,已成為一種流行的工業(yè)標準片上結(jié)構(gòu)。AMBA規(guī)范主要包括了AHB(Advanced High performance Bus)系統(tǒng)總線和APB(Advanced Peripheral Bus)外圍總線。
2 STM32F1時鐘系統(tǒng)
2.1 STM32F1時鐘源
在STM32F1中,有五個時鐘源,為HSI、HSE、LSI、LSE、PLL。
①HSI: High Speed Internal 是高速內(nèi)部時鐘,RC振蕩器,頻率為8MHz。
②HSE: High Speed External 是高速外部時鐘,可接石英/陶瓷諧振器,或者接外部時鐘源,頻率范圍為4MHz~16MHz。
③LSI: Low Speed Internal 是低速內(nèi)部時鐘,RC振蕩器,頻率為40kHz。
④LSE: Low Speed External是低速外部時鐘,接頻率為32.768kHz的石英晶體。
⑤PLL: Phase Lock Loop 為鎖相環(huán)倍頻輸出,其時鐘輸入源可選擇為HSI/2、HSE或者HSE/2。倍頻可選擇為2~16倍,但是其輸出頻率最大不得超過72MHz。
用戶可通過多個預分頻器配置AHB總線、高速APB2總線和低速APB1總線的頻率。
AHB和APB2域的最大頻率是72MHZ。
APB1域的最大允許頻率是36MHZ。
SDIO接口的時鐘頻率固定為HCLK/2。
40kHz的LSI供獨立看門狗IWDG使用,另外它還可以被選擇為實時時鐘RTC的時鐘源。
另外,實時時鐘RTC的時鐘源還可以選擇LSE,或者是HSE的128分頻。
RTC的時鐘源通過RTCSEL[1:0]來選擇。
STM32中有一個全速功能的USB模塊,其串行接口引擎需要一個頻率為48MHz的時鐘源。該時鐘源只能從PLL輸出端獲取,可以選擇為1.5分頻或者1分頻,也就是,當需要使用USB模塊時,PLL必須使能,并且時鐘頻率配置為48MHz或72MHz。
另外,STM32還可以選擇一個PLL輸出的2分頻、HSI、HSE、或者系統(tǒng)時鐘SYSCLK 輸出到MCO腳(PA8)上。
系統(tǒng)時鐘SYSCLK,是供STM32中絕大部分部件工作的時鐘源,它可選擇為PLL輸出、HSI或者HSE,(一般程序中采用PLL倍頻到72Mhz)在選擇時鐘源前注意要判斷目標時鐘源是否已經(jīng)穩(wěn)定振蕩。Max=72MHz,它分為2路:
(1)1路送給I2S2、I2S3使用的I2S2CLK,I2S3CLK;
(2)另外1路通過AHB分頻器分頻(1/2/4/8/16/64/128/256/512)分頻后送給以下8大模塊使用:
① 送給SDIO使用的SDIOCLK時鐘。
② 送給FSMC使用的FSMCCLK時鐘。
③ 送給AHB總線、內(nèi)核、內(nèi)存和DMA使用的HCLK時鐘。
④ 通過8分頻后送給Cortex的系統(tǒng)定時器時鐘(SysTick)。
⑤ 直接送給Cortex的空閑運行時鐘FCLK。
⑥ 送給APB1分頻器。APB1分頻器可選擇1、2、4、8、16分頻,其輸出一路供APB1外設使用(PCLK1,最大頻率36MHz),另一路送給定時器(Timer2-7)2、3、4倍頻器使用。該倍頻器可選擇1或者2倍頻,時鐘輸出供定時器2、3、4、5、6、7使用。
⑦ 送給APB2分頻器。APB2分頻器可選擇1、2、4、8、16分頻,其輸出一路供APB2外設使用(PCLK2,最大頻率72MHz),另一路送給定時器(Timer1、Timer8)1、2倍頻器使用。該倍頻器可選擇1或者2倍頻,時鐘輸出供定時器1和定時器8使用。另外,APB2分頻器還有一路輸出供ADC分頻器使用,分頻后得到ADCCLK時鐘送給ADC模塊使用。ADC分頻器可選擇為2、4、6、8分頻。
⑧ 2分頻后送給SDIO AHB接口使用(HCLK/2)。
2.2 時鐘輸出的使能控制
在以上的時鐘輸出中有很多是帶使能控制的,如AHB總線時鐘、內(nèi)核時鐘、各種APB1外設、APB2外設等。
當需要使用某模塊時,必需先使能對應的時鐘。需要注意的是定時器的倍頻器,當APB的分頻為1時,它的倍頻值為1,否則它的倍頻值就為2。
連接在APB1(低速外設)上的設備有:電源接口、備份接口、CAN、USB、I2C1、I2C2、UART2、UART3、SPI2、窗口看門狗、 Timer2、Timer3、Timer4。注意USB模塊雖然需要一個單獨的48MHz時鐘信號,但它應該不是供USB模塊工作的時鐘,而只是提供給串行接口引擎(SIE)使用的時鐘。USB模塊工作的時鐘應該是由APB1提供的。
連接在APB2(高速外設)上的設備有:GPIO_A-E、USART1、ADC1、ADC2、ADC3、TIM1、TIM8、SPI1、AFIO
使用HSE時鐘,程序設置時鐘參數(shù)流程:
1、將RCC寄存器重新設置為默認值 RCC_DeInit;
2、打開外部高速時鐘晶振HSE RCC_HSEConfig(RCC_HSE_ON);
3、等待外部高速時鐘晶振工作 HSEStartUpStatus = RCC_WaitForHSEStartUp();
4、設置AHB時鐘 RCC_HCLKConfig;
5、設置高速AHB時鐘 RCC_PCLK2Config;
6、設置低速速AHB時鐘 RCC_PCLK1Config;
7、設置PLL RCC_PLLConfig;
8、打開PLL RCC_PLLCmd(ENABLE);
9、等待PLL工作 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
10、設置系統(tǒng)時鐘 RCC_SYSCLKConfig;
11、判斷是否PLL是系統(tǒng)時鐘 while(RCC_GetSYSCLKSource() != 0x08)
12、打開要使用的外設時鐘 RCC_APB2PeriphClockCmd()/RCC_APB1PeriphClockCmd()
下面是STM32軟件固件庫的程序中對RCC的配置函數(shù)(使用外部8MHz晶振)
void RCC_Configuration(void)
{
RCC_DeInit();
RCC_HSEConfig(RCC_HSE_ON); //RCC_HSE_ON——HSE晶振打開(ON)
HSEStartUpStatus = RCC_WaitForHSEStartUp();
if(HSEStartUpStatus == SUCCESS) //SUCCESS:HSE晶振穩(wěn)定且就緒
{
RCC_HCLKConfig(RCC_SYSCLK_Div1); //RCC_SYSCLK_Div1——AHB時鐘 = 系統(tǒng)時鐘
RCC_PCLK2Config(RCC_HCLK_Div1); //RCC_HCLK_Div1——APB2時鐘 = HCLK
RCC_PCLK1Config(RCC_HCLK_Div2); //RCC_HCLK_Div2——APB1時鐘 = HCLK / 2
FLASH_SetLatency(FLASH_Latency_2); //FLASH_Latency_2 2延時周期
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); // 預取指緩存使能
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
// PLL的輸入時鐘 = HSE時鐘頻率;RCC_PLLMul_9——PLL輸入時鐘x 9
RCC_PLLCmd(ENABLE);
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) ;
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
//RCC_SYSCLKSource_PLLCLK——選擇PLL作為系統(tǒng)時鐘
while(RCC_GetSYSCLKSource() != 0x08); //0x08:PLL作為系統(tǒng)時鐘
}
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC , ENABLE);
//RCC_APB2Periph_GPIOA GPIOA時鐘
//RCC_APB2Periph_GPIOB GPIOB時鐘
//RCC_APB2Periph_GPIOC GPIOC時鐘
//RCC_APB2Periph_GPIOD GPIOD時鐘
}
3 STM32F4時鐘系統(tǒng)
3.1 STM32F4時鐘樹
下圖是STM32F4系列的時鐘樹。
STM32的時鐘源主要有:內(nèi)部時鐘、外部時鐘、鎖相環(huán)倍頻輸出時鐘。內(nèi)部時鐘、外部時鐘又分為告訴時鐘、低速時鐘。鎖相環(huán)倍頻輸出時鐘又主PLL時鐘、PLLI2S時鐘。具體如下圖所示。
1、LSI低速內(nèi)部時鐘:由內(nèi)部RC振蕩器產(chǎn)生,頻率為32kHz。如圖區(qū)域①;
2、HSI高速內(nèi)部時鐘:由內(nèi)部RC振蕩器產(chǎn)生,頻率為16MHz。如圖區(qū)域②;
3、LSE低速外部時鐘:一般由外部晶振提供,頻率為32.768kHz。如圖區(qū)域③;
4、HSE低速外部時鐘:一般由外部晶振提供,頻率為4~26MHz。如圖區(qū)域④;
5、主PLL時鐘:由HSE或HSI提供。如圖區(qū)域⑤;
6、PLLI2S時鐘:由HSE或HSI提供。如圖區(qū)域⑥;
3.2 時鐘的流向
我們已經(jīng)知道了各個時鐘源的輸入,那么有了輸入的時鐘源,各個時鐘源又是分別輸出給哪些外設工作。我們分別從時鐘源輸入處開始,根據(jù)走線和結(jié)點,尋找到相應的輸出。對應編號如下圖中所示。
1、LSI低速內(nèi)部時鐘:供給獨立看門狗⑴、實時時鐘RTC⑵
2、HSI高速內(nèi)部時鐘:供給系統(tǒng)時鐘⑸、時鐘輸出1MCO1⑷、主PLL時鐘⑹、PLLI2S時鐘⑺
3、LSE低速外部時鐘:供給實時時鐘RTC⑵、時鐘輸出1MCO1⑷
4、HSE低速外部時鐘:供給系統(tǒng)時鐘⑸、實時時鐘RTC⑵、主PLL時鐘⑹、PLLI2S時鐘⑺、時鐘輸出1MCO1⑷、時鐘輸出2MCO2⑶
5、主PLL時鐘:供給系統(tǒng)時鐘⑸、外設時鐘⑻、時鐘輸出1MCO1⑷、時鐘輸出2MCO2⑶
6、PLLI2S時鐘::供給I2S時鐘⑼、時鐘輸出1MCO1⑷、時鐘輸出2MCO2⑶
HSI、HSE、主PLL時鐘都可以供給系統(tǒng)時鐘⑸,STM32的很多外設是掛載在AHB、APB總線橋上的,這些外設的時鐘又是怎么樣的,這就和系統(tǒng)時鐘的流向有關(guān)了,系統(tǒng)時鐘的流向分析如下:
1、供給時鐘輸出2MCO2⑶
2、供給以太網(wǎng)PTP時鐘⑽
3、經(jīng)AHBPRESC預分頻器⑾后:HCLK到AHB總線、內(nèi)核、存儲器和DMA⒁,到Cortex系統(tǒng)定時器⒂,自由運行時鐘⒃
4、經(jīng)AHBPRESC預分頻器⑾、APBxPRESC預分頻器⑿后:供給APBx外設時鐘⒄
5、經(jīng)AHBPRESC預分頻器⑾、APBxPRESC預分頻器后⑿,再經(jīng)倍頻條件判斷⒀處理后:供給APBx定時器時鐘⒅
3.3 ST固件庫中提供的PLL配置函數(shù)
voidRCC_PLLConfig(uint32_tRCC_PLLSource,uint32_tPLLM,uint32_tPLLN,uint32_tPLLP,uint32_tPLLQ);
RCC_PLLSource為PLL的時鐘源選擇, 可選擇為RCC_PLLSource_HSE或者RCC_PLLSource_HSI.
這里的PLLM, PLLN, PLLP, PLLQ便指的是上述的幾個分頻器的分頻因子.
并且這些分頻因子取值是有限制如下:
2 <= PLLQ <= 15
2 <= PLLM <= 63
192 <= PLLN <= 432
PLLP 只能是2, 4, 6, 8其中之一.
其中PLLN就是PLL的倍頻倍數(shù)N.
并且, PLL之后得到的頻率不得超過器件的限制頻率.
舉個實際的例子, 外部晶振為8MHz, 我們想讓CPU運行于168MHz, 該怎么配置?
因為PLLM最小只能是2, 所以選擇PLLM為2.
這里8MHz的HSE被PLLM二分頻后只有4MHz了.
PLLP最小也只能是2, 我們所需要的SYSCK為168MHz, 所以從VCO出來的頻率為168 * 2 = 336MHz.
則倍頻倍數(shù)N為336 / 4 = 84, 所以PLLN為84.
PLLQ是USB OGT FS的時鐘, 固定為48MHz, 所以預分頻因子為336 / 48 =7.
則PLL配置函數(shù)應該為:
RCC_PLLConfig(RCC_PLLSource_HSE,2,84,2,7);
當然只使用這一句就不可能讓PLL工作的, 還需要配合其它配置才行.
4 用多個時鐘源、分層控制時鐘的好處
1、一個外設有多個時鐘源:可以根據(jù)需要選擇相應頻率的時鐘源。
2、分層、分開控制外設時鐘:使得各個外設的時鐘都是可控的,各個外設有對應的時鐘控制開關(guān),實際應用過程根據(jù)需要開啟相應外設時鐘,不需要的外設時鐘不開啟,可以降低功耗。
上一篇:STM32系統(tǒng)時鐘樹分析
下一篇:看懂時鐘樹——掌握系統(tǒng)時鐘配置
推薦閱讀
史海拾趣
倍(DBIC)公司自創(chuàng)立之初,就致力于在電子行業(yè)中進行技術(shù)創(chuàng)新。公司投入大量資源進行研發(fā),成功推出了一系列具有革命性的產(chǎn)品,如高效能芯片和智能傳感器。這些產(chǎn)品不僅提高了生產(chǎn)效率,還滿足了市場對智能化、高效能電子產(chǎn)品的需求。隨著技術(shù)的不斷進步,倍(DBIC)公司逐漸在行業(yè)中樹立了技術(shù)領先的形象,吸引了眾多合作伙伴和客戶。
近年來,CDIL積極響應政府政策,利用生產(chǎn)掛鉤激勵計劃(PLI)和電子元件和半導體制造促進計劃(SPECS),計劃將其產(chǎn)能從目前的5億片基礎上提高1億片。同時,公司還計劃在未來幾年內(nèi)建立兩條新的ATMP生產(chǎn)線,以進一步提升產(chǎn)能和技術(shù)水平。此外,CDIL還在碳化硅(SiC)等新技術(shù)領域進行了深入研發(fā),以滿足電動汽車、電源管理設備等新興市場的需求。
隨著市場需求的不斷變化,達晶微不斷加大研發(fā)投入,推出了一系列具有創(chuàng)新性的產(chǎn)品。這些產(chǎn)品不僅提高了能效,降低了成本,還滿足了客戶對高質(zhì)量、高性能半導體器件的需求。公司憑借技術(shù)創(chuàng)新和產(chǎn)品升級,贏得了客戶的廣泛認可。
綠索超容深知技術(shù)創(chuàng)新是企業(yè)發(fā)展的核心動力。因此,公司積極與東南大學、南京大學等高校開展合作,引入具有自主知識產(chǎn)權(quán)的獨特技術(shù)和工藝,成功開發(fā)出GS系列有機雙電層超級電容及模組。這些產(chǎn)品不僅在性能上達到了國際領先水平,還獲得了多項技術(shù)專利。技術(shù)上的突破,不僅提升了綠索超容的市場競爭力,也為其贏得了業(yè)界的廣泛認可。
三環(huán)(CCTC)公司自1970年成立以來,便致力于電子基礎材料、電子元件和通信器件的研發(fā)與生產(chǎn)。在創(chuàng)立初期,公司面臨著技術(shù)落后和資金短缺的困境,但通過不懈的努力和持續(xù)的研發(fā)投入,逐漸在電子行業(yè)中嶄露頭角。公司積極引進國外先進技術(shù)和設備,同時培養(yǎng)了一支高素質(zhì)的研發(fā)團隊,為后續(xù)的發(fā)展奠定了堅實的基礎。
近年來,隨著物聯(lián)網(wǎng)和大數(shù)據(jù)技術(shù)的快速發(fā)展,迪貝電子也積極探索將這些新技術(shù)應用于其產(chǎn)品中。公司推出了一系列智能氣體檢測和分析系統(tǒng),這些系統(tǒng)可以通過物聯(lián)網(wǎng)技術(shù)實現(xiàn)遠程監(jiān)控和數(shù)據(jù)傳輸,為用戶提供更加便捷、高效的服務。同時,迪貝電子還利用大數(shù)據(jù)技術(shù)對用戶的使用數(shù)據(jù)進行深度挖掘和分析,為產(chǎn)品的研發(fā)和優(yōu)化提供了有力的支持。這些創(chuàng)新舉措使得迪貝電子在氣體檢測及分析領域保持了領先地位,并為其未來的發(fā)展奠定了堅實的基礎。
為了提高小袋包裝機的包裝質(zhì)量,滿足生產(chǎn)的需要,將小袋包裝機的機械傳動部分,改為步進電機控制,再用步進電機控制器控制步進電機工作。其特點是機械傳動部分簡單,控制系統(tǒng)比較先進,人為誤差較小,故障率較低,操作簡單,包裝材料利用率提高,容易維修。它 ...… 查看全部問答∨ |
|
我的是遠峰的GPS機器,用的是WINCE5.0,默認開機后藍牙是關(guān)閉的,進入菜單后,自動就開啟了,現(xiàn)在我想通過編程讓它打開, 我在MSDN上發(fā)現(xiàn)用BthSetMode函數(shù)可以,但它是用于PPC下面的,在CE下根本用不了,請高手幫忙解決下!… 查看全部問答∨ |
應用層調(diào)用waveoutsetvolume的時候,發(fā)現(xiàn)驅(qū)動層并沒有調(diào)用1341的L3-interface來控制音量(2440 _WrL3Data函數(shù))。但是音量確實是變了。 這么說來音量除了通過L3-interface控制,還可以通過其它方式控制?… 查看全部問答∨ |
數(shù)字電視機頂盒(STB)開發(fā)學習平臺 此平臺包括一臺高品質(zhì)的成熟的dvb-s接收機和完全開放的源代碼、電原理圖和PCB圖,廣大dvb愛好者和單片機愛好者可以用他來學習和了解DVB的軟件和硬件結(jié)構(gòu)及嵌入式開發(fā)的整個過程,也可用來接收衛(wèi)星電視節(jié)目 硬 ...… 查看全部問答∨ |
|
*在能被ESD直接擊中的區(qū)域,每一個信號線附近都要布一條地線。 *I/O電路要盡可能靠近對應的連接器。 *對易受ESD影響的電路,應該放在靠近電路中心的區(qū)域,這樣其他電路可以為它們提供一定的屏蔽作用。 *通常在 ...… 查看全部問答∨ |
開關(guān)電源設計時高頻變壓器該怎樣計算他的參數(shù),設計時只是知道開關(guān)電源的輸出電壓、輸出電流、頻率、效率該怎樣計算。現(xiàn)在就是不知道變壓器的反射電壓該怎樣明確計算。… 查看全部問答∨ |
設計資源 培訓 開發(fā)板 精華推薦
- Microchip 升級數(shù)字信號控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領先的新器件
- 意法半導體STM32MP23x:突破成本限制的工業(yè)AI應用核心
- 意法半導體推出用于匹配遠距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設置字重-ESP32篇
- 使用樹莓派進行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- 蘋果被判侵犯3G專利,需向西班牙公司TOT賠償1.1億美元
- 從設計概念到 FPGA 原型僅需數(shù)分鐘,印度 InCore 完成 SoC Generator 平臺硅驗證
- 消息稱因難尋客戶,三星推遲美國芯片工廠的完工時間
- BOE(京東方)聯(lián)合榮耀打造榮耀Magic V5 以領先LTPO技術(shù)打造行業(yè)新標桿
- 華為ADS 4發(fā)布:多傳感器融合,提升自動駕駛安全性
- 曉鶯說:線控制動變革風云
- 大眾商用車推出AirConsole 將其信息娛樂系統(tǒng)擴展為游戲機
- 福州大學發(fā)明新機器視覺傳感器 可使機器人對極端光照做出超快反應
- 蘋果獲沉浸式虛擬顯示器相關(guān)的專利
- 英特爾汽車“折戟”,十年布局一夜歸零
- 下資料 看視頻 抽大獎!泰克汽車電子測試解決方案
- 發(fā)帖贏好禮 | MPS 工程師為您解決DC-DC設計難題
- 免費體驗業(yè)界最快編譯速度&最好性能 Quartus II v15.0網(wǎng)頁版下載有禮!
- 英飛凌BMS解決方案,為電動汽車和儲能系統(tǒng)保駕護航!
- 已結(jié)束|Maxim IO-Link通信協(xié)議設計方案詳解,5大優(yōu)勢助你輕松聯(lián)網(wǎng)!
- 下載有禮:數(shù)據(jù)中心養(yǎng)生秘籍《福祿克數(shù)據(jù)中心解決方案》等你帶回家!
- 閱讀并了解是德科技汽車電子、物聯(lián)網(wǎng)(IOT) 精彩專題,答題贏好禮!
- 免費申請測評:超小型 Linux 開發(fā)套件:Quantum Tiny Linux(帶 SoM 和擴展板)