深入解析C8051F000/1/2/5/6/7和C8051F010/1/2/5/6/7混合信號(hào)MCU
引言
在當(dāng)今的電子設(shè)計(jì)領(lǐng)域,混合信號(hào)MCU憑借其強(qiáng)大的功能和高集成度,成為了眾多工程師的首選。Silicon Labs的C8051F000/1/2/5/6/7和C8051F010/1/2/5/6/7系列MCU就是其中的佼佼者。本文將對(duì)這一系列MCU進(jìn)行全面而深入的剖析,涵蓋其系統(tǒng)概述、各模塊功能、寄存器配置等方面,為電子工程師們提供一份詳盡的參考資料。
文件下載:C8051F012-GQR.pdf
一、系統(tǒng)概述
1.1 產(chǎn)品特性
C8051F000系列MCU是高度集成的混合信號(hào)片上系統(tǒng),具備真正的12位多通道ADC(F000/01/02/05/06/07)或10位多通道ADC(F010/11/12/15/16/17)。它集成了可編程增益前置放大器、兩個(gè)12位DAC、兩個(gè)電壓比較器(F002/07/12/17只有一個(gè))、電壓基準(zhǔn)以及與8051兼容的微控制器內(nèi)核,還擁有32KB的FLASH內(nèi)存。同時(shí),它還具備I2C/SMBus、UART和SPI串行接口,以及可編程計(jì)數(shù)器/定時(shí)器陣列(PCA)等。C8051F000/01/02/10/11/12擁有256字節(jié)的RAM,最高執(zhí)行速度可達(dá)20MIPS;而C8051F005/06/07/15/16/17則擁有2304字節(jié)的RAM,最高執(zhí)行速度可達(dá)25MIPS。
1.2 產(chǎn)品選擇指南
| 型號(hào) | MIPS (Peak) | 內(nèi)部RAM | 通信接口 | ADC分辨率(位) | ADC輸入 | 溫度傳感器 | 封裝形式 |
|---|---|---|---|---|---|---|---|
| C8051F012 | 20 | 2304 | SPI、UART等 | 10 | 100 | 有 | 32LQFP |
| C8051F011 | 20 | 2304 | SPI、UART等 | 10 | 100 | 有 | 48TQFP |
| C8051F010 | 20 | 2304 | SPI、UART等 | 10 | 100 | 有 | 64TQFP |
| C8051F007 | 25 | 2304 | SPI、UART等 | 12 | 100 | 有 | 48TQFP |
| C8051F000 | 20 | 256 | SPI、UART等 | 12 | 100 | 有 | 64TQFP |
二、核心CPU——CIP - 51
2.1 兼容性與性能
CIP - 51微控制器內(nèi)核與MCS - 51?指令集完全兼容,這意味著標(biāo)準(zhǔn)的803x/805x匯編器和編譯器都可用于開發(fā)軟件。與標(biāo)準(zhǔn)8051架構(gòu)相比,CIP - 51采用流水線架構(gòu),大大提高了指令吞吐量。在標(biāo)準(zhǔn)8051中,除MUL和DIV指令外,所有指令執(zhí)行需要12或24個(gè)系統(tǒng)時(shí)鐘周期,且最大系統(tǒng)時(shí)鐘通常為12MHz。而CIP - 51內(nèi)核70%的指令在1或2個(gè)系統(tǒng)時(shí)鐘周期內(nèi)執(zhí)行,無(wú)指令執(zhí)行時(shí)間超過(guò)8個(gè)系統(tǒng)時(shí)鐘周期。在25MHz的最大系統(tǒng)時(shí)鐘下,其峰值吞吐量可達(dá)25MIPS。
2.2 指令集與CPU定時(shí)
CIP - 51的指令集與標(biāo)準(zhǔn)MCS - 51?指令集完全兼容,但指令定時(shí)有所不同。它基于時(shí)鐘周期計(jì)時(shí),大部分指令的執(zhí)行時(shí)鐘周期數(shù)與指令的程序字節(jié)數(shù)相同。條件分支指令在不跳轉(zhuǎn)時(shí)比跳轉(zhuǎn)時(shí)少一個(gè)時(shí)鐘周期。
2.3 MOVX指令與程序內(nèi)存
MOVX指令通常用于訪問(wèn)外部數(shù)據(jù)內(nèi)存,在CIP - 51中,它可通過(guò)PSCTL寄存器的控制位訪問(wèn)片上作為可重編程Flash內(nèi)存實(shí)現(xiàn)的程序內(nèi)存空間,這為程序代碼更新和非易失性數(shù)據(jù)存儲(chǔ)提供了便利。
三、內(nèi)存組織
3.1 程序內(nèi)存
CIP - 51擁有64KB的程序內(nèi)存空間,其中32896字節(jié)實(shí)現(xiàn)為可在系統(tǒng)中重編程的Flash內(nèi)存,從地址0x0000到0x807F連續(xù)排列。需注意的是,512字節(jié)(0x7E00 - 0x7FFF)的內(nèi)存為工廠預(yù)留,不可用于用戶程序存儲(chǔ)。程序內(nèi)存通常為只讀,但通過(guò)設(shè)置PSCTL.0位并使用MOVX指令,CIP - 51可對(duì)其進(jìn)行寫入操作。
3.2 數(shù)據(jù)內(nèi)存
CIP - 51實(shí)現(xiàn)了256字節(jié)的內(nèi)部RAM,映射到數(shù)據(jù)內(nèi)存空間的0x00到0xFF。數(shù)據(jù)內(nèi)存的低128字節(jié)用于通用寄存器和暫存內(nèi)存,可通過(guò)直接或間接尋址訪問(wèn)。0x00到0x1F的位置可作為四個(gè)通用寄存器組進(jìn)行尋址,接下來(lái)的16字節(jié)(0x20到0x2F)既可以字節(jié)尋址,也可以位尋址。數(shù)據(jù)內(nèi)存的高128字節(jié)只能通過(guò)間接尋址訪問(wèn),它與特殊功能寄存器(SFR)占用相同的地址空間,但物理上是分離的。C8051F005/06/07/15/16/17還在CIP - 51的外部數(shù)據(jù)內(nèi)存空間中有2048字節(jié)的RAM,可使用MOVX指令訪問(wèn)。
3.3 通用寄存器與位尋址位置
數(shù)據(jù)內(nèi)存的低32字節(jié)(0x00到0x1F)可作為四個(gè)通用寄存器組進(jìn)行尋址,每個(gè)組由八個(gè)字節(jié)寬的寄存器R0到R7組成。程序狀態(tài)字中的RS0(PSW.3)和RS1(PSW.4)兩位用于選擇活動(dòng)寄存器組,方便在子程序和中斷服務(wù)程序中進(jìn)行快速上下文切換。此外,0x20到0x2F的16個(gè)數(shù)據(jù)內(nèi)存位置還可作為128個(gè)可單獨(dú)尋址的位進(jìn)行訪問(wèn)。
3.4 堆棧
程序員的堆??晌挥?56字節(jié)數(shù)據(jù)內(nèi)存的任何位置,通過(guò)堆棧指針(SP,0x81)SFR指定堆棧區(qū)域。復(fù)位時(shí),堆棧指針初始化為0x07,因此第一個(gè)壓入堆棧的值將位于0x08位置。MCU還具備內(nèi)置的堆棧記錄硬件,可檢測(cè)堆棧的溢出或下溢,并在全速調(diào)試時(shí)通知調(diào)試軟件。
四、特殊功能寄存器(SFR)
4.1 SFR概述
直接訪問(wèn)數(shù)據(jù)內(nèi)存中從0x80到0xFF的位置構(gòu)成了特殊功能寄存器(SFR),它們用于與CIP - 51的資源和外設(shè)進(jìn)行控制和數(shù)據(jù)交換。CIP - 51不僅復(fù)制了典型8051實(shí)現(xiàn)中的SFR,還實(shí)現(xiàn)了額外的SFR,用于配置和訪問(wèn)MCU特有的子系統(tǒng),在保持與MCS - 51?指令集兼容性的同時(shí)增加了新功能。
4.2 部分重要SFR介紹
- SP(堆棧指針):保存堆棧頂部的位置,每次PUSH操作前會(huì)遞增。復(fù)位后默認(rèn)值為0x07。
- DPL和DPH:分別是16位數(shù)據(jù)指針DPTR的低字節(jié)和高字節(jié),用于間接尋址訪問(wèn)RAM和Flash內(nèi)存。
- PSW(程序狀態(tài)字):包含多個(gè)標(biāo)志位,如進(jìn)位標(biāo)志CY、輔助進(jìn)位標(biāo)志AC、寄存器組選擇位RS1 - RS0等,用于反映程序執(zhí)行狀態(tài)和控制寄存器組的選擇。
- ACC(累加器):用于算術(shù)運(yùn)算。
- B寄存器:作為某些算術(shù)運(yùn)算的第二個(gè)累加器。
五、中斷處理
5.1 中斷源與向量
CIP - 51包含一個(gè)擴(kuò)展的中斷系統(tǒng),支持總共22個(gè)中斷源,具有兩個(gè)優(yōu)先級(jí)級(jí)別。中斷源包括復(fù)位、外部中斷、定時(shí)器溢出、串口中斷等。每個(gè)中斷源都有一個(gè)或多個(gè)關(guān)聯(lián)的中斷掛起標(biāo)志位于SFR中,當(dāng)外設(shè)或外部源滿足有效中斷條件時(shí),關(guān)聯(lián)的中斷掛起標(biāo)志將被置為邏輯1。
5.2 外部中斷
兩個(gè)外部中斷源(/INT0和/INT1)可配置為低電平敏感或下降沿敏感輸入,通過(guò)設(shè)置IT0(TCON.0)和IT1(TCON.2)來(lái)選擇。其余四個(gè)外部中斷(外部中斷4 - 7)為低電平、下降沿敏感輸入,中斷掛起標(biāo)志位于Port 1中斷標(biāo)志寄存器中。
5.3 中斷優(yōu)先級(jí)
每個(gè)中斷源可單獨(dú)編程為低或高優(yōu)先級(jí)。低優(yōu)先級(jí)中斷服務(wù)程序可被高優(yōu)先級(jí)中斷搶占,高優(yōu)先級(jí)中斷不可被搶占。每個(gè)中斷都有一個(gè)關(guān)聯(lián)的中斷優(yōu)先級(jí)位在SFR(IP - EIP2)中,用于配置其優(yōu)先級(jí)級(jí)別,默認(rèn)優(yōu)先級(jí)為低。
5.4 中斷延遲
中斷響應(yīng)時(shí)間取決于CPU在中斷發(fā)生時(shí)的狀態(tài)。最快響應(yīng)時(shí)間為5個(gè)系統(tǒng)時(shí)鐘周期,最長(zhǎng)響應(yīng)時(shí)間在特定情況下(如CPU執(zhí)行RETI指令后接DIV指令)可達(dá)18個(gè)系統(tǒng)時(shí)鐘周期。
六、電源管理模式
6.1 空閑模式
設(shè)置空閑模式選擇位(PCON.0)會(huì)使CIP - 51在指令執(zhí)行完成后暫停CPU并進(jìn)入空閑模式,所有內(nèi)部寄存器和內(nèi)存保持原始數(shù)據(jù),所有模擬和數(shù)字外設(shè)可保持活動(dòng)??臻e模式可通過(guò)使能的中斷或/RST信號(hào)終止,此時(shí)空閑模式選擇位將被清除,CPU恢復(fù)運(yùn)行。
6.2 停止模式
設(shè)置停止模式選擇位(PCON.1)會(huì)使CIP - 51進(jìn)入停止模式,CPU和振蕩器停止,所有數(shù)字外設(shè)關(guān)閉。每個(gè)模擬外設(shè)必須在進(jìn)入停止模式前單獨(dú)關(guān)閉。停止模式只能通過(guò)內(nèi)部或外部復(fù)位終止。
七、Flash內(nèi)存
7.1 編程與擦除
這些設(shè)備包含32k + 128字節(jié)的片上可重編程Flash內(nèi)存,可通過(guò)JTAG接口或使用MOVX指令在系統(tǒng)中逐字節(jié)編程。Flash位一旦清零,必須通過(guò)擦除操作才能重新置為1。寫入和擦除操作由硬件自動(dòng)定時(shí),無(wú)需數(shù)據(jù)輪詢來(lái)確定操作結(jié)束。Flash內(nèi)存設(shè)計(jì)可承受至少20,000次寫入/擦除周期。
7.2 非易失性數(shù)據(jù)存儲(chǔ)
Flash內(nèi)存可用于非易失性數(shù)據(jù)存儲(chǔ),允許在運(yùn)行時(shí)計(jì)算和存儲(chǔ)校準(zhǔn)系數(shù)等數(shù)據(jù)。數(shù)據(jù)通過(guò)MOVX指令寫入,通過(guò)MOVC指令讀取。此外,MCU還在0x8000 - 0x807F位置有一個(gè)128字節(jié)的Flash扇區(qū),適合作為通用非易失性暫存內(nèi)存。
7.3 安全選項(xiàng)
CIP - 51提供安全選項(xiàng)來(lái)保護(hù)Flash內(nèi)存,防止軟件意外修改以及防止查看專有程序代碼和常量。Program Store Write Enable(PSCTL.0)和Program Store Erase Enable(PSCTL.1)位可保護(hù)Flash內(nèi)存,必須顯式設(shè)置為邏輯1才能通過(guò)軟件修改Flash內(nèi)存。此外,位于0x7DFE和0x7DFF的安全鎖字節(jié)可防止通過(guò)JTAG接口讀取或修改Flash程序內(nèi)存。
八、外部RAM(C8051F005/06/07/15/16/17)
C8051F005/06/07/15/16/17 MCUs在外部數(shù)據(jù)內(nèi)存空間中包含2048字節(jié)的RAM,可使用外部移動(dòng)指令(MOVX)和數(shù)據(jù)指針(DPTR)或MOVX間接尋址模式訪問(wèn)。該2048字節(jié)的RAM以模方式映射在整個(gè)64k外部數(shù)據(jù)內(nèi)存地址范圍內(nèi),方便進(jìn)行線性內(nèi)存填充操作。
九、復(fù)位源
9.1 復(fù)位類型
MCU有七種復(fù)位源,包括上電復(fù)位、軟件強(qiáng)制復(fù)位、掉電復(fù)位、外部復(fù)位、缺失時(shí)鐘檢測(cè)器復(fù)位、比較器0復(fù)位和看門狗定時(shí)器復(fù)位。每種復(fù)位源都有其特定的觸發(fā)條件和操作方式。
9.2 上電復(fù)位
C8051F000系列包含電源監(jiān)控器,在上電時(shí)將MCU保持在復(fù)位狀態(tài),直到VDD上升到(V_{RST}) 電平以上。/RST引腳在100ms的VDD監(jiān)控器超時(shí)結(jié)束前保持低電平,以確保VDD電源穩(wěn)定。
9.3 看門狗定時(shí)器復(fù)位
MCU包含一個(gè)可編程的看門狗定時(shí)器(WDT),由系統(tǒng)時(shí)鐘驅(qū)動(dòng)。當(dāng)看門狗定時(shí)器溢出時(shí),將強(qiáng)制MCU進(jìn)入復(fù)位狀態(tài)。為防止復(fù)位,應(yīng)用程序軟件必須在溢出發(fā)生前重啟WDT。
十、振蕩器
10.1 內(nèi)部振蕩器
每個(gè)MCU都包含一個(gè)內(nèi)部振蕩器和一個(gè)外部振蕩器驅(qū)動(dòng)電路,可生成系統(tǒng)時(shí)鐘。MCU在任何復(fù)位后從內(nèi)部振蕩器啟動(dòng),內(nèi)部振蕩器可通過(guò)內(nèi)部振蕩器控制寄存器(OSCICN)進(jìn)行啟用/禁用和頻率更改。
10.2 外部振蕩器
外部振蕩器需要一個(gè)外部諧振器、并聯(lián)模式晶體、電容器或RC網(wǎng)絡(luò)連接到XTAL1/XTAL2引腳??赏ㄟ^(guò)OSCXCN寄存器配置振蕩器電路的源。外部CMOS時(shí)鐘也可通過(guò)驅(qū)動(dòng)XTAL1引腳提供系統(tǒng)時(shí)鐘。
十一、端口輸入/輸出
11.1 端口資源與交叉開關(guān)
MCU通過(guò)四個(gè)數(shù)字I/O端口(P0、P1、P2和P3)提供廣泛的數(shù)字資源。每個(gè)端口的引腳可定義為相應(yīng)的端口I/O或分配的內(nèi)部數(shù)字資源。通過(guò)優(yōu)先級(jí)交叉開關(guān)解碼器,可將內(nèi)部數(shù)字資源分配到物理I/O引腳,實(shí)現(xiàn)資源分配的靈活性。
11.2 端口初始化
端口I/O初始化包括加載XBR0、XBR1和XBR2寄存器以選擇所需的數(shù)字I/O功能,設(shè)置XBR2中的XBARE位以啟用交叉開關(guān)。通過(guò)端口配置寄存器(PRT0CF、PRT1CF、PRT2CF、PRT3CF)定義I/O引腳的輸出驅(qū)動(dòng)特性,可配置為推挽或開漏模式。
11.3 通用端口I/O
每個(gè)MCU有四個(gè)字節(jié)寬的雙向并行端口,可作為通用I/O使用。通過(guò)相應(yīng)的特殊功能寄存器(SFR)訪問(wèn)端口時(shí),寫入的值將被鎖存以保持輸出數(shù)據(jù)值,讀取時(shí)返回端口輸入引腳的邏輯電平。
十二、串行接口
12.1 SMBus / I2C總線
SMBus串行I/O接口符合系統(tǒng)管理總線規(guī)范1.1版,與I2C串行總線兼容。它是一個(gè)兩線、雙向串行總線,數(shù)據(jù)傳輸速率可達(dá)系統(tǒng)時(shí)鐘的(1/8) 。支持主從設(shè)備之間的數(shù)據(jù)傳輸,具備仲裁和時(shí)鐘低擴(kuò)展機(jī)制,以適應(yīng)不同速度的設(shè)備。
12.2 串行外設(shè)接口總線(SPI)
SPI提供一個(gè)四線、全雙工的串行總線,支持多個(gè)從設(shè)備連接到主設(shè)備。可配置為主設(shè)備或從設(shè)備,主設(shè)備模式下最大數(shù)據(jù)傳輸速率為系統(tǒng)時(shí)鐘頻率的一半,從設(shè)備模式下全雙工操作最大數(shù)據(jù)傳輸速率為系統(tǒng)時(shí)鐘頻率的(1/10) 。
12.3 UART
UART是一個(gè)能夠進(jìn)行異步傳輸?shù)拇卸丝?,可工作在全雙工模式。它有四個(gè)操作模式,提供不同的波特率和通信協(xié)議。支持多處理器通信,通過(guò)第九數(shù)據(jù)位實(shí)現(xiàn)主從處理器之間的通信。
十三、定時(shí)器
13.1 定時(shí)器概述
每個(gè)MCU實(shí)現(xiàn)了四個(gè)計(jì)數(shù)器/定時(shí)器,包括三個(gè)與標(biāo)準(zhǔn)8051兼容的16位計(jì)數(shù)器/定時(shí)器和一個(gè)用于ADC、SMBus或通用用途的16位定時(shí)器。它們可用于測(cè)量時(shí)間間隔、計(jì)數(shù)外部事件和生成周期性中斷請(qǐng)求。
13.2 定時(shí)器0和定時(shí)器1
定時(shí)器0和定時(shí)器1有四種主要操作模式,包括13位計(jì)數(shù)器/定時(shí)器、16位計(jì)數(shù)器/定時(shí)器、8位計(jì)數(shù)器/定時(shí)器帶自動(dòng)重載和兩個(gè)8位計(jì)數(shù)器/定時(shí)器(僅定時(shí)器0)。可通過(guò)TCON和TMOD寄存器進(jìn)行控制和配置。
13.3 定時(shí)器2
定時(shí)器2是一個(gè)16位計(jì)數(shù)器/定時(shí)器,可使用系統(tǒng)時(shí)鐘或外部輸入引腳的轉(zhuǎn)換作為時(shí)鐘源。它有三種操作模式:16位計(jì)數(shù)器/定時(shí)器帶捕獲、16位計(jì)數(shù)器/定時(shí)器帶自動(dòng)重載和波特率發(fā)生器模式。
13.4 定時(shí)器3
定時(shí)器3是一個(gè)16位定時(shí)器,輸入為系統(tǒng)時(shí)鐘(根據(jù)T3M位選擇除以1或12)。它總是配置
發(fā)布評(píng)論請(qǐng)先 登錄
深入解析C8051F000/1/2/5/6/7和C8051F010/1/2/5/6/7混合信號(hào)MCU
評(píng)論