|
HR7P153單片機(jī)pdf格式數(shù)據(jù)手冊資料和運(yùn)用筆記分享給大家
HR7P153引腳圖:
注 1: MRSTN 表示低電平復(fù)位有效;
注 2: 如果產(chǎn)品封裝引腳數(shù)小于最大引腳數(shù),則未引出的和未使用的 I/O 管腳都需設(shè)置為輸出低電平。否則芯片功
耗可能會出現(xiàn)異常, 芯片工作穩(wěn)定性也容易因外界干擾而降低。
注 4:用戶系統(tǒng)必須保證 VPP 管腳電壓低于芯片電源電壓 VDD,否則芯片可能進(jìn)入異常工作模式。如果該管腳上
電壓存在過沖,則用戶系統(tǒng)必須限制該脈沖的電壓不高于 VDD+0.5V,脈沖寬度不超過 100us。
2. 1 CPU內(nèi)核概述
內(nèi)核特性
- 高性能哈佛型 RISC CPU 內(nèi)核
- 79 條精簡指令
- 系統(tǒng)時鐘工作頻率最高為 20MHz
- 機(jī)器周期為 2 個系統(tǒng)時鐘周期
- 支持中斷處理,共 12 個中斷源
2. 2 系統(tǒng)時鐘和機(jī)器周期
系統(tǒng)時鐘頻率(Fosc)最高支持 20MHz。兩個系統(tǒng)時鐘周期通過片內(nèi)時鐘生成器產(chǎn)生兩個不重疊的正交時鐘 phase1(p1),phase2(p2)。兩個不重疊的正交時鐘周期組成一個機(jī)器周期。若系統(tǒng)時鐘頻率為 4MHz,一個機(jī)器周期的時
間為 500ns。
2. 3 指令集概述
采用 HR7P 系列 79 條精簡指令集系統(tǒng)。
除部分條件跳轉(zhuǎn)與控制程序流程的指令為雙(機(jī)器)周期指令外,其他指令均為單(機(jī)器)周期指令。具體指令集請參考《附錄 1 指令集》。
2. 4 特殊功能寄存器
CPU 相關(guān)寄存器包括 11-bit 程序計(jì)數(shù)器 PCRL/PCRH,程序狀態(tài)字寄存器 PSW 和累加器 A 寄存器 AREG。其中程序狀態(tài)寄存器 PSW 用于存放各個狀態(tài)標(biāo)志位,包括程序出棧/壓棧溢出、負(fù)數(shù)標(biāo)志位、溢出標(biāo)志位、零標(biāo)志位、半進(jìn)位/半借位標(biāo)志位,以及全進(jìn)位或全借位標(biāo)志位等。
注 1:僅部分指令可對 PSW 寄存器進(jìn)行寫操作,包括 JDEC、JINC、SWAP、BCC、BSS、BTT、MOVA 和 SETR。其它指令對 PSW 寄存器的寫操作,只根據(jù)運(yùn)行結(jié)果影響相應(yīng)狀態(tài)標(biāo)志位。
注 2:OF 和 UF 位為只讀標(biāo)志位,僅上電復(fù)位、復(fù)位指令和 MRSTN 復(fù)位會將其清零,其他復(fù)位不影響該兩位標(biāo)志位。
3. 1 概述
本芯片采用哈佛總線架構(gòu),程序?qū)ぶ房臻g和數(shù)據(jù)尋址空間相互獨(dú)立。
片內(nèi)存儲器資源包括:
2K Words OTP 程序存儲器;
64 字節(jié) SRAM
其中 OTP 程序存儲器被映射到程序?qū)ぶ房臻g,SRAM 數(shù)據(jù)存儲器被映射到數(shù)據(jù)尋址空間。
3. 2 程序存儲器
3. 2. 1 概述
OTP 程序存儲器用于存儲用戶程序。由于芯片指令位寬為 16 位(2 個字節(jié)),因此 2K Words
OTP 程序存儲器被映射到程序?qū)ぶ房臻g為 000H~7FFH,其中 7E0H~7FFH 為保留區(qū)。每個訪問地址對應(yīng) 16 位寬(2 個字節(jié))的存儲單元。通過 11 位程序計(jì)數(shù)器 PC 進(jìn)行程序?qū)ぶ吩L問。復(fù)位向量位于 000H,中斷向量入口地址位于 004H,支持 8 級硬件堆棧。
3. 2. 3 程序計(jì)數(shù)器(PC)
程序計(jì)數(shù)器中存放的是要執(zhí)行的下一條指令的地址。PC 在每個指令周期后都會自動加 1,除非 PC 的值被指令或中斷異常改寫。11 位程序計(jì)數(shù)器 PC<10:0>,無實(shí)際物理地址,不可讀寫,可尋址 2K 程序存儲空間 000H ~ 7FFH,超出地址范圍會導(dǎo)致 PC 循環(huán)(又從 000H 開始訪問)。
PC<7:0>可通過 PCRL 寄存器的讀/寫操作進(jìn)行讀/寫,而 PC<10:8>通過 PCRH 寄存器來間接(如 RCALL、CALL、GOTO 等指令)賦值。
芯片復(fù)位時,PCRL、PCRH 和 PC 都會被清零。PC 硬件堆棧操作不會影響 PCRH 的值。
注:各種指令對 PC 的影響:
1. 通過指令直接修改 PC 值時,對 PCRL 為目標(biāo)寄存器的操作可直接修改 PC<7:0>,即 PC<7:0>=PCRL<7:0>;
而操作 PC<7:0>的同時也會執(zhí)行 PC<10:8>=PCRH<2:0>,因此,修改 PC 時,應(yīng)先修改 PCRH<2:0>,再修
改 PCRL<7:0>。
2. 執(zhí)行 RCALL 指令時,PC<7:0>為寄存器 R 中的值;而 PC<10:8> =PCRH<2:0>。
3. 執(zhí)行 CALL,GOTO 指令時,PC<10:0>為指令中 11 位立即數(shù) I(操作數(shù))。
4. 執(zhí)行 LCALL 指令時,該指令為雙字指令共有 16 位立即數(shù) I(操作數(shù))。PC<10:0>被修改為該 16 位立即數(shù) I
的值的低 11 位;同時 PCRH<2:0>被修改為 I<10:8>的值。
5. 執(zhí)行 AJMP 指令時,該指令為雙字指令共有 16 位立即數(shù) I(操作數(shù))。PC<10:0> 被修改為該 16 位立即數(shù) I
的值低 11 位,同時 PCRH<2:0>修改為 I<10:8>的值。
6. 執(zhí)行 PAGE 指令時,PCRH<7:3>的值將被該指令的立即數(shù) I 替換。(本芯片的程序存儲器大小為 2K Words,
因此 PCRH<7:3>被固定為全零,執(zhí)行 PAGE 指令后 PC 值不受影響)
7. 執(zhí)行其他指令時,PC 值自動加 1。
應(yīng)用實(shí)例:以 PCRL 為目標(biāo)寄存器的指令應(yīng)用程序
……
MOVI pageaddr
MOVA PCRH ;設(shè)置表格頁面地址
MOVI tableaddr ;設(shè)置偏移量給 A 寄存器
CALL TABLE ;調(diào)用子程序方式查表
……
TABLE:
ADD PCRL, F ;PC 加上偏移量,指向訪問的地址
RETIA 0X01
RETIA 0X02
RETIA 0X03
……
3. 2. 4 程序堆棧
芯片內(nèi)有 8 級程序堆棧(硬件堆棧),堆棧位寬與 PC 位寬相等,用于 PC 的壓棧和出棧。執(zhí)行 CALL、LCALL 和 RCALL 指令或中斷被響應(yīng)后,PC 自動壓棧保護(hù);當(dāng)執(zhí)行 RET、RETIA 或 RETIE 指令時,堆棧會將最近一次壓棧的值返回至 PC。
程序堆棧只支持 8 級緩沖操作,即程序堆棧只保存最近的 8 次壓棧值,對于連續(xù)超過 8 次的壓棧操作,第 9 次的壓棧數(shù)據(jù)使得第 1 次的壓棧數(shù)據(jù)丟失。同樣,超過 8 次的連續(xù)出棧,第 9 次出棧操作,可能使得程序流程不可控。芯片復(fù)位后,堆棧指針將重新指向堆棧頂部。
3. 3 IAP訪問OTP操作
3. 3. 1 OTP存儲器
OTP 存儲器是一次可編程存儲器,在 VPP 復(fù)用端口施加高壓 8.45V 時,可通過 IAP 對未
編程過的 OTP 地址單元進(jìn)行軟件控制編程。IAP 寫入操作以字(Word)為單位,通過 FRA
(FRAH,F(xiàn)RAL)尋址。當(dāng) OTP 存儲器進(jìn)行 IAP 寫入操作時 CPU 內(nèi)核暫停執(zhí)行,外設(shè)
可按預(yù)設(shè)狀態(tài)繼續(xù)運(yùn)行,外設(shè)的中斷請求將置位相應(yīng)的中斷標(biāo)志。當(dāng) IAP 寫入操作完成時,
CPU 內(nèi)核恢復(fù)執(zhí)行。
3. 3. 2 查表指令
HR7P 79 條指令集中包含 8 條查表指令。
查表讀指令:
查表讀指令用于將 FRA(FRAH,F(xiàn)RAL)所指向的 OTP 地址單元中的一個字(Word)
讀入 ROMD(ROMDH,ROMDL)中。
TBR
TBR#1
TBR_1
TBR1#
查表寫指令:本芯片查表寫指令保留未用。
TBW
TBW#1
TBW_1
TBW1#
查表指令的具體操作可參考《附錄 1 指令集》
3. 3. 3 IAP編程
IAP 編程操作通過 IAPC 控制寄存器將 ROMD(ROMDH,ROMDL)中的內(nèi)容寫入 FRA(FRAH,F(xiàn)RAL)指向的 OTP 地址單元。IAP 編程訪問地址空間范圍 200H~7DFH。建議每個地址編程完成,查表讀出驗(yàn)證是否成功,如果不成功需返回編程操作,直到讀出驗(yàn)證成功后再編程后續(xù)地址空間。單地址編程,編程時間至少為 2ms。
應(yīng)用例程 1:IAP 編程
MOVI 0x02 ;將 55AAH 寫入 OTP 的 0210H 地址單元
MOVA FRAH
MOVI 0x10
MOVA FRAL
MOVI 0xAA
MOVA ROMDL
MOVI 0x55
MOVA ROMDH
BSS IAPC, IAPEN ;使能 IAP 操作
BSS IAPC, IAPGO ;觸發(fā) IAP 操作
WAIT:
JBC IAPC, IAPGO
GOTO WAIT
......
應(yīng)用例程 2:IAP 查表讀
MOVI 0x02 ;讀取數(shù)據(jù)存儲器 0210H 單元
MOVA FRAH
MOVI 0X10
MOVA FRAL
TBR ;查表讀指令,讀取數(shù)據(jù)到 ROMDH/L 寄存器
MOV ROMDH, 0
… …
MOV ROMDL, 0
… …
3. 4. 3 通用數(shù)據(jù)存儲器
通用數(shù)據(jù)存儲器被用于臨時存放數(shù)據(jù)和控制信息,可以在程序控制下進(jìn)行讀寫操作。本芯片通用數(shù)據(jù)存儲器空間為 64 Bytes,地址范圍為 0000H~003FH。通用數(shù)據(jù)存儲器的內(nèi)容在上電復(fù)位后是不確定的,未下電的其他復(fù)位后,將保存復(fù)位前的內(nèi)容。
3. 4. 4 特殊功能寄存器
特殊功能寄存器用于芯片對外設(shè)操作的控制設(shè)定。本芯片支持 128 個特殊寄存器,地址范圍 FF80H~FFFFH。大多數(shù)寄存器都是可以讀寫的,僅有少數(shù)部分寄存器不對外開放。相關(guān)功能所使用的寄存器將分別在各個章節(jié)中描述。
3. 4. 5 尋址方式
SRAM 數(shù)據(jù)存儲器的尋址方式支持直接尋址和間接尋址。
3. 4. 5. 1 直接尋址
在直接尋址時,指令中的 8 位地址信息用于 GPR 和 SFR 尋址。當(dāng)指令中的 8 位地址信息R<7:0>小于 80H時,直接尋址 GPR 映射區(qū)。當(dāng) R<7:0>大于或等于 80H時,直接尋址 SFR映射區(qū)。
3. 4. 5. 2 間接尋址
間接尋址是通過 16 位間接地址寄存器 IAA(由 2 個 8 位寄存器 IAAH 和 IAAL 組成)和 8位虛擬數(shù)據(jù)寄存器 IAD 間接訪問數(shù)據(jù)尋址空間中的存儲單元,尋址空間為 0000H~ FFFFH。先將訪問目的地址存放于間接地址寄存器 IAA,再通過指令對 IAD 進(jìn)行讀/寫操作,實(shí)際的讀/寫操作對象則是 IAA 指向的數(shù)據(jù)尋址空間中的目的地址單元。
由于 IAD 寄存器本身也映射到數(shù)據(jù)尋址空間的 FF80H 地址,因此,當(dāng) IAA 存放的地址值為 FF80H 時,讀/寫 IAD 相當(dāng)于用間接尋址方式訪問虛擬寄存器 IAD 本身,此時讀操作將始終讀出為 00H,寫操作則是一個空操作(可能影響狀態(tài)位)。
ISTEP 指令,用來對 16 位間接尋址寄存器 IAAH/IAAL 進(jìn)行偏移操作。執(zhí)行該指令時,先將指令字中的 8 位有符號立即數(shù)進(jìn)行符號位擴(kuò)展為 16 位數(shù),再將 IAA 的值加上這個數(shù)的結(jié)果存回 IAA 寄存器。ISTEP 可實(shí)現(xiàn)的偏移范圍為-128~127。雖然只有 8 位立即數(shù),但是該條指令對整個IAA(IAAL和IAAH)進(jìn)行16位計(jì)算。計(jì)算的結(jié)果依然存放于IAAL和IAAH中。
應(yīng)用例程:采用間接尋址將(020H ~ 02FH)的寄存器清零。
……
CLR IAAH
MOVI 0X20 ;對指針初始化
MOVA IAAL ;IAA 指向 RAM
NEXT1:
CLR IAD ;清零 IAD 寄存器
ISTEP 0X01 ;指針 IAA 內(nèi)容加 1
JBS IAAL, 4 ;
GOTO NEXT1 ;未完成,循環(huán)到下一個單元清零
CONTINUE: ;已經(jīng)完成,繼續(xù)執(zhí)行后面的程序
……
第 4 章 輸入/輸出端口
4. 1 概述
輸入/輸出端口是芯片的最基本組成部分,本芯片最多支持 13 個 I/O 端口和 1 個輸入端口。
一個輸入端口 PA3 是 TTL 輸入,其它所有 I/O 端口都是 TTL/SMT 輸入和 CMOS 輸出驅(qū)
動。
PA 輸入/輸出端口功能組件
- 7 位雙向輸入/輸出和 1 位輸入端口
- TTL/SMT 輸入和 CMOS 輸出驅(qū)動
- 端口輸入/輸出控制寄存器(PAT)
- 端口弱上拉控制寄存器(N_PAU)
- 端口弱下拉控制寄存器(N_PAD)
- PA0~PA7 支持外部按鍵中斷功能
- PA0~PA2,PA7 I/O 端口數(shù)模選擇寄存器(ANS)
PB 輸入/輸出端口功能組件
- 6 位雙向輸入/輸出端口
- TTL/SMT 輸入和 CMOS 輸出驅(qū)動
- 端口輸入/輸出控制寄存器(PBT)
- 端口弱上拉控制寄存器(N_PBU)
- 端口弱下拉控制寄存器(N_PBD)
- PB0~PB5 支持外部端口中斷功能
- PB0~PB1 I/O 端口數(shù)模選擇寄存器(ANS)
注 1:當(dāng)端口設(shè)置為輸出、外部振蕩器時鐘端口時,內(nèi)部弱上/下拉自動禁止。
4. 3. 3 I/O端口大電流控制功能
寄存器 N_PBD<5>(PLCS)可控制端口 PA(PA7-4,PA2-0),PB(PB5-0)的電流驅(qū)動能力。
4. 3. 4 I/O端口模擬/數(shù)字類型選擇功能
當(dāng)數(shù)字信號和模擬信號共用管腳時,在使用對應(yīng)端口的數(shù)字信號或模擬信號功能前,須正確設(shè)置端口的類型,否則可能不會達(dá)到預(yù)期的結(jié)果。本芯片中 PA0~PA2, PA7, PB0~PB1 端口均具有獨(dú)立的模擬/數(shù)字信號選擇功能,由 ANS 寄存器控制選擇。當(dāng)端口被配置為模擬端口時,讀相應(yīng) Px 寄存器始終讀到“0”。
4. 3. 5 I/O端口復(fù)用功能
為了使資源合理利用最優(yōu)化,本芯片大部分的 I/O 端口都具有復(fù)用功能。當(dāng)端口用于復(fù)用功能時,管腳電平由復(fù)用功能決定。
4. 4 端口中斷
4. 4. 1 按鍵中斷(KINT)
本芯片外部端口支持 1 組外部按鍵中斷。按鍵中斷支持最多 8 個按鍵輸入端 KIN<7:0>, 8 個按鍵共用一個按鍵中斷使能位 KIE(INTE0<0>)及按鍵中斷標(biāo)志位 KIF(INTF0<0>),每個輸入端可以由相應(yīng)的按鍵屏蔽位 KMSKx(INTC0<7:0>)屏蔽,任何其中一個按鍵中斷產(chǎn)生將影響中斷標(biāo)志 KIF。
當(dāng) KINn 復(fù)用端口被配置為數(shù)字輸入端口,且 1 組中任何一個端口輸入信號發(fā)生電平變化時,將產(chǎn)生按鍵中斷 KINT。使用外部按鍵中斷時,須配置相應(yīng)的控制寄存器,并且使能外部按鍵中斷端口的內(nèi)部弱上拉電阻。外部按鍵電平比較,是比較按鍵輸入端口電平與鎖存器上的最后輸入值。清除按鍵中斷標(biāo)志位前,必須對相應(yīng)復(fù)用端口進(jìn)行一次讀/寫操作,否則按鍵中斷標(biāo)志位無法被清除。在按鍵中斷使能(KMSKn=1,KIE=1)前,先對端口寄存器進(jìn)行讀或者寫的操作,清除中斷標(biāo)志位,以免誤產(chǎn)生中斷。此中斷能將芯片從睡眠狀態(tài)喚醒。
4. 4. 2 外部端口中斷(PINT)
本芯片外部端口支持 4 個外部端口中斷,外部中斷源由外部中斷選擇位 PINT3S~PINT0S(PINTS<7:0>)選擇。外部端口中斷由相應(yīng)的 PIE3~PIE0(INTE1<3:0>)使能,通過PEG3~PEG0(INTC1<3:0>)選擇上升沿觸發(fā)還是下降沿觸發(fā)。當(dāng) PINTn 復(fù)用端口被配置為數(shù)字輸入端口,且輸入信號變化滿足觸發(fā)條件時,將產(chǎn)生 PINTn 外部端口中斷,中斷產(chǎn)生將影響相應(yīng)的中斷標(biāo)志 PIFn(INTF1<3:0>)。此中斷能將芯片從睡眠狀態(tài)喚醒。
4. 5 I/O端口操作注意事項(xiàng)
當(dāng)執(zhí)行以端口寄存器為目標(biāo)的操作(除位操作指令)時,芯片實(shí)際執(zhí)行讀-修改-寫過程,即先讀取該組全部 I/O 端口的電平,修改后再寫回端口寄存器。位操作指令對 I/O 的修改操作只影響選定的位,不會影響同組其它 I/O 端口。因此建議用戶對單個 I/O 的修改采用位操作指令。此外用戶在對 I/O 端口的復(fù)用功能使能和關(guān)閉時,應(yīng)充分考慮當(dāng)前 I/O 端口的輸出寄存器值,并判斷是否需要重新對這些 I/O 端口進(jìn)行初始化賦值。
4. 6 特殊功能寄存器
輸入/輸出端口的設(shè)置包括一系列的寄存器控制,PX 寄存器用于顯示 PX 端口的電平狀態(tài),PXT 寄存器用于設(shè)置 PX 端口的輸入輸出狀態(tài),N_PXU / N_PXD 用于設(shè)置 PX 端口的弱上拉 / 弱下拉電阻的連接狀況。ANS 用于設(shè)置 PX 端口的數(shù)據(jù)類型。
第 5 章 特殊功能及操作特性
5. 1 系統(tǒng)時鐘與振蕩器
5. 1. 1 概述
芯片運(yùn)行所需要的時鐘源由振蕩器提供,不同的振蕩器選擇可以讓使用者在不同的應(yīng)用需求中實(shí)現(xiàn)更大范圍的功能。本款芯片所提供的振蕩器有三種:外部晶體/陶瓷振蕩器XTAL、內(nèi)部高速RC振蕩器(16MHz)和內(nèi)部低速RC振蕩器(32KHz)。靈活選擇振蕩器,使得產(chǎn)品在速度和功耗方面可以達(dá)到最優(yōu)化。外部LP振蕩器和內(nèi)部低速RC振蕩器除了作為系統(tǒng)時鐘源外,還可以為看門狗定時器等提供所需要的時鐘源。
振蕩器模式
- 外部振蕩器(HS/XT/LP)
- 內(nèi)部 16MHz RC 振蕩器(可配置為 INTOSC 和 INTOSCO)
- 內(nèi)部 32KHz RC 振蕩器
內(nèi)部 16MHz RC 振蕩器
- 8 位校準(zhǔn)寄存器(OSCCAL)
- 出廠前,在常溫下已經(jīng)校準(zhǔn)到精度為±2%
- 支持多種分頻時鐘
內(nèi)部 32KHz RC 振蕩器
- 8 位校準(zhǔn)寄存器(WDTCAL)
系統(tǒng)時鐘切換
- HS/XT/INTOSCH 16MHz 振蕩時鐘與內(nèi)部低速 INTOSCL 32KHz 時鐘切換
- 外部低速 LP 振蕩時鐘與內(nèi)部高速 INTOSCH 16MHz 時鐘切換
振蕩和暫停
- 在 IDLE0 模式下,振蕩器暫停振蕩
- 在 IDLE1 模式下,振蕩器保持振蕩,系統(tǒng)時鐘暫停
5. 1. 2. 1 外部時鐘
外部時鐘包括晶體/陶瓷振蕩器模式(HS/XT/LP)。對于晶體/陶瓷振蕩器而言,只要簡單地將晶體連接至 OSC1 和 OSC2 管腳間,就會產(chǎn)生振蕩所需的相移及反饋。為保證振蕩頻率更精準(zhǔn),需連接兩個小容量電容 C1 和 C2 到 VSS,具體數(shù)值與所使用的晶體/陶瓷振蕩器有關(guān),電容參考取值范圍為 15~33pF。根據(jù)所選擇的振蕩器頻率,可分為三種模式:HS 模式、XT 模式和 LP 模式。當(dāng)芯片配置字 OSCS<2:0> = 000 時,選擇 LP 模式;當(dāng)OSCS<2:0> = 010 時,選擇 HS 模式;當(dāng)芯片配置字 OSCS<2:0> = 100 時,選擇 XT 模式。芯片配置字 OSCS<2:0>客戶通過編程界面選擇。
晶體/陶瓷振蕩器模式(HS、XT、LP 模式)
HS/XT 晶振起振穩(wěn)定時間為 512 個系統(tǒng)時鐘。LP 晶振設(shè)計(jì)為低功耗振蕩,起振穩(wěn)定時間約一秒左右。
5. 1. 2. 2 內(nèi)部高速 16MHz RC振蕩器模式(INTOSCH)
芯片內(nèi)置 16MHz RC 時鐘振蕩器,不需要外接其它 外部器件。當(dāng) 配置字中的OSCS<2:0>=000/110/111且寄存器OSCC中的CLKSS=1時,選擇內(nèi)部16MHz RC作為系統(tǒng)時鐘源,此時PA2和PA3管腳復(fù)用為通用I/O端口。INTOSCH 16MHz最低可分頻至32KHz,出廠前,內(nèi)置16MHz RC時鐘振蕩器已在常溫下校準(zhǔn)。芯片上電時,會自動加載校準(zhǔn)值,客戶不需要對校準(zhǔn)寄存器OSCCAL進(jìn)行任何操作。
5. 1. 2. 3 內(nèi)部低速 32kHz RC振蕩器模式(INTOSCL)
芯片內(nèi)置32KHz RC時鐘振蕩器,不需要外接其它外部器件,可用作WDT計(jì)數(shù)時鐘源,也可配置為主系統(tǒng)時鐘源。當(dāng)配置字中的OSCS<2:0>=010/100/110/111且寄存器OSCC中的CLKSS=0時,選擇內(nèi)部32KHz RC作為系統(tǒng)時鐘源,此時PA和PA3管腳復(fù)用為通用I/O端口。芯片上電時,會自動加載校準(zhǔn)值,客戶不需要對校準(zhǔn)寄存器WDTCAL進(jìn)行任何操作。5. 1. 3 系統(tǒng)時鐘切換
高頻時鐘能提供系統(tǒng)更高的性能,低頻時鐘能夠提供更低的功耗。因此,根據(jù)用戶需要,靈活地安排高低頻時鐘切換,可以使系統(tǒng)在執(zhí)行速度和功耗方面最優(yōu)化。系統(tǒng)可軟件設(shè)置寄存器位 CLKSS(OSCC<7>),選擇高、低速系統(tǒng)時鐘。系統(tǒng)上電時,寄存器 CLKSS 的值默認(rèn)為 0,工作在低速系統(tǒng)時鐘模式下。
系統(tǒng)支持四種時鐘切換:
內(nèi)部低速 INTOSCL 32KHz 時鐘切換到內(nèi)部高速 INTOSCH/外部高速 HS/XT 時鐘
- 設(shè)置芯片配置字 CFG_WD 中的 OSCS<2:0>=010/100/110/111;
- 設(shè)置 OSCC 寄存器中的 CLKSS=1;
- 檢測 OSCC 寄存器中的 HSOSCF 位,直到檢測到 HSOSCF=1;
- 等待一條 NOP 指令;
- 檢測 PWEN 寄存器的 SW_HS 位,直到檢測到 SW_HS=1;
內(nèi)部高速 INTOSCH/外部高速 HS/XT 時鐘切換到內(nèi)部低速 INTOSCL 時鐘
- 設(shè)置芯片配置字 CFG_WD 中的 OSCS<2:0>=010/100/110/111;
- 設(shè)置 OSCC 寄存器中的 CLKSS=0;
- 檢測 OSCC 寄存器中的 WDTOSCF 位,直到檢測到 WDTOSCF =1;
- 等待一條 NOP 指令;
- 檢測 PWEN 寄存器的 SW_WDT 位,直到檢測到 SW_WDT =1;
外部低速 LP 時鐘切換到 INTOSCH 時鐘鐘
- 設(shè)置芯片配置字 CFG_WD 中的 OSCS<2:0>=000;
- 設(shè)置 OSCC 寄存器中的 CLKSS=1;
- 檢測 OSCC 寄存器中的 HSOSCF 位,直到檢測到 HSOSCF=1;
- 等待一條 NOP 指令;
- 檢測 PWEN 寄存器的 SW_HS 位,直到檢測到 SW_HS=1;
內(nèi)部高速 INTOSCH 時鐘切換到外部低速 LP 時鐘
- 設(shè)置芯片配置字 CFG_WD 中的 OSCS<2:0>=000;
- 設(shè)置 OSCC 寄存器中的 CLKSS=0;
- 檢測 OSCC 寄存器中的 LPOSCF 位,直到檢測到 LPOSCF =1;
- 等待一條 NOP 指令;
- 檢測 PWEN 寄存器的 SW_LP 位,直到檢測到 SW_LP =1;
5. 2 看門狗定時器
5. 2. 1 概述
看門狗定時器是芯片的一個組成部分,它的功能在于在發(fā)生軟件故障時,通過器件復(fù)位將
芯片復(fù)位。若系統(tǒng)進(jìn)入了錯誤的工作狀態(tài),看門狗可以在合理的時間范圍內(nèi)使芯片復(fù)位。
使能看門狗時,若用戶程序清除看門狗定時器失敗,則在預(yù)定的時間范圍內(nèi),看門狗會使
系統(tǒng)復(fù)位。
WDT 定時器
- 8 位 WDT 定時計(jì)數(shù)器(無實(shí)際物理地址,不可讀寫)
- 8 位預(yù)分頻器(無實(shí)際物理地址,不可讀寫)
- WDT 控制寄存器(WDTC)
- WDT 計(jì)數(shù)周期匹配寄存器(WDTP)
- 喚醒功能
- 復(fù)位功能
內(nèi)部 WDT RC 振蕩器
- 定時器時鐘源為內(nèi)部 32KHz RC 時鐘或外部 LP 振蕩時鐘
- 8 位 WDT 時鐘校準(zhǔn)寄存器(WDTCAL)
- 出廠前,在常溫下已經(jīng)將頻率校準(zhǔn)在±15%以內(nèi),其高低溫頻偏對 WDT 計(jì)數(shù)
溢出周期的影響,見《電氣特性》章節(jié)的描述
5. 2. 3 WDT定時器
芯片提供8位WDT定時計(jì)數(shù)器,通過芯片配置字WDTEN可使能硬件看門狗WDT。當(dāng)芯片配置字WDTEN使能時,WDT定時器計(jì)數(shù)使能;當(dāng)WDTEN關(guān)閉時,WDT定時器計(jì)數(shù)禁止。客戶通過編程界面選擇。
當(dāng)配置字 OSCS<2:0>位配置為 LP 模式時,WDT 的計(jì)數(shù)時鐘源有兩種選擇:內(nèi)部 32KHzRC 時鐘和外部 LP 振蕩時鐘。如果 WDTCKS=0 時,WDT 的計(jì)數(shù)時鐘為 WDT RC 時鐘;當(dāng) WDTCKS=1 時,WDT 的計(jì)數(shù)時鐘為 LP 振蕩時鐘。WDT 支持一個預(yù)分頻器,可通過 WDTC 寄存器中的 WDTPRS<3:0>位設(shè)置 WDT 時鐘源的預(yù)分頻比,再將分頻后的時鐘信號作為 WDT 定時器的計(jì)數(shù)時鐘。當(dāng) WDTPRE
(WDTC<4>)清零,禁止預(yù)分頻器,WDT 時鐘為 32KHz;當(dāng) WDTPRE(WDTC<4>)置 1,使能預(yù)分頻器。
WDT 支持一組可讀/寫的定時周期寄存器 WDTP,當(dāng)看門狗計(jì)數(shù)到定時周期時,超時溢出。在 IDLE 模式下,WDT 計(jì)數(shù)溢出會喚醒 CPU;此外,WDT 計(jì)數(shù)溢出會復(fù)位芯片。為了避免不必要的復(fù)位,可使用 CWDT 指令適時清零 WDT 計(jì)數(shù)器。
在預(yù)分頻器分頻比為 1:2,且周期寄存器 WDTP 設(shè)置為 FFH 時,WDT 使用內(nèi)部 WDT 時鐘進(jìn)行計(jì)數(shù),常溫下時鐘頻率約為 32KHz,計(jì)數(shù)溢出時間約為 16ms。當(dāng)禁止預(yù)分頻器時,WDT 的計(jì)數(shù)溢出時間約為 8ms。 其它工作條件下,WDT 的計(jì)數(shù)溢出時間,可參考《附錄 參數(shù)特性圖》章節(jié)的相關(guān)圖示。
值得注意的是,當(dāng) WDT 內(nèi)部 RC 時鐘使能位 RCEN=0 時,只在 IDLE 模式下看門狗禁止,其它工作模式下 WDT 的 RC 時鐘一直打開,不受 RCEN 的影響。
5. 3. 4 外部MRSTN管腳復(fù)位
芯片提供外部 MRSTN 管腳,當(dāng) CFG_WD<5>(MRSTEN)為 1 時,用于系統(tǒng)復(fù)位。當(dāng)復(fù)位管腳輸入低電平信號時,系統(tǒng)復(fù)位。當(dāng)復(fù)位管腳處于高電平時,系統(tǒng)正常運(yùn)行。需要注意的是,在系統(tǒng)上電完成后,外部復(fù)位管腳必須輸入高電平,否則系統(tǒng)將一直保持在復(fù)位狀態(tài)。另外,需要特別注意的是,禁止將 MRSTN 管腳直接連接到 VDD 上;禁止 MRSTN 管腳上的電壓高于 VDD 電壓。
外部 MRSTN 管腳復(fù)位電路有多種,以下介紹兩種比較典型的連接電路。
1. RC 復(fù)位
RC 復(fù)位電路是外部 MRSTNN 腳復(fù)位電路最簡單的一種,對外界環(huán)境條件要求不高的情況下,可以采用此種連接方式。
5. 4. 1 MCU低功耗模式
本芯片支持兩種低功耗休眠模式:IDLE0 模式或 IDLE1 模式,通過設(shè)置 PWRC 寄存器位
LPM(PWRC<7>)進(jìn)行選擇。
支持 IDLE0 模式
- 當(dāng) LPM = 0 時,執(zhí)行 IDLE 指令,芯片進(jìn)入 IDLE0 模式:
- 時鐘源停振(32KHz RC 時鐘源除外),主系統(tǒng)時鐘暫停
- 程序暫停、同步模塊暫停、異步模塊運(yùn)行,器件功耗降低
- 支持低功耗喚醒,喚醒時間可配,同時需要考慮 LDO 穩(wěn)定時間
- 所有 I/O 端口將保持進(jìn)入 IDLE0 模式前的狀態(tài)
- 若使能 WDT,則 WDT 將被清零并保持運(yùn)行
- N_PD 位被清零,N_TO 位被置 1
支持 IDLE1 模式
- 當(dāng) LPM = 1 時,執(zhí)行 IDLE 指令,芯片進(jìn)入 IDLE1 模式:
- 時鐘源保持運(yùn)行,主系統(tǒng)時鐘暫停
- 程序暫停、同步模塊暫停、異步模塊運(yùn)行,器件功耗降低
- 支持低功耗喚醒,喚醒時間可配,最小 1 個機(jī)器周期
- 所有 I/O 端口將保持進(jìn)入 IDLE1 前的狀態(tài)
- 若使能 WDT,則 WDT 將被清零并保持運(yùn)行
- N_PD 位被清零,N_TO 位被置 1
5. 4. 2 低功耗模式配置
兩種低功耗模式 IDLE0 和 IDLE1 模式的選擇由 PWRC 寄存器中的 LPM 位控制。當(dāng) LPM
= 0 時,執(zhí)行 IDLE 指令,芯片進(jìn)入 IDLE0 模式;當(dāng) LPM = 1 時,執(zhí)行 IDLE 指令,芯片
進(jìn)入 IDLE1 模式。
為了降低功耗,所有 I/O 管腳都應(yīng)保持為 VDD 或 VSS。為了避免輸入管腳懸空而引入開
關(guān)電流,應(yīng)在外部將高阻輸入的 I/O 管腳拉為高電平或低電平,MRSTN 管腳必須處于邏
輯高電平。
5. 4. 3 IDLE喚醒方式配置
當(dāng)系統(tǒng)進(jìn)入低功耗模式后,程序處于暫停狀態(tài),以下幾種方式可將系統(tǒng)喚醒。
注 1:低功耗喚醒與全局中斷使能無關(guān),只需相應(yīng)中斷源使能位置位為“1”即可。在低功耗模式時,若外設(shè)產(chǎn)生中斷
信號,即使全局中斷使能 GIE 為 0,低功耗模式依然會被喚醒,只是喚醒后不會執(zhí)行中斷程序。
注 2:關(guān)于外部按鍵中斷使用,當(dāng)開啟中斷使能和中斷屏蔽位使能前,先對端口寄存器進(jìn)行讀或者寫的操作,然后
清除中斷標(biāo)志位,以免誤產(chǎn)生中斷。
當(dāng)喚醒事件發(fā)生后,芯片根據(jù)配置字 OSCS<2:0>的配置執(zhí)行下述操作:
當(dāng) OSCS<2:0>配置為 HS/XT/INTOSCO/INTOSC 模式時:
- 在 IDLE0 模式(LPM=0)下,芯片需要先等待 VRwkdly 時間(由 VRST(PWRC<6:5>)設(shè)定),此時間稱為 LDO 穩(wěn)定時間,之后芯片主時鐘運(yùn)行一段Twkdly 時間后才執(zhí)行 IDLE 下一條指令,Twkdly 稱為喚醒延時,喚醒延時可通過 WKDC 寄存器設(shè)置;
- 在 IDLE1 模式(LPM=1)下,芯片僅等待 Twkdly 時間后就執(zhí)行 IDLE 下一條指令,無 VRwkdly 時間。
當(dāng) OSCS<2:0>配置為 LP 模式時:
- 在 IDLE0 模式(LPM=0)下,芯片需要先等待 VRwkdly 時間(由 VRST(PWRC<6:5>)設(shè)定),此時間稱為 LDO 穩(wěn)定時間,接著芯片等待 LPwkdly 時間,之后芯片主時鐘運(yùn)行一段 Twkdly 時間后才執(zhí)行 IDLE 下一條指令,Twkdly稱為喚醒延時,喚醒延時可通過 WKDC 寄存器設(shè)置;
- 在 IDLE1 模式(LPM=1)下,芯片僅等待 Twkdly 時間后就執(zhí)行 IDLE 下一條指令,無 VRwkdly 和 LPwkdly 時間。
第 6 章 外設(shè)
6. 1 8 位PWM時基定時器(T8P1/T8P2)
6. 1. 1 概述
本芯片包含 2 組 PWM 時基定時器(T8P1/T8P2),支持兩種工作模式,定時器模式和 PWM
模式。定時器模式根據(jù)寄存器制定的定時時間進(jìn)行定時,可以使定時器有選擇地產(chǎn)生中斷請
求或完成其它操作。PWM 模式用于 PWM 輸出。
T8Pn 支持兩種工作模式(時鐘源為系統(tǒng)時鐘 2 分頻(Fosc/2))
- 定時器模式
- PWM 模式,支持最高 11 位 PWM 平均輸出精度,支持 PWM 帶死區(qū)互補(bǔ)輸出,
且死區(qū)時間軟件可配置
T8Pn 支持以下功能組件
- 4 位的預(yù)分頻器和 8 位后分頻器(無實(shí)際物理地址,軟件不可讀寫)
- 8 位計(jì)數(shù)器(T8Pn)
- 8 位精度寄存器(T8PnR)
- 8 位周期寄存器(T8PnP)
- 8 位周期緩沖器(PRDBUF,無實(shí)際物理地址,軟件不可讀寫)
- 8 位精度緩沖器(RESBUF,無實(shí)際物理地址,軟件不可讀寫)
- 8 位 T8Pn PWM 死區(qū)控制寄存器(T8PnPDT)
- 控制寄存器(T8PnC)
- T8PnPEX 后分頻比擴(kuò)展寄存器(T8P1PEX/T8P2PEX)
- T8Pn 周期匹配控制寄存器(T8P1PMC/T8P2PMC)
- T8Pn 輸出控制寄存器(T8P1OC)
- 8 位 T8Pn PWM 死區(qū)控制寄存器(T8PnPDT)
中斷和暫停
- 支持匹配中斷標(biāo)志(T8PnTIF)和周期中斷(T8PnPIF)
- 支持中斷處理
- 在 IDLE 模式下,T8Pn 暫停工作
6. 1. 4 預(yù)分頻器和后分頻器
預(yù)分頻器和后分頻器可以提供一個更長的溢出和中斷周期。T8Pn 模塊計(jì)數(shù)器支持可配置的4 位預(yù)分頻器和可配置的 8 位后分頻器。預(yù)分頻器與后分頻器的計(jì)數(shù)值都無法讀寫,修改T8Pn 的控制寄存器或計(jì)數(shù)器都會把預(yù)分頻器和后分頻器清零,但不改變分頻比設(shè)置。預(yù)分頻器的分頻比可通過 T8PnC 寄存器中的 T8PnPRS<1:0>位進(jìn)行設(shè)置,預(yù)分頻比范圍為1:1~1:16。后分頻器的分頻比可通過 T8PnC 寄存器中的 T8PnPOS<3:0>位和后分頻比擴(kuò)展寄存器 T8PnPEX 中的 T8PnPOSEX<3:0>進(jìn)行設(shè)置,后分頻比范圍為 1:1~1:256。
6. 1. 5 工作模式
T8P1/T8P2 有兩種工作模式,定時器模式和 PWM 模式,通過 T8PnM 寄存器進(jìn)行模式選
擇。兩種模式均支持預(yù)分頻器和后分頻器。兩種模式下,T8Pn 計(jì)數(shù)器的時鐘源均為系統(tǒng)時
鐘 2 分頻(Fosc/2)。
6. 1. 6 定時器模式
當(dāng) T8PnM=0 且 T8PnE=1 時,T8Pn 工作在定時器模式。
在定時器模式下,T8Pn 計(jì)數(shù)器的時鐘源為系統(tǒng)時鐘 2 分頻(Fosc/2),可選擇預(yù)分頻器對計(jì)數(shù)時鐘進(jìn)行分頻,計(jì)數(shù)器的計(jì)數(shù)時鐘為分頻后的時鐘。
在定時器模式下,當(dāng) T8PnPMS=0 時,不更新周期緩沖器 PRDBUF,T8Pn 的計(jì)數(shù)值與周期寄存器 T8PnP 進(jìn)行比較匹配;當(dāng) T8PnPMS=1 時,更新周期寄存器 T8PnP 的值至周期緩沖器 PRDBUF,T8Pn 的計(jì)數(shù)值與周期緩沖器 PRDBUF 進(jìn)行比較匹配。當(dāng) T8Pn 的計(jì)數(shù)值與周期寄存器 T8PnP(當(dāng) T8PnPMS=0)或與周期緩沖器 PRDBUF(當(dāng)T8PnPMS=1)匹配相等時,將周期中斷標(biāo)志 T8PnPIF 置 1,該中斷標(biāo)志需要軟件清零。同時 T8Pn 被自動清零并重新開始計(jì)數(shù),同時后分頻器加 1 計(jì)數(shù)。當(dāng)后分頻器的計(jì)數(shù)值與后分頻器分頻比相同時,復(fù)位后分頻器,并將定時中斷標(biāo)志 T8PnTIF 置 1,該中斷標(biāo)志需要軟件清零。
在定時器模式下,周期緩沖器 PRDBUF 的更新:
在定時器模式起始周期,為了能將周期寄存器 T8PnP 的值更新至周期緩沖器 PRDBUF,需
滿足以下順序:先設(shè)置 T8PnM=0 且 T8PnPMS=1,再使能 T8PnE=1。起始周期結(jié)束后,每次 T8Pn 的計(jì)數(shù)值與周期緩沖器 PRDBUF 匹配相等后,將自動更新周期緩沖器。
6. 1. 7 PWM輸出模式
當(dāng) T8PnM=1 且 T8PnE=1 時,T8Pn 工作在 PWM 模式。計(jì)數(shù)時鐘源為系統(tǒng)時鐘二分頻 Fosc/2,并支持預(yù)分頻器。后分頻器的設(shè)置不影響 PWM 輸出周期和占空比,只影響匹配中斷 T8PnTIF 中斷標(biāo)志位的產(chǎn)生,詳見《T8Pn 后分頻器配置表》。
在 PWM 模式下,PWM 輸出由寄存器 T8PnTRN 位控制。
當(dāng) T8PnTRN=1 時,PWM 輸出始終為 0,且不會更新 T8PnP 和 T8PnR 寄存器的值至周期緩沖器 PRDBUF 和精度緩沖寄存器 RESBUF。
當(dāng) T8PnTRN=0 時,PWM 輸出波形才能啟動,且 PWM 輸出起始為 1,同時分別將 T8PnP和 T8PnR 寄存器的內(nèi)容更新至周期緩沖器 PRDBUF 和精度緩沖寄存器 RESBUF(緩沖器軟件不可讀寫),隨后 T8Pn 從零開始遞增計(jì)數(shù),當(dāng) T8Pn 與 RESBUF 的值相等時,PWM輸出改變?yōu)?0,并繼續(xù)遞增計(jì)數(shù)。當(dāng) T8Pn 的計(jì)數(shù)值與 PRDBUF 相等時, PWM 輸出恢復(fù)為 1,同時 PRDBUF 和 RESBUF 再次分別載入 T8PnP 和 T8PnR 寄存器的值,并產(chǎn)生周期中斷 T8PnPIF 中斷標(biāo)志,該中斷標(biāo)志需要軟件清零。同時 T8Pn 被自動清零并重新開始計(jì)數(shù),后分頻器加 1 計(jì)數(shù)。至此一個完整的 PWM 周期完成,隨后繼續(xù)循環(huán)新的 PWM 周期。當(dāng)后分頻器的計(jì)數(shù)值與后分頻器分頻比相同時,復(fù)位后分頻器,并將定時中斷標(biāo)志T8PnTIF 置 1,該中斷標(biāo)志需要軟件清零。
在 PWM 模式下,精度緩沖器 RESBUF 和周期緩沖器 PRDBUF 的更新:
在 PWM 模式起始周期,為了能將 T8PnP 和 T8PnR 寄存器的值至周期緩沖器 PRDBUF 和
精度緩沖寄存器 RESBUF,需滿足以下順序:先設(shè)置 T8PnM=1,T8PnPMS=1 和 T8PnE=1,再設(shè)置 PWM 輸出使能 T8PnTRN=0。
起始周期結(jié)束后,每次 T8Pn 的計(jì)數(shù)值與周期緩沖器 PRDBUF 匹配相等后,將自動更新周期緩沖器和精度寄存器。
注 1:若精度緩沖器 RESBUF 的值為 0,則當(dāng)前 PWM 周期內(nèi) PWM 輸出始終為 0;若精度緩沖寄存器 RESBUF 的值不小于 PRDBUF,則當(dāng)前 PWM 周期內(nèi) PWM 輸出始終為 1。
注 2:在讀取 T8PnTRN 位的狀態(tài)時,讀出此位的值為寫入此位值的反邏輯,即,當(dāng)此位寫入 0 時,讀出的值為 1;當(dāng)此位寫入 1 時,讀出的值為 0。
注 3:若 T8PnTRN=1,則 PWM 輸出 0,且周期緩沖器不更新(要么保持初始值 0xFF,要么為 T8PnTRN=0 時,最后一次更新過的值)。
6. 1. 8 PWM平均精度擴(kuò)展
PWM 的最大分辨率可達(dá) 9 位,進(jìn)一步細(xì)化 PWM 輸出精度,可通過設(shè)置擴(kuò)展精度位T8PxRE<1:0>(T8PxOC<5:4>)進(jìn)行 PWM 平均精度擴(kuò)展。此應(yīng)用模式原理是采用對連續(xù)輸出波形脈寬進(jìn)行間隔地加 1(加 1 個 LSB,即脈寬增加了 1 個 Tosc × [預(yù)分頻倍數(shù)](見PWM 計(jì)算公式)),實(shí)現(xiàn) PWM 波形占空比的平均值細(xì)化。
擴(kuò)展精度位可設(shè)置 0,1/4,2/4,3/4 共 4 個精度擴(kuò)展值,相當(dāng)于將 PWM 平均精度擴(kuò)展 2位。
例如,當(dāng)擴(kuò)展精度設(shè)置為 2/4,即 4 個 PWM 脈寬中有 2 個脈寬的寬度增加 1 個 LSB,且增加 1 個 LSB 的脈寬均勻分布在 4 個脈寬中,如下圖所示,假設(shè)脈寬寬度為 n,則 4 個開關(guān)周期(PWM 周期)的平均脈寬為 n+1/2,從而在不提高時鐘頻率的情況下,等效實(shí)現(xiàn)了較高分辨率的 PWM。
6. 1. 9 PWM 復(fù)用輸出端口
T8Pn 各支持一對互補(bǔ)的 PWM 輸出端口,PWMn0 和 PWMn1,支持可調(diào)死區(qū)時間配置,死區(qū)時間可由 T8PnPDT 寄存器設(shè)置。
PWM 死區(qū)延時時間計(jì)算公式:T8PnPDT<7:0> x Tosc。
通過設(shè)置 T8PnOC 寄存器中的 T8PnPEN<1:0>和 T8PnNEN<1:0>,選擇 T8Pn 的 PWMn0和 PWMn1 與 I/O 復(fù)用的輸出管腳。
PWMn0 的輸出極性可通過寄存器 ANS<7:6>(PWM20NS,PWM10NS)進(jìn)行設(shè)置。
值得注意的是,在使能 PWM 輸出前,需先將與 PWM 復(fù)用的相應(yīng) I/O 端口的控制寄存器位PxT 設(shè)置為輸出狀態(tài),否則將無 PWM 波形輸出。
6. 2 模/數(shù)轉(zhuǎn)換器模塊(ADC)
6. 2. 1 概述
模擬數(shù)字轉(zhuǎn)換器用于將模擬信號轉(zhuǎn)化成一組二進(jìn)制代碼組成的數(shù)字信號。模擬信號經(jīng)由多路
復(fù)用輸入腳輸入,通過一個采樣-保持電路連接至轉(zhuǎn)換器的輸入端。該芯片支持 12-bit 6+2
通道的 A/D 轉(zhuǎn)換器,經(jīng)過 A/D 轉(zhuǎn)換器轉(zhuǎn)換的 12-bit 二進(jìn)制數(shù)據(jù)存入 ADC 數(shù)據(jù)寄存器
ADCRH、ADCRL 中。
模/數(shù)轉(zhuǎn)換器特性
- 12 位 ADC 采樣精度
- 6 個模擬輸入+2 個電源電壓檢測通道可選
- 12 位轉(zhuǎn)換結(jié)果,支持高位對齊放置或低位對齊放置
- 支持外部或內(nèi)部參考電壓可選擇
- 支持電源電壓檢測,電源分壓比可選
- 支持可配置 A/D 轉(zhuǎn)換時鐘
- 時鐘源來自系統(tǒng)時鐘 Fosc
主要功能組件
- ADC 轉(zhuǎn)換值寄存器(ADCRL,ADCRH)
- ADC 控制寄存器(ADCCL,ADCCH)
- 端口類型選擇寄存器(ANS)
- ADC 自動觸發(fā)寄存器(ADCTR)
中斷和暫停
- 支持 A/D 轉(zhuǎn)換中斷(ADIE/ADIF)
6. 2. 3 ADC配置
ADC 電路使用前,需根據(jù)需要對以下幾個方面進(jìn)行正確的配置,才可得到需要的正確轉(zhuǎn)換結(jié)果。
時鐘選擇
ADC 電路所需要的時鐘有 7 組可選,F(xiàn)osc~Fosc/64,可通過 ADCCH 寄存器選擇所需要的時鐘。
參考電壓選擇
ADC 電路分別使用一個正參考電壓和一個負(fù)參考電壓,對應(yīng)外部參考電壓輸入腳分別為VREFP 和 VREFN。由于該兩個外部輸入腳分別與 PB1/AIN4、PB0/AIN3 復(fù)用,在使用這兩個外部參考電壓輸入時,需先通過 ANS 寄存器正確設(shè)置復(fù)用端口的類型。正參考電壓可通過 ADVREFS <2:0>位選擇 VDD、4V、3V、2.1V 或者是 VREFP 復(fù)用端口,負(fù)參考電壓對應(yīng)地選擇 VSS 或者是 VREFN 復(fù)用端口。在正端參考電壓選擇 2.1V 時,需先根據(jù) VDD 電壓通過 AD2VCALS 位(ADCTR<0>)正確設(shè)置 A/D 2.1V 參考電壓調(diào)校信息。采樣時間選擇
本芯片支持 ADC 電路的采樣時間可選,可通過 ADCCH 寄存器中的 ADST <3:0>位選擇大
約 1~15 個 Tadclk 共 15 種選項(xiàng)。
復(fù)用端口類型選擇
本芯片中 ADC 電路的所有模擬輸入通道 AINn、參考電壓外部輸入腳均和 PA/PB 端口復(fù)用,在使用 ADC 電路轉(zhuǎn)換前,須先將所使用的管腳通過 ANS 寄存器設(shè)置為模擬類型。
模擬信號輸入通道選擇
ADC 電路使能前,需先選擇 A/D 模擬通道。本芯片 ADC 電路支持 6 個外部通道和 2 個電源電壓檢測通道可選,外部通道分別為 AIN0~AIN5,兩個電源電壓檢測通道分別為 VDD/4和 VDD/8。A/D 模擬通道選擇哪個通道可通過 ADCCL 寄存器中的 ADCHS <2:0>位選擇。對齊方式選擇
本芯片 ADC 電路轉(zhuǎn)換的結(jié)果支持兩種對齊方式,低位對齊和高位對齊,可通過 ADCCH寄存器中的 ADFM 位進(jìn)行選擇。
ADC 模塊轉(zhuǎn)換觸發(fā)方式選擇
本芯片 ADC 模塊支持兩種 A/D 轉(zhuǎn)換觸發(fā)方式:軟件觸發(fā)和 PWM 自動觸發(fā)。
在ADC模塊轉(zhuǎn)換使能位ADEN(ADCCL<0>)使能后,通過軟件將ADC轉(zhuǎn)換狀態(tài)位ADTRG(ADCCL<1>)置“1”,ADC 模塊開始進(jìn)行轉(zhuǎn)換,此為軟件觸發(fā) A/D 轉(zhuǎn)換;在 ADC 模塊轉(zhuǎn)換使能位 ADEN(ADCCL<0>)和 PWM 自動觸發(fā) ADC 使能位 TRIGEN(ADCTR<4>)都使能后,由 PWM 邊沿觸發(fā)信號致使 ADTRG 位自動置為“1”,ADC 模塊開始進(jìn)行轉(zhuǎn)換,此種為 PWM 自動觸發(fā)。
PWM 自動觸發(fā)源可選擇來自 PWMn1 信號,通過自動觸發(fā)源選擇位 TRIGS(ADCTR<6>)進(jìn)行選擇,PWM 自動觸發(fā)邊沿可通過 TRIGPEG 位(ADCTR<5>)選擇 PWM 上升沿或下降沿觸發(fā)。
值得注意的是,在使用 PWM 自動觸發(fā) ADC 時,建議先查詢 ADTRG 位的當(dāng)前狀態(tài)。若查詢到 ADTRG 位為“1”時,此段時間的 PWM 邊沿自動觸發(fā)信號都將被忽略,直至 ADTRG
位的狀態(tài)恢復(fù)為“0”后,系統(tǒng)再次檢測到 PWM 邊沿自動觸發(fā)信號,才會響應(yīng) PWM 自動觸發(fā) ADC 模塊進(jìn)行轉(zhuǎn)換。
6. 2. 4 ADC轉(zhuǎn)換步驟
下面概述實(shí)現(xiàn) ADC 轉(zhuǎn)換過程的各個步驟。
Step 1:選擇 ADC 轉(zhuǎn)換時鐘,通過 ADCCH 寄存器中的 ADCS <2:0>選擇 ADC 轉(zhuǎn)換時鐘。
Step 2:選擇正負(fù)參考電壓,通過 ADCCL 寄存器中的 ADVREFNS 位進(jìn)行選擇。
Step 3:ADC 采樣時間選擇,通過 ADCCH 寄存器中的 A/D 采樣時間選擇位 ADST <3:0>設(shè)定。
Step 4:設(shè)置復(fù)用端口設(shè)為模擬類型,即選擇哪些管腳作為 ADC 轉(zhuǎn)換輸入管腳,由端口類型選擇寄存器 ANS 控制選擇。
Step 5:選擇模擬信號輸入通道 AINx,通過 ADCCL 寄存器中的 ADCHS <2:0>選擇 ADC模擬通道。
Step 6:設(shè)置轉(zhuǎn)換結(jié)果對齊方式,通過 ADCCH 寄存器中的 ADFM 位選擇高位對齊放置還是低位對齊放置。
Step 7:如果要使用中斷,則中斷控制寄存器需要正確地設(shè)置,以確保 A/D 中斷功能被正確激活。在中斷模式時,需將全局中斷使能位 GIE 置位為“1”和 ADC 中斷使能位置位為“1”。
Step 8:使能 ADC 電路,將 ADCCL 寄存器中的 ADC 使能位 ADEN 設(shè)置為“1”。
Step 9:選擇 ADC 模塊轉(zhuǎn)換觸發(fā)方式為軟件觸發(fā)還是 PWM 自動觸發(fā)。若選擇軟件觸發(fā),將 ADCCL 寄存器中的 ADC 轉(zhuǎn)換啟動位 ADTRG 位設(shè)置為“1”,開始進(jìn)行 ADC 轉(zhuǎn)換;若選擇 PWM 自動觸發(fā),需先設(shè)置 TRIGS 位選擇自動觸發(fā)源和 TRIGPEG 位選擇 PWM 自動觸發(fā)邊沿,設(shè)置 PWM 自動觸發(fā) ADC 使能位 TRIGEN 為“1”。在 PWM 自動觸發(fā) ADC模塊轉(zhuǎn)換設(shè)置完成后,自動邊沿觸發(fā)信號會自動將 ADTRG 位置為“1”,開始進(jìn)行 ADC轉(zhuǎn)換。
Step 10:輪詢 ADCCL 寄存器中的轉(zhuǎn)換狀態(tài)位 ADTRG 位,確定此次 A/D 轉(zhuǎn)換是否完成。
Step 11:讀取 ADCRH 和 ADCRL 寄存器中的轉(zhuǎn)換結(jié)果。
6. 3 低電壓檢測模塊(LVD)
6. 3. 1 概述
芯片內(nèi)置一組低電壓檢測模塊,支持低電壓檢測功能,即 LVD,該功能使能用于監(jiān)測電源電壓 VDD。在供電電源不穩(wěn)定的情況下,像外部電源噪聲串?dāng)_或 EMS 測試條件下,會使電源劇烈振蕩。在目標(biāo)電壓未穩(wěn)定時,可能就會低于工作電壓。若所需檢測的電壓低于一定值可提供一個警告信號。低電壓檢測也可產(chǎn)生中斷信號。
6. 3. 2 LVD操作
LVD 功能的禁止使能由 LVDC 寄存器中的 LVDEN 控制位設(shè)置。當(dāng) LVDEN 位清零,LVD 功能禁止。當(dāng) LVDEN 位置高,LVD 功能使能。LVD 模塊將電源電壓 VDD 與預(yù)置電壓進(jìn)行比較,比較結(jié)果通過 LVDC 寄存器的 LVDLS 位進(jìn)行查詢。預(yù)置電壓的閾值由 LVDC 寄存器中的 LVDV<1:0>配置,預(yù)置電壓范圍為 2.1V~3.6V。當(dāng)目標(biāo)電壓低于預(yù)置電壓值時,LVDLS位被置為高,表明檢測到低電壓產(chǎn)生,產(chǎn)生 LVD 中斷標(biāo)志。當(dāng) LVD 中斷使能開啟時產(chǎn)生 LVD中斷請求。
第 7 章 中斷處理
7. 1 概述
中斷是芯片一個重要功能。它能將芯片從睡眠模式中喚醒,也可以使系統(tǒng)在正常運(yùn)行過程中響應(yīng)突發(fā)事件,中止并保存當(dāng)前運(yùn)行程序的信息,跳轉(zhuǎn)到請求中斷的入口地址,執(zhí)行相對應(yīng)的中斷服務(wù)程序,處理突發(fā)事件。本芯片僅支持默認(rèn)中斷模式,最多可支持 12 個中斷源,1個軟件中斷和 11 個硬件中斷。
7. 3 中斷現(xiàn)場保護(hù)
中斷現(xiàn)場保護(hù)是中斷程序中一個很重要的組成部分。指令系統(tǒng)中有 PUSH(壓棧)和 POP(出棧)指令,可以用來實(shí)現(xiàn)中斷的數(shù)據(jù)保存。可以保存的數(shù)據(jù)包括:累加器 A 寄存器、程序狀態(tài)字寄存器 PSW、IAA 寄存器和 PCRH 寄存器。其它數(shù)據(jù)寄存器的保護(hù)需采用其它指令實(shí)現(xiàn)。可以連續(xù)進(jìn)行 2 次 PUSH,第 3 次 PUSH會使得第一次 PUSH 的數(shù)據(jù)丟失。同樣,超過 2 次的連續(xù) POP,第 3 次 POP 恢復(fù)的數(shù)據(jù)不可預(yù)期。
7. 4 中斷操作
每個硬件中斷源都有各自的中斷使能和中斷標(biāo)志位,因此初始化相應(yīng)的硬件中斷時,需要先清除中斷標(biāo)志位,再使能當(dāng)前中斷。若使能前不先清除中斷標(biāo)志,則有可能發(fā)生誤進(jìn)中斷的情況。除了每個中斷支持中斷使能外,本芯片還提供了一個全局中斷。因此在初始化所有需要的中斷后,請使能全局中斷。
若中斷事件條件產(chǎn)生,相關(guān)中斷標(biāo)志將被置為“1”。中斷標(biāo)志產(chǎn)生后程序要跳轉(zhuǎn)至相應(yīng)服務(wù)
地址執(zhí)行需滿足以下條件:
1. 當(dāng)對應(yīng)中斷使能位為“1”時,繼續(xù)判斷第二個條件是否滿足;當(dāng)對應(yīng)中斷使能位為“0”,即使中斷標(biāo)志為“1”,中斷也不會發(fā)生,程序也不會跳轉(zhuǎn)至中斷服務(wù)地址執(zhí)行。
2. 當(dāng)全局中斷使能位 GIE 為“0”,將屏蔽所有中斷請求。當(dāng)全局中斷使能位 GIE 為“1”,程序?qū)⑻林袛喾⻊?wù)地址執(zhí)行。
為確保對寄存器 GIE 和 GIEL 的軟件寫操作成功,需按如下步驟進(jìn)行:
1. 在默認(rèn)中斷模式或向量中斷模式下,對 GIE 位的軟件清 0 操作,需先關(guān)閉所有外設(shè)中斷使能,再將 GIE 位清 0;或在 GIE 位清 0 操作后,查詢 GIE 位是否為 0,不為 0則繼續(xù)執(zhí)行清 0 操作,直到成功為止;
對 GIE 位的軟件置 1 操作,無特殊要求,推薦先打開所需的外設(shè)中斷使能,再將 GIE位置 1。
2. 在向量中斷模式下,對 GIEL 位的軟件清 0 操作,需先關(guān)閉所有外設(shè)中斷使能,再將
GIEL 位清 0;或在 GIEL 位清 0 操作后,查詢 GIEL 位是否為 0,不為 0 則繼續(xù)執(zhí)行清 0 操作,直到成功為止;
對 GIEL 位的軟件置 1 操作,需與 GIE 位同時置 1,或先將 GIEL 位置 1,再將 GIE位置 1。
7. 4. 1 外部中斷
當(dāng) PINTn 復(fù)用端口被配置為數(shù)字輸入端口,且輸入信號變化滿足觸發(fā)條件時,將產(chǎn)生PINTn 外部端口中斷,相應(yīng)的中斷標(biāo)志 PIFn 被置“1”。當(dāng)全局中斷控制位 GIE 和外部端口中斷控制位 PIEn 都被置為“1”,則向 CPU 發(fā)出 PINTn 外部端口中斷請求。當(dāng)中斷條件允許,系統(tǒng)將進(jìn)入中斷服務(wù)程序入口地址,進(jìn)行中斷程序處理。值得注意的是,相應(yīng)中斷標(biāo)志位 PIFn 和中斷使能位 PIEn 都需通過軟件清除,INTC1 寄存器中的 PEGn 位用于配置觸發(fā)條件,可分別配置為上升沿觸發(fā)或下降沿觸發(fā)。
7. 4. 2 外部按鍵中斷
當(dāng) KINn 復(fù)用端口被配置為數(shù)字輸入端口,未被屏蔽的按鍵中任何一個端口輸入信號發(fā)生電平變化,將中斷標(biāo)志位 KIF 置為“1”,當(dāng)外部按鍵中斷控制位 KIE 為“1”,且全局中斷控制位 GIE 位使能后,則向 CPU 發(fā)出外部按鍵中斷請求。當(dāng)外部按鍵中斷條件允許時,系統(tǒng)將進(jìn)入中斷服務(wù)程序入口地址,進(jìn)行中斷程序處理。使用外部按鍵中斷時,須配置相應(yīng)的控制寄存器,并且使能外部按鍵中斷端口的內(nèi)部弱上拉電阻。
在按鍵中斷使能(KMSKn=1,KIE=1)前,先對端口寄存器進(jìn)行讀或者寫的操作,清除中斷標(biāo)志位,以免誤產(chǎn)生中斷。
清除該中斷標(biāo)志位 KIF 的操作步驟:
1)對端口寄存器進(jìn)行讀或者寫操作,結(jié)束端口電平與鎖存器值的不匹配條件;
2)軟件清除中斷標(biāo)志位 KIF。
中斷使能位 KIE 也需要通過軟件進(jìn)行清除。
7. 4. 3 T8Pn(T8P1/T8P2)定時中斷
8 位 PWM 時基定時器 T8Pn 處于定時器模式和 PWM 模式時,對計(jì)數(shù)時鐘進(jìn)行遞增計(jì)數(shù),當(dāng) T8Pn 后分頻器的計(jì)數(shù)值與后分頻器分頻比相同時,將中斷標(biāo)志 T8PnTIF 位置“1”。當(dāng)
T8Pn 定時中斷使能位 T8PnTIE 置為“1”,且全局中斷控制位 GIE 使能后,則向 CPU 發(fā)出
T8Pn 定時中斷請求。當(dāng) T8Pn 定時中斷條件允許時,系統(tǒng)將進(jìn)入中斷服務(wù)程序入口地址,進(jìn)行中斷程序處理。值得注意的是,T8Pn定時中斷標(biāo)志位 T8PnTIF 和中斷使能位 T8PnTIE都需通過軟件清除。
7. 4. 4 T8Pn(T8P1/T8P2)周期中斷
8 位 PWM 時基定時器 T8Pn 處于定時器模式和 PWM 模式時,都可以產(chǎn)生周期中斷。當(dāng)T8Pn 計(jì)數(shù)器與 T8PnP 寄存器的值相等時(PWM 模式時,T8Pn 從零開始遞增計(jì)數(shù)),將產(chǎn)生 T8Pn 周期中斷,中斷標(biāo)志 T8PnPIF 被置“1”。 如果中斷使能位 T8PnPIE 置為“1”,且全局中斷控制位 GIE 使能后,則向 CPU 發(fā)出 T8Pn 周期中斷請求。當(dāng) T8Pn 周期中斷
條件允許時,系統(tǒng)將進(jìn)入中斷服務(wù)程序入口地址,進(jìn)行中斷程序處理。值得注意的是,T8Pn周期中斷標(biāo)志位 T8PnPIF 和中斷使能位 T8PnPIE 都需通過軟件清除。
7. 4. 5 ADC中斷
ADC 中斷由 ADC 轉(zhuǎn)換動作控制,當(dāng) ADC 轉(zhuǎn)換完成時,將產(chǎn)生 ADC 中斷,ADC 中斷標(biāo)志位 ADIF 被置“1”。當(dāng) ADC 中斷控制位 ADIE 置為“1”,且全局中斷控制位 GIE 使能后,則向 CPU 發(fā)出 ADC 中斷請求。當(dāng) ADC 中斷條件允許時,系統(tǒng)將進(jìn)入中斷服務(wù)程序入口地址,進(jìn)行中斷程序處理。值得注意的是,ADC 中斷標(biāo)志位 ADIF 和中斷使能位 ADIE 都需通過軟件清除。
7. 4. 6 LVD中斷
當(dāng) VDD 電壓小于 LVDC 寄存器設(shè)置閾值電壓時,低電壓產(chǎn)生,LVDLS 上升沿或下降沿觸發(fā)后,中斷標(biāo)志 LVDIF 位被置“1”。如果中斷使能位 LVDIE 置為“1”,且全局中斷控制位GIE 使能后,則向 CPU 發(fā)出 LVD 中斷請求。當(dāng) LVD 中斷條件允許時,系統(tǒng)將進(jìn)入中斷服務(wù)程序入口地址,進(jìn)行中斷程序處理。值得注意的是,LVD 中斷標(biāo)志位 LVDIF 和中斷使能位 LVDIE 都需通過軟件清除。
7. 4. 7 中斷操作注意事項(xiàng)
用戶在使能中斷前需先清除相應(yīng)的中斷標(biāo)志,避免中斷的誤觸發(fā)。
除只讀的中斷標(biāo)志(由硬件清除)外,其余的中斷標(biāo)志必須通過軟件清除。
MCU 芯片使用注意事項(xiàng)
關(guān)于芯片的上/下電
MCU 芯片具有獨(dú)立電源管腳。當(dāng) MCU 芯片應(yīng)用在多電源供電系統(tǒng)時,應(yīng)先對 MCU 芯片上電,再對系統(tǒng)其它部件上電;反之,下電時,先對系統(tǒng)其它部件下電,再對 MCU 芯片下電。若操作順序相反則可能導(dǎo)致芯片內(nèi)部元件過壓或過流,從而導(dǎo)致芯片故障或元件退化。具體可參照芯片的數(shù)據(jù)手冊說明。
關(guān)于芯片的復(fù)位
MCU 芯片具有內(nèi)部上電復(fù)位。對于不同的快速上/下電或慢速上/下電系統(tǒng),內(nèi)部上電復(fù)位電路可能失效,
建議用戶使用外部復(fù)位、下電復(fù)位、看門狗復(fù)位等,確保復(fù)位電路正常工作。在系統(tǒng)設(shè)計(jì)時,若使用外部復(fù)位電路,
建議采用三極管復(fù)位電路、RC 復(fù)位電路。若不使用外部復(fù)位電路,建議采用復(fù)位管腳接電阻到電源,或采取必要的電源抖動處理電路或其它保護(hù)電路。具體可參照芯片的數(shù)據(jù)手冊說明。
關(guān)于芯片的時鐘
MCU 芯片具有內(nèi)部和外部時鐘源。內(nèi)部時鐘源會隨著溫度、電壓變化而偏移,可能會影響時鐘源精度;外部時鐘源采用陶瓷、晶體振蕩器電路時,建議使能起振延時;使用 RC 振蕩電路時,需考慮電容、電阻匹配;采用外部有源晶振或時鐘輸入時,需考慮輸入高/低電平電壓。具體可參照芯片的數(shù)據(jù)手冊說明。
關(guān)于芯片的初始化
MCU 芯片具有各種內(nèi)部和外部復(fù)位。對于不同的應(yīng)用系統(tǒng),有必要對芯片寄存器、內(nèi)存、功能模塊等進(jìn)行初始化,尤其是 I/O 管腳復(fù)用功能進(jìn)行初始化,避免由于芯片上電以后,I/O 管腳狀態(tài)的不確定情況發(fā)生。
關(guān)于芯片的管腳
MCU 芯片具有寬范圍的輸入管腳電平,建議用戶輸入高電平應(yīng)在 VIHMIN 之上,低電平應(yīng)在 VILMAX 之下。避免輸入電壓介于 VIHMIN 和 VILMAX 之間,以免波動噪聲進(jìn)入芯片。對于未使用的輸入/輸出管腳,建議設(shè)置為輸入狀態(tài),并通過電阻接至電源或地,或設(shè)置為輸出狀態(tài),輸出固定電平。對未使用的管腳處理因應(yīng)用系統(tǒng)而異,具體遵循應(yīng)用系統(tǒng)的相關(guān)規(guī)定和說明。
關(guān)于芯片的 ESD 防護(hù)措施
東軟載波MCU芯片具有滿足工業(yè)級ESD標(biāo)準(zhǔn)保護(hù)電路。建議用戶根據(jù)芯片存儲/應(yīng)用的環(huán)境采取適當(dāng)靜電防護(hù)措施。應(yīng)注意應(yīng)用環(huán)境的濕度;建議避免使用容易產(chǎn)生靜電的絕緣體;存放和運(yùn)輸應(yīng)在抗靜電容器、抗靜電屏蔽袋或?qū)щ姴牧先萜髦校话üぷ髋_在內(nèi)的所有測試和測量工具必須保證接地;操作者應(yīng)該佩戴靜電消除手腕環(huán)手套,不能用手直接接觸芯片等。
關(guān)于芯片的 EFT 防護(hù)措施
MCU 芯片具有滿足工業(yè)級 EFT 標(biāo)準(zhǔn)的保護(hù)電路。當(dāng) MCU 芯片應(yīng)用在 PCB 系統(tǒng)時,需要遵守 PCB 相關(guān)設(shè)計(jì)要求,包括電源、地走線(包括數(shù)字/模擬電源分離,單/多點(diǎn)接地等等)、復(fù)位管腳保護(hù)電路、電源和地之間的去耦電容、高低頻電路單獨(dú)分別處理以及單/多層板選擇等。
關(guān)于芯片的開發(fā)環(huán)境
MCU 芯片具有完整的軟/硬件開發(fā)環(huán)境,并受知識產(chǎn)權(quán)保護(hù)。選擇上海東軟載波微電子有限公司或其指定的第三方公司的匯編器、編譯器、編程器、硬件仿真器開發(fā)環(huán)境,必須遵循與芯片相關(guān)的規(guī)定和說明。
(編譯器版本:iDesigner V4.12.145 HRCC V1.2.0.89(優(yōu)化等級O0))
1.刪除HR7P153 timer例程多余的else語句。
2.例程初始化添加清RAM函數(shù)。
全部資料51hei下載地址:
規(guī)格書:
HR7P153.pdf
(1.22 MB, 下載次數(shù): 44)
2018-8-27 17:21 上傳
點(diǎn)擊文件名下載附件
程序源碼:
HR7P153 V1.5.zip
(41.42 KB, 下載次數(shù): 62)
2018-8-27 17:21 上傳
點(diǎn)擊文件名下載附件
|
評分
-
查看全部評分
|