今天來說說高端處理器的基本知識(shí),開發(fā)32位單片機(jī)首先要了解基本芯片的硬件基礎(chǔ),所以今天就講講基于STM32的硬件資源。
STM32基礎(chǔ)硬件知識(shí)
STM32與單片機(jī)的硬件接口基本一致,都是調(diào)用硬件接口控制I/O,完成相應(yīng)的功能。另外,STM32在軟件方面具有ST官方的源代碼開放的庫文件,開發(fā)速度相對輕松方便,而且BUG較少。
本文以STM32F103為例對STM32的硬件資源進(jìn)行介紹。
1、STM32最小系統(tǒng)
72 MHz -40~105°C ,有內(nèi)置的ARM核心,因此它與所有的ARM工具和軟件兼容, 128k 閃存。
NVIC 嵌套的向量式中斷控制器---可處理43個(gè)可屏蔽中斷通道(不含16個(gè)中斷線)和16個(gè)優(yōu)先級(jí)。
EXTI 外部中斷/事件控制器,含19個(gè)邊沿檢測器,用于產(chǎn)生中斷/事件請求。
時(shí)鐘和啟動(dòng)復(fù)位時(shí)內(nèi)部8MHz的RC振蕩器被選為默認(rèn)的CPU時(shí)鐘,有多個(gè)預(yù)分頻器用于配置AHB的頻率、高速APB(APB2)和低速APB(APB1)區(qū)域。AHB和高速APB 的最高頻率是72MHz,低速APB的最高頻率為36MHz。
低功耗模式:睡眠,停機(jī),待機(jī)
DMA可以用于主要的外設(shè):SPI、I2C、USART、通用和高級(jí)定時(shí)器TIMx和ADC。
通用同步/異步接受發(fā)送器(USART)
ADC(模擬/數(shù)字轉(zhuǎn)換器)::內(nèi)嵌2個(gè)12位的模擬/數(shù)字轉(zhuǎn)換器(ADC),每個(gè)ADC有多達(dá)16個(gè)外部通道。
VDD:器件內(nèi)部的工作電壓,芯片的工作電壓(Vcc>Vdd)
VCC:電路的供電電壓。
VSS:電路公共接地端電壓——接地端——接地點(diǎn)
圖1-STM32F103最小系統(tǒng)
2、啟動(dòng)選擇
圖1中上部的BOOT0和BOOT1用于設(shè)置STM32的啟動(dòng)方式,其對應(yīng)啟動(dòng)模式如下表所示:
表1- BOOT0、BOOT1啟動(dòng)模式表
BOOT0 | BOOT1 | 啟動(dòng)模式 | 說明 |
0 | X | 用戶閃存存儲(chǔ)器 | 用戶閃存存儲(chǔ)器,也就是FLASH啟動(dòng) |
1 | 0 | 系統(tǒng)存儲(chǔ)器 | 系統(tǒng)存儲(chǔ)器啟動(dòng),用于串口下載 |
1 | 1 | SRAM啟動(dòng) | SRAM啟動(dòng),用于在SRAM中調(diào)試代碼 |
用串口下載代碼時(shí),則配置BOOT0為1,BOOT1為0即可,如果想讓STM32一按復(fù)位鍵就開始跑代碼,則需要配置BOOT0為0,BOOT1隨便設(shè)置都可以。
3、復(fù)位
圖2-按鍵復(fù)位電路
STM32支持三種復(fù)位方式,分別是系統(tǒng)復(fù)位、上電復(fù)位和備份區(qū)域復(fù)位
系統(tǒng)復(fù)位:除了時(shí)鐘控制器的RCC_CSR寄存器中的復(fù)位標(biāo)志和備份區(qū)域中的寄存器以外,系統(tǒng)復(fù)位將復(fù)位所有寄存器的至它們的復(fù)位狀態(tài)。當(dāng)發(fā)生以下任一事件是產(chǎn)生系統(tǒng)復(fù)位:
(1)NRST引腳上的低電平(外部復(fù)位);
(2)窗口看門狗計(jì)數(shù)終止(WWDG復(fù)位);
(3)獨(dú)立看門狗計(jì)數(shù)終止(IWDG復(fù)位);
(4)軟件復(fù)位(SW復(fù)位);
(5)低功耗管理復(fù)位。
可以通過查看RC_CSR控制狀態(tài)寄存器中的復(fù)位狀態(tài)標(biāo)志位識(shí)別復(fù)位時(shí)間來源。
當(dāng)以下事件中之一發(fā)生時(shí),產(chǎn)生電源復(fù)位:
(1)上電/掉電復(fù)位(POR/PDR復(fù)位);
(2)從待機(jī)模式中返回。
備份域復(fù)位:
當(dāng)以下事件中之一發(fā)生時(shí),產(chǎn)生備份區(qū)域復(fù)位:
(1)軟件復(fù)位,備份區(qū)域復(fù)位可由設(shè)置備份域控制寄存器(RCC_BDCR)中的BDRST位產(chǎn)生;
(2)在VDD和VBAT兩者掉電的前提下,VDD或VBAT上電將引發(fā)備份區(qū)域復(fù)位。
4、 IO口
圖1中STM32的PORTA、PORTB以及PORTC的IO口全部引出,以便于與外部設(shè)備連接。
STM32每個(gè)GPIO 端口有兩個(gè)32 位配置寄存器(GPIOx_CRL,GPIOx_CRH),兩個(gè)32位數(shù)據(jù)寄存器(GPIOx_IDR,GPIOx_ODR),一個(gè)32 位置位/復(fù)位寄存器(GPIOx_BSRR),一個(gè)16 位復(fù)位寄存器(GPIOx_BRR)和一個(gè)32 位鎖定寄存器(GPIOx_LCKR)。
GPIO 端口的每個(gè)位可以由軟件分別配置成多種模式,如下所述。每個(gè)I/O 端口位可以自由編程,然而I/O端口寄存器必須按32 位字被訪問(不允許半字或字節(jié)訪問)。GPIOx_BSRR 和GPIOx_BRR 寄存器允許對任何GPIO 寄存器的讀/更改的獨(dú)立訪問;這樣,在讀和更改訪問之間產(chǎn)生IRQ 時(shí)不會(huì)發(fā)生危險(xiǎn)。端口位配置 CNFx[1:0]=xxb,MODEx[1:0]=xxb
對于STM32的IO口可以根據(jù)需要由軟件配置成八種模式(模電中有相關(guān)電路的具體分析):
(1)GPIO_Mode_AIN 模擬輸入;
(2)GPIO_Mode_IN_FLOATING 浮空輸入;
(3)GPIO_Mode_IPD 下拉輸入;
(4)GPIO_Mode_IPU 上拉輸入;
(5)GPIO_Mode_Out_OD 開漏輸出;
(6)GPIO_Mode_Out_PP 推挽輸出;
(7)GPIO_Mode_AF_OD 復(fù)用開漏輸出;
(8)GPIO_Mode_AF_PP 復(fù)用推挽輸出。
5、電源
圖3-電源電路
這里STM32的供電采用的是REG1117-3.3的方式,將DC5V電源轉(zhuǎn)換成為DC3.3V電源,電容作用都是一樣濾出電路中寄生的雜波,不同電容的容值通過的頻率不一樣所以電路中用了不同容值的電容把所有的雜波對地短路。可以在DC5V端增加兩個(gè)濾波電容(濾波電容通常是一大一小配合使用),基本形式是:電容濾波—三端穩(wěn)壓—電容濾波。
圖4-STM32電源框圖
Vdda是為模擬部分供電的,如果不接Vdda,芯片應(yīng)該無法運(yùn)行。
STM32的工作電壓(VDD)為2.0~3.6V。通過內(nèi)置的電壓調(diào)節(jié)器提供所需的1.8V電源。當(dāng)主電源VDD掉電后,通過Vbat腳為實(shí)時(shí)時(shí)鐘(RTC)和備份寄存器提供電源。如果應(yīng)用中沒有使用外部電池,VBAT必須連接到VDD引腳上面。
供電方案:
VDD=2.0~3.6V:VDD管腳提供IO管腳和內(nèi)部調(diào)壓器的供電;
VSSA,VDDA=2.0~3.6V:為ADC、復(fù)位模塊、RC振蕩器和PLL的模擬部分供電。使用ADC時(shí),VDD不得小于2.4V;
VBAT=1.8~3.6V:當(dāng)(通過電源開關(guān))關(guān)閉VDD時(shí),為RTC、外部32KHz振蕩器和后備寄存器供電。
6、燒寫接口
圖5-JTAG接口電路
如果要減小插座的數(shù)量,就用SWD模式的仿真,在這個(gè)模式下,如果用JLINK只要四根線就可以了,這四根線分別是:3.3V、GND、SWDIO(PA13)、SWCLK(PA14)。
其中:
STM32的JTMS/SWDIO接JTAG口的TMS;
STM32的JTCK/SWCLK接JTAG口的TCK。
如果要用ULINK2,則再加多一條“NRST”,即5條。
STM32的SWD接口與JTAG是共用的,只要接上JTAG,就可以使用SWD模式了(其實(shí)并不需要JTAG這么多線),JLINKV8和ULINK2都支持SWD。
這個(gè)接口可自行定義,在使用時(shí)用杜邦線跳接或做塊轉(zhuǎn)換接口板聯(lián)接仿真器與目標(biāo)板即可。
7、時(shí)鐘與晶振
在STM32中,有五個(gè)時(shí)鐘源,分別為HSI、HSE、LSI、LSE、PLL。其實(shí)是四個(gè)時(shí)鐘源,如圖6所示(灰藍(lán)色),PLL是由鎖相環(huán)電路倍頻得到PLL時(shí)鐘。
(1)HSI是高速內(nèi)部時(shí)鐘,RC振蕩器,頻率為8MHz。
(2)HSE是高速外部時(shí)鐘,可接石英/陶瓷諧振器,或者接外部時(shí)鐘源,頻率范圍為4MHz~16MHz。
(3)LSI是低速內(nèi)部時(shí)鐘,RC振蕩器,頻率為40kHz。
(4)LSE是低速外部時(shí)鐘,接頻率為32.768kHz的石英晶體。
(5) PLL為鎖相環(huán)倍頻輸出,其時(shí)鐘輸入源可選擇為HSI/2、HSE或者HSE/2。倍頻可選擇為2~16倍,但是其輸出頻率最大不得超過72MHz。
圖6-STM32時(shí)鐘系統(tǒng)框圖
對于單片機(jī)系統(tǒng)來說,CPU和總線以及外設(shè)的時(shí)鐘設(shè)置是非常重要的,因?yàn)闆]有時(shí)鐘就沒有時(shí)序。由于時(shí)鐘是一個(gè)由內(nèi)而外的東西,具體設(shè)置要從寄存器開始。一般板子上只有8Mhz的晶振,而增強(qiáng)型最高工作頻率為72Mhz,顯然需要用PLL倍頻9倍,這些設(shè)置都需要在初始化階段完成。一般性的時(shí)鐘設(shè)置需要先考慮系統(tǒng)時(shí)鐘的來源,是內(nèi)部RC還是外部晶振還是外部的振蕩器,是否需要PLL。STM需要2個(gè)晶振,1個(gè)是HSE,常用外部高頻,PLL倍頻用,常8MHz;另一個(gè)為外部低頻晶振,系統(tǒng)待機(jī)或低功耗時(shí)用,為32.6KHz。外接的那個(gè)用于 RTC 的32768 晶振,需要專用的負(fù)載晶振。
圖7-STM32外部晶振電路圖
然后考慮內(nèi)部總線和外部總線,最后考慮外設(shè)的時(shí)鐘信號(hào)。遵從先倍頻作為CPU時(shí)鐘,然后在由內(nèi)向外分頻,下級(jí)遷就上級(jí)的原則有點(diǎn)兒類似PCB制圖的規(guī)范化要求,在這里也一樣。
本文對STM32 的硬件部分做大致介紹,設(shè)計(jì)時(shí)用到其它的具體知識(shí)后期會(huì)陸續(xù)進(jìn)行補(bǔ)充介紹,并附實(shí)例程序。
責(zé)任編輯:lq
-
ARM
+關(guān)注
關(guān)注
134文章
9153瀏覽量
368509 -
STM32
+關(guān)注
關(guān)注
2270文章
10921瀏覽量
356995 -
硬件設(shè)計(jì)
+關(guān)注
關(guān)注
18文章
399瀏覽量
44633
原文標(biāo)題:【值得學(xué)習(xí)的好文章】經(jīng)典的STM32硬件設(shè)計(jì)學(xué)習(xí)筆記
文章出處:【微信號(hào):KY_QRS,微信公眾號(hào):開源嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論