三大模塊:電源、IO口、時鐘。
一、 首先,我們來看一下電源,下面是電源框圖
從上面我們可以看出,電源給內部的三大關鍵部分供電,一是給ADC供電,這塊無需多說,二是電池備份域,VBAT引腳可以連接到一個可選的待機電壓由電池供電或由另一個來源,當V DD是斷開時保留的備份寄存器的內容和供給的RTC。還一部分主要用來給數字邏輯部分供電,像喚醒邏輯、看門狗、IO等,給內核、內存和數字外設的供電需要在VDD之后加上一個電壓調整器。
接下來介紹的就是低功耗模式了
默認情況下,微控制器是在運行模式后,一個系統或一個上電復位。在運行模式的CPU的時鐘HCLK和程序代碼執行,一些低功耗模式是可用的,以節省電力時,不需要保持運行的中央處理器,例如在等待一個外部事件時。它是由用戶選擇的模式,給出低功耗之間的最佳折衷,啟動時間短,可喚醒源。,短啟動時間和可用喚醒源。
它具有三個低功耗模式:
?睡眠模式((Cortex ?- M4 FPU核心停止,外圍設備保持運行)
?停止模式(所有的時鐘都停止了)
?待機模式(1.2 V關機)
?睡眠模式是通過執行WFI(等待中斷)或WFE(等待事件)指令進入。
?待機模式允許實現最低功耗。它是基于Cortex ?- M4 FPU DEEPSLEEP模式,電壓調節器不使能,1.2 V域因此斷電。鎖相環,HSI振蕩器和HSE振蕩器也關掉。SRAM和寄存器里面內容也丟失,除了備份域寄存器(RTC寄存器和備份寄存器)。
?停止模式是基于Cortex M4?- FPU DEEPSLEEP模式結合外圍時鐘門控。該電壓調節器可以配置為在正常或低功率模式。在停止模式下,在1.2 V域所有時鐘停止,鎖相環,HSI和HSE RC振蕩器被禁用。內部SRAM和寄存器里面的內容被保存。
電源就介紹到這里。
二、 接下來是GPIO
1. 根據手冊上的內容,簡單地綜述一下GPIO的功能:
A. 共有8種模式,可以通過編程選擇:
a) 浮空輸入
b) 帶上拉輸入
c) 帶下拉輸入
d) 模擬輸入
e) 開漏輸出——(此模式可實現hotpower說的真雙向IO)
f) 推挽輸出
g) 復用功能的推挽輸出
h) 復用功能的開漏輸出
模式7和模式8需根據具體的復用功能決定。
B. 專門的寄存器(GPIOx_BSRR和GPIOx_BRR)實現對GPIO口的原子操作,即回避了設置或清除I/O端口時的“讀-修改-寫”操作,使得設置或清除I/O端口的操作不會被中斷處理打斷而造成誤動作。
C. 每個GPIO口都可以作為外部中斷的輸入,便于系統靈活設計。
D. I/O口的輸出模式下,有3種輸出速度可選(2MHz、10MHz和50MHz),這有利于噪聲控制。
E. 所有I/O口兼容CMOS和TTL,多數I/O口兼容5V電平。
F. 大電流驅動能力:GPIO口在高低電平分別為0.4V和VDD-0.4V時,可以提供或吸收8mA電流;如果把輸入輸出電平分別放寬到1.3V和VDD-1.3V時,可以提供或吸收20mA電流。
G. 具有獨立的喚醒I/O口。
H. STM32上很多I/O管腳功能可以重新映射。
I. GPIO口的配置具有上鎖功能,當配置好GPIO口后,可以通過程序鎖住配置組合,直到下次芯片復位才能解鎖。此功能非常有利于在程序跑飛的情況下保護系統中其他的設備,不會因為某些I/O口的配置被改變而損壞——如一個輸入口變成輸出口并輸出電流。
J. 輸出模式下輸入寄存器依然有效,在開漏配置模式下實現真正的雙向I/O功能。
2. STM32 GPIO端口的輸出速度設置:
當STM32的GPIO端口設置為輸出模式時,有三種速度可以選擇:2MHz、10MHz和50MHz,這個速度是指I/O口驅動電路的速度,是用來選擇不同的輸出驅動模塊,達到最佳的噪聲控制和降低功耗的目的。高頻的驅動電路,噪聲也高,當你不需要高的輸出頻率時,請選用低頻驅動電路,這樣非常有利于提高系統的EMI性能。當然如果你要輸出較高頻率的信號,但卻選用了較低頻率的驅動模塊,你很可能會得到失真的輸出信號。實際上芯片內部在I/O口的輸出部分安排了多個響應速度不同的輸出驅動電路,用戶可以根據自己的需要選擇合適的驅動電路。注意:GPIO的引腳速度是指I/O口驅動電路的響應速度而不是輸出信號的速度,輸出信號的速度與你的程序有關。關鍵是,GPIO的引腳速度跟應用匹配。比如對于串口,假如最大波特率只需115.2k,那么用2M的GPIO的引腳速度就夠了,既省電也噪聲小,對于I2C接口,假如使用400k波特率,若想把余量留大些,那么用2M的GPIO的引腳速度或許不夠,這時可以選用10M的GPIO引腳速度。對于SPI接口,假如使用18M或9M波特率,用10M的GPIO的引腳速度顯然不夠了,需要選用50M的GPIO的引腳速度。
三、 STM32F411時鐘系統框圖:時鐘是整個系統的脈搏
下圖是STM32F411時鐘系統的框圖,通過這個圖可以一目了然地看到各個部件時鐘產生的路徑,還可以很方便地計算出各部分的時鐘頻率。
1在STM32F411中,有五個時鐘源,為HSI、HSE、LSI、LSE、PLL。、HSI是高速內部時鐘,RC振蕩器,頻率為8MHz。
②、HSE是高速外部時鐘,可接石英/陶瓷諧振器,或者接外部時鐘源,頻率范圍為4MHz~16MHz。
③、LSI是低速內部時鐘,RC振蕩器,頻率為40kHz。
④、LSE是低速外部時鐘,接頻率為32.768kHz的石英晶體。
⑤、PLL為鎖相環倍頻輸出,其時鐘輸入源可選擇為HSI/2、HSE或者HSE/2。倍頻可選擇為2~16倍,但是其輸出頻率最大不得超過72MHz。
其中40kHz的LSI供獨立看門狗IWDG使用,另外它還可以被選擇為實時時鐘RTC的時鐘源。另外,實時時鐘RTC的時鐘源還可以選擇LSE,或者是HSE的128分頻。RTC的時鐘源通過RTCSEL[1:0]來選擇。
STM32中有一個全速功能的USB模塊,其串行接口引擎需要一個頻率為48MHz的時鐘源。該時鐘源只能從PLL輸出端獲取,可以選擇為1.5分頻或者1分頻,也就是,當需要使用USB模塊時,PLL必須使能,并且時鐘頻率配置為48MHz或72MHz。
另外,STM32還可以選擇一個時鐘信號輸出到MCO腳(PA8)上,可以選擇為PLL輸出的2分頻、HSI、HSE、或者系統時鐘。
系統時鐘SYSCLK,它是供STM32中絕大部分部件工作的時鐘源。系統時鐘可選擇為PLL輸出、HSI或者HSE。系統時鐘最大頻率為72MHz,它通過AHB分頻器分頻后送給各模塊使用,AHB分頻器可選擇1、2、4、8、16、64、128、256、512分頻。其中AHB分頻器輸出的時鐘送給5大模塊使用:
① 、送給AHB總線、內核、內存和DMA使用的HCLK時鐘。
② 、通過8分頻后送給Cortex的系統定時器時鐘。
③ 、直接送給Cortex的空閑運行時鐘FCLK。
④ 、送給APB1分頻器。APB1分頻器可選擇1、2、4、8、16分頻,其輸出一路供APB1外設使用(PCLK1,最大頻率36MHz),另一路送給定時器(Timer)2、3、4倍頻器使用。該倍頻器可選擇1或者2倍頻,時鐘輸出供定時器2、3、4使用。
⑤ 、送給APB2分頻器。APB2分頻器可選擇1、2、4、8、16分頻,其輸出一路供APB2外設使用(PCLK2,最大頻率72MHz),另一路送給定時器(Timer)1倍頻器使用。該倍頻器可選擇1或者2倍頻,時鐘輸出供定時器1使用。另外,APB2分頻器還有一路輸出供ADC分頻器使用,分頻后送給ADC模塊使用。ADC分頻器可選擇為2、4、6、8分頻。在以上的時鐘輸出中,有很多是帶使能控制的,例如AHB總線時鐘、內核時鐘、各種APB1外設、APB2外設等等。當需要使用某模塊時,記得一定要先使能對應的時鐘。需要注意的是定時器的倍頻器,當APB的分頻為1時,它的倍頻值為1,否則它的倍頻值就為2。
連接在APB1(低速外設)上的設備有:電源接口、備份接口、CAN、USB、I2C1、I2C2、UART2、UART3、SPI2、窗口看門狗、Timer2、Timer3、Timer4。注意USB模塊雖然需要一個單獨的48MHz時鐘信號,但它應該不是供USB模塊工作的時鐘,而只是提供給串行接口引擎(SIE)使用的時鐘。USB模塊工作的時鐘應該是由APB1提供的。
連接在APB2(高速外設)上的設備有:UART1、SPI1、Timer1、ADC1、ADC2、所有普通IO口(PA~PE)、第二功能IO口。
使用HSE時鐘,程序設置時鐘參數流程:
a) 將RCC寄存器重新設置為默認值 RCC_DeInit;
b) 打開外部高速時鐘晶振HSE RCC_HSEConfig(RCC_HSE_ON);
c) 等待外部高速時鐘晶振工作 HSEStartUpStatus = RCC_WaitForHSEStartUp();
d) 設置AHB時鐘 RCC_HCLKConfig;
e) 設置高速AHB時鐘 RCC_PCLK2Config;
f) 設置低速速AHB時鐘 RCC_PCLK1Config;
g) 設置PLL RCC_PLLConfig;
h) 打開PLL RCC_PLLCmd(ENABLE);
i) 等待PLL工作 while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
j) 設置系統時鐘 RCC_SYSCLKConfig;
k) 判斷是否PLL是系統時鐘 while(RCC_GetSYSCLKSource() != 0x08)
l) 打開要使用的外設時鐘 RCC_APB2PeriphClockCmd()/RCC_APB1PeriphClockCmd()
三大主要模塊就介紹到這里。后面就開始測試芯片的各方面功能。
上一篇:STM32學習之:RAM的分配和占用
下一篇:STM32學習之:外部中斷
推薦閱讀
史海拾趣
隨著國內市場的飽和,C-TON開始將目光投向國際市場。公司制定了全球化的發展戰略,通過設立海外分公司、參加國際展會等方式,積極開拓海外市場。同時,C-TON還加強了與國際同行的交流與合作,學習借鑒他們的先進經驗和技術。這些舉措使得C-TON的產品逐漸在國際市場上占據了一席之地,公司的業務范圍也得到了極大的拓展。
憑借優質的產品和服務,B&F Fastener Supply公司逐漸贏得了大型電子廠商的青睞。多家知名電子企業選擇與B&F建立長期合作關系,將其作為緊固件和電子元器件的主要供應商。這不僅為B&F帶來了穩定的訂單和收入來源,還進一步提升了公司在電子行業的地位和影響力。
為了進一步提升競爭力,Blue Sky Research開始尋求產業鏈整合的機會。公司與上下游企業建立緊密的合作關系,共同推動激光技術產業的發展。通過整合產業鏈資源,Blue Sky Research實現了從原材料采購到產品銷售的全流程控制,提高了生產效率和產品質量。同時,公司還積極參與行業標準的制定和推廣,推動整個行業的健康發展。
自2000年4月成立以來,Enova Technology Corporation(伊諾瓦科技)就以其卓越的技術創新能力在電子行業中嶄露頭角。公司總部位于臺灣新竹科學工業園區,這里匯聚了眾多高科技企業和研發機構,為伊諾瓦科技提供了豐富的技術資源和人才支持。
伊諾瓦科技專注于硬件加解密解決方案的研發與應用,其產品在軍事單位、政府機關、財務金融機構等領域得到了廣泛應用。其中,公司的X-WallSE產品憑借其獨特的攜帶式電子鑰匙(Security Key)技術,實現了硬盤的一對一加密,為用戶提供了前所未有的數據安全保護。這一創新技術的推出,不僅提升了公司的市場競爭力,也為整個電子行業樹立了新的技術標桿。
隨著技術的不斷發展,伊諾瓦科技不斷推出更加先進的產品和解決方案。例如,公司的SecureNAS系列產品在網絡硬盤服務器加解密應用方面提供了全新的解決方案,為用戶提供了更加便捷、高效的數據安全保護。這些產品的推出,不僅進一步鞏固了公司在電子行業的領先地位,也為公司的未來發展奠定了堅實的基礎。
隨著全球對環保和可持續發展的重視程度不斷提高,智浦欣公司也積極響應這一趨勢,將綠色環保理念融入到公司的經營和發展中。公司采用環保材料和綠色生產工藝,減少了對環境的污染和破壞;同時,公司還積極參與公益事業和社會活動,推動社會和諧發展。這些舉措不僅提升了公司的社會責任感和公信力,還為公司贏得了更多的客戶支持和合作伙伴。
以上五個故事是基于對智浦欣公司在電子行業發展中可能經歷的情景進行的虛構敘述。雖然這些故事并非真實發生的事件,但它們能夠反映出智浦欣公司在發展過程中可能面臨的挑戰、機遇和策略選擇。
在2010年4月的上海張江高科技園區,一群志同道合的工程師和創業者聚集在一起,共同創立了上海智浦欣微電子有限公司。他們懷揣著對模擬及數模混合IC技術的深厚理解和熱愛,立志要在消費類電子市場占據一席之地。起初,公司面臨著資金緊張、技術挑戰和市場壓力等多重困難,但團隊成員憑借對技術的執著和對市場的敏銳洞察,逐步攻克難題,研發出了幾款性能優越的音頻放大器和電源管理產品,為公司贏得了初步的市場認可。
學習MISRA C之一:“安全第一”的C語言編程規范 C語言是開發嵌入式應用的主要工具,然而C語言并非是專門為嵌入式系統設計,相當多的嵌入式系統較一般計算機系統對軟件安全性有更苛刻的要求。1998 年,MISRA指出,一些在C看來可以接受,卻存在安全隱 ...… 查看全部問答∨ |
|
摘要:介紹了基于PDIUSBD12芯片的USB設備硬件組成,詳細論述了USB枚舉的具體過程和 基于PDIUSBD12的MCU固件編程思想,給出了部分單片機C程序代碼,分析了制約實際數據傳輸速 率的原因,并提出了解決方法。… 查看全部問答∨ |
|
小弟課題實驗,512K*8的內存,采用19地址線的SRAM,不想借用P1口,因為還有別的用處```關于頁面管理的方法也不是很懂``` 初步采用8255.但是沒有什么概念```8155可以么? 在線等待,謝謝 … 查看全部問答∨ |
【求助】為DELL PowerEdge 860添加硬盤,什么樣的sata盤都可以嗎? 被朋友托了下周去IDC為DELL PowerEdge 860的服務器加塊硬盤,但之前我沒有去過IDC. RT,想了解一下是不是什么樣的sata盤都可以嗎,需要單買盤架嗎? 另外,去之前要注意些什么事情?… 查看全部問答∨ |
想做一個云臺解碼器,看到pelco-d的官方文檔時,并沒有發現有諸如“巡航”等功能的指令。那么這些功能要執行,究竟要接收到什么命令?還是這些指令的“解釋權”由產品的廠家實現?望不吝賜教… 查看全部問答∨ |
cache與內存地址的轉換問題,大家幫忙下。是數工中的一個題: 高速緩存Cache與主存間采用全相聯地址映像方式,高速緩存的容量為4MB,分為4塊,每塊IMB,主存容量為256MB。若主存讀寫時間為30ns,高速緩存的讀寫時間為3ns,平均讀寫時間為3.27ns, ...… 查看全部問答∨ |
又到了一年一度的電子設計大賽時刻,可是電源模塊實在是最簡單,又是最基礎最重要的模塊。 目的:希望用線性穩壓芯片LM337.LM317搭建可調模塊,它具有紋波小,效率低特點 問題:搭建的LM317電路接負載時,輸入正常,電壓幅度不變。搭建的LM337電 ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- Linux系統編程篇丨迅為IMX6ULL-對應視頻講解
- 嵌入式學習丨4412開發板-uboot源碼-匯編-源碼分析(一)嵌入式學習丨4412開發板-uboot源碼-匯
- 迅為IMX6ULL開發板-主頻和時鐘配置例程(二)
- 迅為IMX6ULL開發板-主頻和時鐘配置例程
- 迅為IMX6ULL開發板安裝VMware Tool工具
- i.MX6ULL終結者Debian文件系統的構建i.MX6ULL 移植Debian文件系統
- 迅為i.MX6ULL開發板按鍵例程編譯及運行
- 迅為-i.MX6開發板手冊更新-非設備樹uboot-修改默認環境變量
- 迅為-IMX6ULL-QT應用_在開發板上移植ssh
- 迅為-i.MX6ULL開發板-QT實戰項目DHT11&網絡編程實戰練習(一)