【認(rèn)識STM32】
?F1 代表了基礎(chǔ)型,基于
Cortex-M3 內(nèi)核,主頻為72MHZ,F(xiàn)4 代表了高性能,基于 Cortex-M4 內(nèi)核,主頻 180M。
【GPIO外設(shè)】
一、GPIO的八種工作模式
1、上拉輸入:IO口在無輸入的情況下,保持高電平。
2、下拉輸入:IO口在無輸入的情況下,保持低電平。
3、浮空輸入:浮空輸入狀態(tài)下,IO的電平狀態(tài)是不確定的,完全由外部輸入決定,如果在該引腳懸空的情況下,讀取該端口的電平是不確定的。
4、模擬輸入:輸入信號不經(jīng)施密特觸發(fā)器直接接入,輸入信號為模擬量而非數(shù)字量,其余輸入方式輸入數(shù)字量。
5、推挽輸出:可以輸出高、低電平,連接數(shù)字器件;推挽結(jié)構(gòu)一般是指兩個三極管分別受兩個互補(bǔ)信號的控制,總是在一個三極管導(dǎo)通的時候另一個截止。高低電平由IC的電源決定。導(dǎo)通損耗小、效率高。輸出既可以向負(fù)載灌電流,也可以從負(fù)載抽取電流。推拉式輸出級既提高電路的負(fù)載能力,又提高開關(guān)速度。
6、開漏輸出:輸出端相當(dāng)于三極管的集電極,要得到高電平狀態(tài)需要上拉電阻才行。適合于做電流型的驅(qū)動,其吸收電流的能力相對強(qiáng)(一般20mA以內(nèi))。開漏形式的電路有以下幾個特點(diǎn):
(1)利用外部電路的驅(qū)動能力,減少IC內(nèi)部的驅(qū)動。當(dāng)IC內(nèi)部MOSFET導(dǎo)通時,驅(qū)動電流是從外部的VCC流經(jīng)上拉電阻、MOSFET到GND。IC內(nèi)部僅需很小的柵極驅(qū)動電流。
(2)一般來說,開漏是用來連接不同電平的器件,匹配電平用的,因?yàn)殚_漏引腳不連接外部的上拉電阻時,只能輸出低電平,如果需要同時具備輸出高電平的功能,則需要接上拉電阻,很好的一個優(yōu)點(diǎn)是通過改變上拉電源的電壓,便可以改變傳輸電平。比如加上上拉電阻就可以提供TTL/CMOS電平輸出等。(上拉電阻的阻值決定了邏輯電平轉(zhuǎn)換的速度。阻值越大,速度越低功耗越小,所以負(fù)載電阻的選擇要兼顧功耗和速度。)
(3)開漏輸出提供了靈活的輸出方式,但是也有其弱點(diǎn),就是帶來上升沿的延時。因?yàn)樯仙厥峭ㄟ^外接上拉無源電阻對負(fù)載充電,所以當(dāng)電阻選擇小時延時就小,但功耗大;反之延時大功耗小。所以如果對延時有要求,則建議用下降沿輸出。
(4)可以將多個開漏輸出連接到一條線上。通過一只上拉電阻,在不增加任何器件的情況下,形成“與邏輯”關(guān)系,即“線與”??梢院唵蔚睦斫鉃椋涸谒幸_連在一起時,外接一上拉電阻,如果有一個引腳輸出為邏輯0,相當(dāng)于接地,與之并聯(lián)的回路“相當(dāng)于被一根導(dǎo)線短路”,所以外電路邏輯電平便為0,只有都為高電平時,與的結(jié)果才為邏輯1。
7、復(fù)用推挽輸出:此時IO受內(nèi)部外設(shè)控制,比如定時器的PWM,比如SPI的MOSI,MISO等。而普通的推挽輸出,則IO受ODR控制。
8、復(fù)用開漏輸出:參考復(fù)用推挽。
二、總結(jié)在STM32中選用IO模式
1、浮空輸入GPIO_IN_FLOATING ——浮空輸入,可以做KEY識別,RX1。
2、帶上拉輸入GPIO_IPU——IO內(nèi)部上拉電阻輸入。
3、帶下拉輸入GPIO_IPD—— IO內(nèi)部下拉電阻輸入。
4、模擬輸入GPIO_AIN ——應(yīng)用ADC模擬輸入,或者低功耗下省電。
5、開漏輸出GPIO_OUT_OD ——IO輸出0接GND,IO輸出1,懸空,需要外接上拉電阻,才能實(shí)現(xiàn)輸出高電平。當(dāng)輸出為1時,IO口的狀態(tài)由上拉電阻拉高電平,但由于是開漏輸出模式,這樣IO口也就可以由外部電路改變?yōu)榈碗娖交虿蛔???梢宰xIO輸入電平變化,實(shí)現(xiàn)C51的IO雙向功能。
6、推挽輸出GPIO_OUT_PP ——IO輸出0-接GND, IO輸出1 -接VCC,讀輸入值是未知的。
7、復(fù)用功能的推挽輸出GPIO_AF_PP ——片內(nèi)外設(shè)功能(I2C的SCL,SDA)。
8、復(fù)用功能的開漏輸出GPIO_AF_OD——片內(nèi)外設(shè)功能(TX1,MOSI,MISO.SCK.SS)。
【RCC時鐘】
RCC時鐘的主要作用:設(shè)置系統(tǒng)時鐘 SYSCLK 、設(shè)置 AHB 分頻因子(決定 HCLK 等于多少)、設(shè)置 APB2 分頻因子(決定 PCLK2 等于多少)、設(shè)置 APB1 分頻因子(決定 PCLK1 等于多少)、設(shè)置各個外設(shè)的分頻因子;控制 AHB 、 APB2 和 APB1 這三條總線時鐘的開啟、控制每個外設(shè)的時鐘的開啟。對于 SYSCLK、HCLK、PCLK2、PCLK1 這四個時鐘的配置一般是:PCLK2 = HCLK = SYSCLK=PLLCLK = 72M, PCLK1=HCLK/2 = 36M。(以stm32f103vet6為例)
使用HSE時,設(shè)置系統(tǒng)時鐘的步驟
* 1、開啟HSE ,并等待 HSE 穩(wěn)定
* 2、設(shè)置 AHB、APB2、APB1的預(yù)分頻因子
* 3、設(shè)置PLL的時鐘來源,和PLL的倍頻因子,設(shè)置各種頻率主要就是在這里設(shè)置
* 4、開啟PLL,并等待PLL穩(wěn)定
* 5、把PLLCK切換為系統(tǒng)時鐘SYSCLK
* 6、讀取時鐘切換狀態(tài)位,確保PLLCLK被選為系統(tǒng)時鐘
【NVIC是嵌套向量中斷控制器】
一、優(yōu)先級定義
在 NVIC 有一個專門的寄存器:中斷優(yōu)先級寄存器 NVIC_IPRx,用來配置外部中斷的優(yōu)先級,IPR 寬度為 8bit,原則上每個外部中斷可配置的優(yōu)先級為 0~255,數(shù)值越小,優(yōu)先級越高。但是絕大多數(shù) CM3 芯片都會精簡設(shè)計(jì),以致實(shí)際上支持的優(yōu)先級數(shù)減少,在 F103 中,只使用了高 4bit,用于表達(dá)優(yōu)先級的這 4bit,又被分組成搶占優(yōu)先級和子優(yōu)先級。如果有多個中斷同時響應(yīng),搶占 優(yōu)先級高的就會搶占搶占優(yōu)先級低的優(yōu)先得到執(zhí)行,如果搶占優(yōu)先級相同,就比較子優(yōu)先級。如果搶占優(yōu)先級和子優(yōu)先級都相同的話,就比較他們的硬件中斷編號,編號越小,優(yōu)先級越高。
二、優(yōu)先級分組
優(yōu)先級的分組由內(nèi)核外設(shè) SCB 的應(yīng)用程序中斷及復(fù)位控制寄存器 AIRCR 的 PRIGROUP[10:8] 位 決定,F(xiàn)103 分為了 5 組,具體如下:主優(yōu)先級 = 搶占優(yōu)先級。
【EXTI外部中斷/事件控制器】
EXTI(External interrupt/event controller)—外部中斷/事件控制器,管理了控制器的 20 個中斷/事 件線。每個中斷/事件線都對應(yīng)有一個邊沿檢測器,可以實(shí)現(xiàn)輸入信號的上升沿檢測和下降沿的檢測。EXTI 可以實(shí)現(xiàn)對每個中斷/事件線進(jìn)行單獨(dú)配置,可以單獨(dú)配置為中斷或者事件,以及觸 發(fā)事件的屬性。
【SysTick系統(tǒng)定時器】
SysTick—系統(tǒng)定時器是屬于 CM3 內(nèi)核中的一個外設(shè),內(nèi)嵌在 NVIC 中。系統(tǒng)定時器是一個 24bit 的向下遞減的計(jì)數(shù)器,計(jì)數(shù)器每計(jì)數(shù)一次的時間為 1/SYSCLK,一般我們設(shè)置系統(tǒng)時鐘 SYSCLK 等于 72M。當(dāng)重裝載數(shù)值寄存器的值遞減到 0 的時候,系統(tǒng)定時器就產(chǎn)生一次中斷,以此循環(huán)往 復(fù)。
【通訊的基本概念】
一、串行通訊與并行通訊
按數(shù)據(jù)傳送的方式,通訊可分為串行通訊與并行通訊,串行通訊是指設(shè)備之間通過少量數(shù)據(jù)信號線 (一般是 8 根以下),地線以及控制信號線,按數(shù)據(jù)位形式一位一位地傳輸數(shù)據(jù)的通訊方式。而并行通訊一般是指使用 8、16、32 及 64 根或更多的數(shù)據(jù)線進(jìn)行傳輸?shù)耐ㄓ嵎绞健?/p>
二、全雙工、半雙工及單工通訊
根據(jù)數(shù)據(jù)通訊的方向,通訊又分為全雙工、半雙工及單工通訊,它們主要以信道的方向來區(qū)。
三、同步通訊與異步通訊
根據(jù)通訊的數(shù)據(jù)同步方式,又分為同步和異步兩種,可以根據(jù)通訊過程中是否有使用到時鐘信號。
在同步通訊中,收發(fā)設(shè)備雙方會使用一根信號線表示時鐘信號,在時鐘信號的驅(qū)動下雙方進(jìn)行協(xié) 調(diào),同步數(shù)據(jù),見圖同步通訊 。通訊中通常雙方會統(tǒng)一規(guī)定在時鐘信號的上升沿或下降沿對數(shù) 據(jù)線進(jìn)行采樣。
在異步通訊中不使用時鐘信號進(jìn)行數(shù)據(jù)同步,它們直接在數(shù)據(jù)信號中穿插一些同步用的信號位, 或者把主體數(shù)據(jù)進(jìn)行打包,以數(shù)據(jù)幀的格式傳輸數(shù)據(jù),見圖某種異步通訊 ,某些通訊中還需要雙方約定數(shù)據(jù)的傳輸速率,以便更好地同步。
在同步通訊中,數(shù)據(jù)信號所傳輸?shù)膬?nèi)容絕大部分就是有效數(shù)據(jù),而異步通訊中會包含有幀的各種標(biāo)識符,所以同步通訊的效率更高,但是同步通訊雙方的時鐘允許誤差較小,而異步通訊雙方的時鐘允許誤差較大。
四、通訊速率
衡量通訊性能的一個非常重要的參數(shù)就是通訊速率,通常以比特率 (Bitrate) 來表示,即每秒鐘傳輸?shù)亩M(jìn)制位數(shù),單位為比特每秒 (bit/s)。容易與比特率混淆的概念是“波特率”(Baudrate),它表示每秒鐘傳輸了多少個碼元。通訊中常用時間間隔相同的符號來表示一個二進(jìn)制數(shù)字,這樣的信號稱為碼元。
例:常見的通訊傳輸中,用 0V 表示數(shù)字 0,5V 表示數(shù)字 1,那么一個碼元可以表示兩種狀態(tài) 0 和 1,所以一個碼元等于一個二進(jìn)制比特位,此時波特率的大小與比特率一致;如果在通訊傳輸中,有 0V、2V、4V 以及 6V 分別表示二進(jìn)制數(shù) 00、01、10、11,那么每個碼元可以表示四種狀態(tài),即兩個二進(jìn)制比特位,所以碼元數(shù)是二進(jìn)制比特位數(shù)的一半,這個時候的波特率為比特率的一半。因?yàn)楹芏喑R姷耐ㄓ嵵幸粋€碼元都是表示兩種狀態(tài),人們常常直接以波特率來表示比特率。
【串口通訊】
一、物理層:
串口通訊的物理層有很多標(biāo)準(zhǔn)及變種,我們主要講解 RS-232 標(biāo)準(zhǔn)。
根據(jù)通訊使用的電平標(biāo)準(zhǔn)不同,串口通訊可分為 TTL 標(biāo)準(zhǔn)及 RS-232 標(biāo)準(zhǔn)。
TTL 的電平標(biāo)準(zhǔn),理想狀態(tài)下,使用 5V 表示二進(jìn)制邏輯 1,使用 0V 表示邏輯 0;而為了增加串口通訊的遠(yuǎn)距離傳輸及抗干擾能力,它使用-15V 表示邏輯 1,+15V 表示邏輯 0,即RS232。
因?yàn)榭刂破饕话闶褂?TTL 電平標(biāo)準(zhǔn),所以常常會使用 MA3232 芯片對 TTL 及 RS-232 電平的信號進(jìn)行互相轉(zhuǎn)換。
在目前的其它工業(yè)控制使用的串口通訊中,一般只使用 RXD、TXD 以及 GND 三條信號線,直接傳輸數(shù)據(jù)信號,而 RTS、CTS、DSR、DTR 及 DCD 信號都被裁剪掉了。
二、協(xié)議層
串口通訊的數(shù)據(jù)包由發(fā)送設(shè)備通過自身的 TXD 接口傳輸?shù)浇邮赵O(shè)備的 RXD 接口。在串口通訊的協(xié)議層中,規(guī)定了數(shù)據(jù)包的內(nèi)容,它由啟始位、主體數(shù)據(jù)、校驗(yàn)位以及停止位組成,通訊雙方的數(shù)據(jù)包格式要約定一致才能正常收發(fā)數(shù)據(jù)。
波特率:串口異步通訊,異步通訊中由于沒有時鐘信號 (如前面講解的 DB9 接口中是 沒有時鐘信號的),所以兩個通訊設(shè)備之間需要約定好波特率,即每個碼元的長度,以便對信號 進(jìn)行解碼,圖串口數(shù)據(jù)包的基本組成 中用虛線分開的每一格就是代表一個碼元。常見的波特率為 4800、9600,115200 等。
通訊的起始和停止信號:串口通訊的一個數(shù)據(jù)包從起始信號開始,直到停止信號結(jié)束。數(shù)據(jù)包的起始信號由一個邏輯 0 的數(shù)據(jù)位表示,而數(shù)據(jù)包的停止信號可由 0.5、1、1.5 或 2 個邏輯 1 的數(shù)據(jù)位表示。
有效數(shù)據(jù):在數(shù)據(jù)包的起始位之后緊接著的就是要傳輸?shù)闹黧w數(shù)據(jù)內(nèi)容,也稱為有效數(shù)據(jù),有效數(shù)據(jù)的長度常被約定為 5、6、7 或 8 位長。
數(shù)據(jù)校驗(yàn):在有效數(shù)據(jù)之后,有一個可選的數(shù)據(jù)校驗(yàn)位。由于數(shù)據(jù)通信相對更容易受到外部干擾導(dǎo)致傳輸數(shù)據(jù)出現(xiàn)偏差,可以在傳輸過程加上校驗(yàn)位來解決這個問題。校驗(yàn)方法有奇校驗(yàn) (odd)、偶校驗(yàn) (even)、0 校驗(yàn) (space)、1 校驗(yàn) (mark) 以及無校驗(yàn) (noparity)。
【I2C】
I2C 通訊協(xié)議 (Inter - Integrated Circuit) 是由 Phiilps 公司開發(fā)的,由于它引腳少,硬件實(shí)現(xiàn)簡單, 可擴(kuò)展性強(qiáng),不需要 USART、CAN 等通訊協(xié)議的外部收發(fā)設(shè)備。
一、物理層
1、I2C 通訊設(shè)備之間的常用連接方式:
它的物理層有如下特點(diǎn):
(1) 它是一個支持設(shè)備的總線?!翱偩€”指多個設(shè)備共用的信號線。在一個 I2C 通訊總線中,可連接多個 I2C 通訊設(shè)備,支持多個通訊主機(jī)及多個通訊從機(jī)。
(2) 一個 I2C 總線只使用兩條總線線路,一條雙向串行數(shù)據(jù)線 (SDA) ,一條串行時鐘線 (SCL)。數(shù) 據(jù)線即用來表示數(shù)據(jù),時鐘線用于數(shù)據(jù)收發(fā)同步。
(3) 每個連接到總線的設(shè)備都有一個獨(dú)立的地址,主機(jī)可以利用這個地址進(jìn)行不同設(shè)備之間的訪問。
(4) 總線通過上拉電阻接到電源。當(dāng) I2C 設(shè)備空閑時,會輸出高阻態(tài),而當(dāng)所有設(shè)備都空閑,都 輸出高阻態(tài)時,由上拉電阻把總線拉成高電平。
(5) 多個主機(jī)同時使用總線時,為了防止數(shù)據(jù)沖突,會利用仲裁方式?jīng)Q定由哪個設(shè)備占用總線。
(6) 具有三種傳輸模式:標(biāo)準(zhǔn)模式傳輸速率為 100kbit/s ,快速模式為 400kbit/s ,高速模式下可達(dá) 3.4Mbit/s,但目前大多 I2C 設(shè)備尚不支持高速模式。
(7) 連接到相同總線的 IC 數(shù)量受到總線的最大電容 400pF 限制。
二、協(xié)議層
1、I2C 基本讀寫過程
2、通訊的起始和停止信號
當(dāng) SCL 線是高電平時 SDA 線從高電平向低電平切換,這個情況表示通訊的起始。當(dāng) SCL 是高電平時 SDA 線由低電平向高電平切換,表示通訊的停止。起始和停止信號一般由主機(jī)產(chǎn)生。
2、 數(shù)據(jù)有效性
SDA 數(shù)據(jù)線在 SCL 的每個時鐘周期傳輸一位數(shù)據(jù)。傳輸時,SCL 為高電平的時候 SDA 表示的數(shù)據(jù)有效,即此時的 SDA 為高電平時表示數(shù)據(jù)“1”,為低電平時表示數(shù)據(jù)“0”。當(dāng) SCL 為低電平時,SDA的數(shù)據(jù)無效,一般在這個時候 SDA 進(jìn)行電平切換,為下一次表示數(shù)據(jù)做好準(zhǔn)備。
每次數(shù)據(jù)傳輸都以字節(jié)為單位,每次傳輸?shù)淖止?jié)數(shù)不受限制。
3、地址及數(shù)據(jù)方向
I2C 協(xié)議規(guī)定設(shè)備地址可以是 7 位或 10 位,實(shí)際中 7 位的地址應(yīng)用比較廣泛。緊跟設(shè)備地址的一個數(shù)據(jù)位用來表示數(shù)據(jù)傳輸方向,它是數(shù)據(jù)方向位 (R/),第 8 位或第 11 位。數(shù)據(jù)方向位為“1”時表示主機(jī)由從機(jī)讀數(shù)據(jù),該位為“0”時表示主機(jī)向從機(jī)寫數(shù)據(jù)。
讀數(shù)據(jù)方向時,主機(jī)會釋放對 SDA 信號線的控制,由從機(jī)控制 SDA 信號線,主機(jī)接收信號,寫 數(shù)據(jù)方向時,SDA 由主機(jī)控制,從機(jī)接收信號。
4、響應(yīng)
作為數(shù)據(jù)接收端時,當(dāng)設(shè)備 (無論主從機(jī)) 接收到 I2C 傳輸?shù)囊粋€字節(jié)數(shù)據(jù)或地址后,若希望對方繼續(xù)發(fā)送數(shù)據(jù),則需要向?qū)Ψ桨l(fā)送“應(yīng)答 (ACK)”信號,發(fā)送方會繼續(xù)發(fā)送下一個數(shù)據(jù);若接收端 希望結(jié)束數(shù)據(jù)傳輸,則向?qū)Ψ桨l(fā)送“非應(yīng)答 (NACK)”信號,發(fā)送方接收到該信號后會產(chǎn)生一個 停止信號,結(jié)束信號傳輸。
傳輸時主機(jī)產(chǎn)生時鐘,在第 9 個時鐘時,數(shù)據(jù)發(fā)送端會釋放 SDA 的控制權(quán),由數(shù)據(jù)接收端控制 SDA,若 SDA 為高電平,表示非應(yīng)答信號 (NACK),低電平表示應(yīng)答信號 (ACK)。
【SPI】
SPI 協(xié)議是由摩托羅拉公司提出的通訊協(xié)議 (Serial Peripheral Interface),即串行外圍設(shè)備接口,是 一種高速全雙工的通信總線。它被廣泛地使用在 ADC、LCD 等設(shè)備與 MCU 間,要求通訊速率 較高的場合。
一、SPI物理層
SPI 通訊設(shè)備之間的常用連接方式:SPI 通訊使用 3 條總線及片選線,3 條總線分別為 SCK、MOSI、MISO,片選線NSS。(SPI 通訊以 NSS 線置低電平為開始信號,以 NSS 線被拉高作為結(jié)束信號)
二、協(xié)議層
1、SPI 通訊的通訊時序
2、通訊的起始和停止信號
NSS 信號線由高變低,是 SPI 通訊的起始信號。NSS 是每個從機(jī)各自獨(dú)占的信號線,當(dāng)從機(jī)在自己的 NSS 線檢測到起始信號后,就知道自己被主機(jī)選中了,開始準(zhǔn)備與主機(jī)通訊。NSS 信號由低變高,是 SPI 通訊的停止信號,表示本次通訊結(jié)束,從機(jī)的選中狀態(tài)被取消。
3、數(shù)據(jù)有效性
MOSI 及 MISO 的數(shù)據(jù)在 SCK 的上升沿期間變化輸出,在 SCK 的下降沿時被采樣。即在 SCK 的下降沿時刻,MOSI 及 MISO 的數(shù)據(jù)有效,高電平時表示數(shù)據(jù)“1”,為低電平時表示數(shù)據(jù)“0”。在其它時刻,數(shù)據(jù)無效,MOSI 及 MISO 為下一次表示數(shù)據(jù)做準(zhǔn)備。
SPI 每次數(shù)據(jù)傳輸可以 8 位或 16 位為單位,每次傳輸?shù)膯挝粩?shù)不受限制。
數(shù)據(jù)傳輸時,MSB先行或 LSB 先行并沒有作硬性規(guī)定,但要保證兩個 SPI 通訊設(shè)備之間使用同樣的協(xié)定,一般都會采用圖 SPI 通訊時序 中的 MSB 先行模式。
4、CPOL/CPHA 及通訊模式
時鐘極性 CPOL 是指 SPI 通訊設(shè)備處于空閑狀態(tài)時,SCK 信號線的電平信號 (即 SPI 通訊開始前、 NSS 線為高電平時 SCK 的狀態(tài))。CPOL=0 時,SCK 在空閑狀態(tài)時為低電平,CPOL=1 時,則相反。
時鐘相位 CPHA 是指數(shù)據(jù)的采樣的時刻,當(dāng) CPHA=0 時,MOSI 或 MISO 數(shù)據(jù)線上的信號將會在 SCK 時鐘線的“奇數(shù)邊沿”被采樣。當(dāng) CPHA=1 時,數(shù)據(jù)線在 SCK 的“偶數(shù)邊沿”采樣。
由 CPOL 及 CPHA 的不同狀態(tài),SPI 分成了四種模式,見表 SPI 的四種模式 ,主機(jī)與從機(jī)需要工 作在相同的模式下才可以正常通訊,實(shí)際中采用較多的是“模式 0”與“模式 3”
【DMA直接存儲區(qū)訪問】
DMA(Direct Memory Access)—直接存儲器存取,是單片機(jī)的一個外設(shè),它的主要功能是用來搬數(shù) 據(jù),但是不需要占用 CPU,即在傳輸數(shù)據(jù)的時候,CPU 可以干其他的事情,好像是多線程一樣。數(shù)據(jù)傳輸支持從外設(shè)到存儲器或者存儲器到存儲器。
DMA 控制器包含了 DMA1 和 DMA2,其中 DMA1 有 7 個通道,DMA2 有 5 個通道,這里的通道 可以理解為傳輸數(shù)據(jù)的一種管道。要注意的是 DMA2 只存在于大容量的單片機(jī)中。
【常用存儲器】
一、存儲器種類
存儲器按其存儲介質(zhì)特性主要分為“易失性存儲器”和“非易失性存儲器”兩大類。其中的“易失/非易失”是指存儲器斷電后,它存儲的數(shù)據(jù)內(nèi)容是否會丟失的特性。
二、易失性存儲器——RAM 存儲器
RAM 是“Random Access Memory”的縮寫,被譯為隨機(jī)存儲器。所謂“隨機(jī)存取”,指的是當(dāng)存 儲器中的消息被讀取或?qū)懭霑r,所需要的時間與這段信息所在的位置無關(guān)。
1、DRAM動態(tài)隨機(jī)存儲器
DRAM 的存儲單元以電容的電荷來表示數(shù)據(jù),有電荷代表 1,無電荷代表 0。但時間一長,代表 1 的電容會放電,代表 0 的電容會吸收電荷,因此它需要定期刷新操作,這就是“動態(tài) (Dynamic)”一詞所形容的特性。
2、SRAM靜態(tài)隨機(jī)存儲器
靜態(tài)隨機(jī)存儲器 SRAM 的存儲單元以鎖存器來存儲數(shù)據(jù),見圖 SRAM 存儲單元 。這種電路結(jié)構(gòu) 不需要定時刷新充電,就能保持狀態(tài) (當(dāng)然,如果斷電了,數(shù)據(jù)還是會丟失的),所以這種存儲器 被稱為“靜態(tài) (Static)”RAM。
三、非易失性存儲器
1、ROM 存儲器:ROM 是“Read Only Memory”的縮寫,意為只能讀的存儲器。由于技術(shù)的發(fā)展,后來設(shè)計(jì)出了可以方便寫入數(shù)據(jù)的 ROM,而這個“Read Only Memory”的名稱被沿用下來了。
MASK ROM:MASK(掩膜) ROM 就是正宗的“Read Only Memory”,存儲在它內(nèi)部的數(shù)據(jù)是在出廠時使用特殊工藝固化的,生產(chǎn)后就不可修改,其主要優(yōu)勢是大批量生產(chǎn)時成本低。
OTPROM:OTPROM(One Time Programable ROM) 是一次可編程存儲器。這種存儲器出廠時內(nèi)部并沒有資料,用戶可以使用專用的編程器將自己的資料寫入,但只能寫入一次,被寫入過后,它的內(nèi)容也不可再修改。
EPROM:EPROM(Erasable Programmable ROM) 是可重復(fù)擦寫的存儲器,它解決了 PROM 芯片只能寫入一次的問題。這種存儲器使用紫外線照射芯片內(nèi)部擦除數(shù)據(jù),擦除和寫入都要專用的設(shè)備?,F(xiàn)在這種存儲器基本淘汰,被 EEPROM 取代。
EEPROM:EEPROM(Electrically Erasable Programmable ROM) 是電可擦除存儲器。EEPROM 可以重復(fù)擦寫,它的擦除和寫入都是直接使用電路控制,不需要再使用外部設(shè)備來擦寫。而且可以按字節(jié)為單位修改數(shù)據(jù),無需整個芯片擦除。
2、FLASH 存儲器
FLASH 存儲器又稱為閃存,它也是可重復(fù)擦寫的儲器,部分書籍會把 FLASH 存儲器稱為 FLASH ROM,但它的容量一般比 EEPROM 大得多,且在擦除時,一般以多個字節(jié)為單位。根據(jù)存儲單元電路的不同,F(xiàn)LASH 存儲器又分為 NOR FLASH 和 NAND FLASH。
【ADC】
STM32f103 系列有 3 個 ADC,精度為 12 位,每個 ADC 最多有 16 個外部通道。其中 ADC1 和 ADC2 都有 16 個外部通道,ADC3 根據(jù) CPU 引腳的不同通道數(shù)也不同,一般都有 8 個外部通道。
【DAC】
STM32 具有片上 DAC 外設(shè),它的分辨率可配置為 8 位或 12 位的數(shù)字輸入信號,具有兩個 DAC 輸出通道,這兩個通道互不影響,每個通道都可以使用 DMA 功能,都具有出錯檢測能力,可外 部觸發(fā)。
【TIM】
一、定時器的分類
STM32F1 系列中,除了互聯(lián)型的產(chǎn)品,共有 8 個定時器,分為基本定時器,通用定時器和高級 定時器。
【IWDG獨(dú)立看門狗/WWDG窗口看門狗】
一、獨(dú)立看門狗定義及使用場景
獨(dú)立看門狗:是一個 12 位的遞減計(jì)數(shù)器,當(dāng)計(jì)數(shù)器的值從某個值一直減到 0 的時候,系統(tǒng)就會產(chǎn)生一個復(fù)位信號,即 IWDG_RESET。如果在計(jì)數(shù)沒減到 0 之前,刷新了計(jì)數(shù)器的值的話,那么就不會產(chǎn)生復(fù)位信號,這個動作就是我們經(jīng)常說的喂狗。
獨(dú)立看門狗的時鐘由獨(dú)立的 RC 振蕩器 LSI 提供,即使主時鐘發(fā)生故障它仍然有效,非常獨(dú)立。LSI 的頻率一般在 30~60KHZ 之間,根據(jù)溫度和工作場合會有一定的漂移,我們一般取 40KHZ, 所以獨(dú)立看門狗的定時時間并一定非常精確,只適用于對時間精度要求比較低的場合。
二、窗口看門狗定義及使用場景
窗口看門狗:跟獨(dú)立看門狗一樣,也是一個遞減計(jì)數(shù)器不斷的往下遞減計(jì)數(shù),當(dāng)減到一個固定值 0X40 時還不喂狗的話,產(chǎn)生復(fù)位,這個值叫窗口的下限,是固定的值,不能改變。這個是跟獨(dú)立看門狗類似的地方,不同的地方是窗口看門狗的計(jì)數(shù)器的值在減到某一個數(shù)之前喂狗的話也會產(chǎn)生 復(fù)位,這個值叫窗口的上限,上限值由用戶獨(dú)立設(shè)置。窗口看門狗計(jì)數(shù)器的值必須在上窗口和下 窗口之間才可以喂狗。
三、圖解看門狗
RLR 是重裝載寄存器,用來設(shè)置獨(dú)立看門狗的計(jì)數(shù)器的值。TR 是窗口看門狗的計(jì)數(shù)器的值,由 用戶獨(dú)立設(shè)置,WR 是窗口看門狗的上窗口值,由用戶獨(dú)立設(shè)置。
-
控制器
+關(guān)注
關(guān)注
112文章
16332瀏覽量
177803 -
內(nèi)核
+關(guān)注
關(guān)注
3文章
1372瀏覽量
40276 -
STM32
+關(guān)注
關(guān)注
2270文章
10895瀏覽量
355728 -
Cortex-M3
+關(guān)注
關(guān)注
9文章
269瀏覽量
59463 -
GPIO
+關(guān)注
關(guān)注
16文章
1204瀏覽量
52051
原文標(biāo)題:STM32基礎(chǔ)知識總結(jié)
文章出處:【微信號:電子工程師筆記,微信公眾號:電子工程師筆記】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論