久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10897|回復: 3
收起左側(cè)

東軟(海爾MCU)HR7P153數(shù)據(jù)手冊和運用筆記及源碼資料下載

[復制鏈接]
ID:349617 發(fā)表于 2018-8-27 17:23 | 顯示全部樓層 |閱讀模式
HR7P153單片機pdf格式數(shù)據(jù)手冊資料和運用筆記分享給大家

HR7P153引腳圖:
0.png 0.png 0.png

注 1: MRSTN 表示低電平復位有效;
注 2: 如果產(chǎn)品封裝引腳數(shù)小于最大引腳數(shù),則未引出的和未使用的 I/O 管腳都需設置為輸出低電平。否則芯片功
耗可能會出現(xiàn)異常, 芯片工作穩(wěn)定性也容易因外界干擾而降低。
注 4:用戶系統(tǒng)必須保證 VPP 管腳電壓低于芯片電源電壓 VDD,否則芯片可能進入異常工作模式。如果該管腳上
電壓存在過沖,則用戶系統(tǒng)必須限制該脈沖的電壓不高于 VDD+0.5V,脈沖寬度不超過 100us。

0.png

2. 1 CPU內(nèi)核概述
內(nèi)核特性
- 高性能哈佛型 RISC CPU 內(nèi)核
- 79 條精簡指令
- 系統(tǒng)時鐘工作頻率最高為 20MHz
- 機器周期為 2 個系統(tǒng)時鐘周期
- 支持中斷處理,共 12 個中斷源
2. 2 系統(tǒng)時鐘和機器周期
系統(tǒng)時鐘頻率(Fosc)最高支持 20MHz。兩個系統(tǒng)時鐘周期通過片內(nèi)時鐘生成器產(chǎn)生兩個不重疊的正交時鐘 phase1(p1),phase2(p2)。兩個不重疊的正交時鐘周期組成一個機器周期。若系統(tǒng)時鐘頻率為 4MHz,一個機器周期的時
間為 500ns。
2. 3 指令集概述
采用 HR7P 系列 79 條精簡指令集系統(tǒng)。
除部分條件跳轉(zhuǎn)與控制程序流程的指令為雙(機器)周期指令外,其他指令均為單(機器)周期指令。具體指令集請參考《附錄 1 指令集》。

2. 4 特殊功能寄存器
CPU 相關寄存器包括 11-bit 程序計數(shù)器 PCRL/PCRH,程序狀態(tài)字寄存器 PSW 和累加器 A 寄存器 AREG。其中程序狀態(tài)寄存器 PSW 用于存放各個狀態(tài)標志位,包括程序出棧/壓棧溢出、負數(shù)標志位、溢出標志位、零標志位、半進位/半借位標志位,以及全進位或全借位標志位等。

0.png

注 1:僅部分指令可對 PSW 寄存器進行寫操作,包括 JDEC、JINC、SWAP、BCC、BSS、BTT、MOVA 和 SETR。其它指令對 PSW 寄存器的寫操作,只根據(jù)運行結果影響相應狀態(tài)標志位。
注 2:OF 和 UF 位為只讀標志位,僅上電復位、復位指令和 MRSTN 復位會將其清零,其他復位不影響該兩位標志位。

3. 1 概述
本芯片采用哈佛總線架構,程序?qū)ぶ房臻g和數(shù)據(jù)尋址空間相互獨立。
片內(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ū)。每個訪問地址對應 16 位寬(2 個字節(jié))的存儲單元。通過 11 位程序計數(shù)器 PC 進行程序?qū)ぶ吩L問。復位向量位于 000H,中斷向量入口地址位于 004H,支持 8 級硬件堆棧。

0.png

3. 2. 3 程序計數(shù)器(PC)
程序計數(shù)器中存放的是要執(zhí)行的下一條指令的地址。PC 在每個指令周期后都會自動加 1,除非 PC 的值被指令或中斷異常改寫。11 位程序計數(shù)器 PC<10:0>,無實際物理地址,不可讀寫,可尋址 2K 程序存儲空間 000H ~ 7FFH,超出地址范圍會導致 PC 循環(huán)(又從 000H 開始訪問)。

PC<7:0>可通過 PCRL 寄存器的讀/寫操作進行讀/寫,而 PC<10:8>通過 PCRH 寄存器來間接(如 RCALL、CALL、GOTO 等指令)賦值。
芯片復位時,PCRL、PCRH 和 PC 都會被清零。PC 硬件堆棧操作不會影響 PCRH 的值。

注:各種指令對 PC 的影響:
1. 通過指令直接修改 PC 值時,對 PCRL 為目標寄存器的操作可直接修改 PC<7:0>,即 PC<7:0>=PCRL<7:0>;
而操作 PC<7:0>的同時也會執(zhí)行 PC<10:8>=PCRH<2:0>,因此,修改 PC 時,應先修改 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。

應用實例:以 PCRL 為目標寄存器的指令應用程序
……
MOVI pageaddr
MOVA PCRH ;設置表格頁面地址
MOVI tableaddr ;設置偏移量給 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 指令或中斷被響應后,PC 自動壓棧保護;當執(zhí)行 RET、RETIA 或 RETIE 指令時,堆棧會將最近一次壓棧的值返回至 PC。
程序堆棧只支持 8 級緩沖操作,即程序堆棧只保存最近的 8 次壓棧值,對于連續(xù)超過 8 次的壓棧操作,第 9 次的壓棧數(shù)據(jù)使得第 1 次的壓棧數(shù)據(jù)丟失。同樣,超過 8 次的連續(xù)出棧,第 9 次出棧操作,可能使得程序流程不可控。芯片復位后,堆棧指針將重新指向堆棧頂部。

0.png

3. 3 IAP訪問OTP操作
3. 3. 1 OTP存儲器
OTP 存儲器是一次可編程存儲器,在 VPP 復用端口施加高壓 8.45V 時,可通過 IAP 對未
編程過的 OTP 地址單元進行軟件控制編程。IAP 寫入操作以字(Word)為單位,通過 FRA
(FRAH,F(xiàn)RAL)尋址。當 OTP 存儲器進行 IAP 寫入操作時 CPU 內(nèi)核暫停執(zhí)行,外設
可按預設狀態(tài)繼續(xù)運行,外設的中斷請求將置位相應的中斷標志。當 IAP 寫入操作完成時,
CPU 內(nèi)核恢復執(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。建議每個地址編程完成,查表讀出驗證是否成功,如果不成功需返回編程操作,直到讀出驗證成功后再編程后續(xù)地址空間。單地址編程,編程時間至少為 2ms。

應用例程 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
......
應用例程 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ù)和控制信息,可以在程序控制下進行讀寫操作。本芯片通用數(shù)據(jù)存儲器空間為 64 Bytes,地址范圍為 0000H~003FH。通用數(shù)據(jù)存儲器的內(nèi)容在上電復位后是不確定的,未下電的其他復位后,將保存復位前的內(nèi)容。
3. 4. 4 特殊功能寄存器
特殊功能寄存器用于芯片對外設操作的控制設定。本芯片支持 128 個特殊寄存器,地址范圍 FF80H~FFFFH。大多數(shù)寄存器都是可以讀寫的,僅有少數(shù)部分寄存器不對外開放。相關功能所使用的寄存器將分別在各個章節(jié)中描述。

3. 4. 5 尋址方式
SRAM 數(shù)據(jù)存儲器的尋址方式支持直接尋址和間接尋址。
3. 4. 5. 1 直接尋址
在直接尋址時,指令中的 8 位地址信息用于 GPR 和 SFR 尋址。當指令中的 8 位地址信息R<7:0>小于 80H時,直接尋址 GPR 映射區(qū)。當 R<7:0>大于或等于 80H時,直接尋址 SFR映射區(qū)。

0.png

3. 4. 5. 2 間接尋址
間接尋址是通過 16 位間接地址寄存器 IAA(由 2 個 8 位寄存器 IAAH 和 IAAL 組成)和 8位虛擬數(shù)據(jù)寄存器 IAD 間接訪問數(shù)據(jù)尋址空間中的存儲單元,尋址空間為 0000H~ FFFFH。先將訪問目的地址存放于間接地址寄存器 IAA,再通過指令對 IAD 進行讀/寫操作,實際的讀/寫操作對象則是 IAA 指向的數(shù)據(jù)尋址空間中的目的地址單元。
由于 IAD 寄存器本身也映射到數(shù)據(jù)尋址空間的 FF80H 地址,因此,當 IAA 存放的地址值為 FF80H 時,讀/寫 IAD 相當于用間接尋址方式訪問虛擬寄存器 IAD 本身,此時讀操作將始終讀出為 00H,寫操作則是一個空操作(可能影響狀態(tài)位)。
ISTEP 指令,用來對 16 位間接尋址寄存器 IAAH/IAAL 進行偏移操作。執(zhí)行該指令時,先將指令字中的 8 位有符號立即數(shù)進行符號位擴展為 16 位數(shù),再將 IAA 的值加上這個數(shù)的結果存回 IAA 寄存器。ISTEP 可實現(xiàn)的偏移范圍為-128~127。雖然只有 8 位立即數(shù),但是該條指令對整個IAA(IAAL和IAAH)進行16位計算。計算的結果依然存放于IAAL和IAAH中。
0.png

應用例程:采用間接尋址將(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:當端口設置為輸出、外部振蕩器時鐘端口時,內(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ù)字類型選擇功能
當數(shù)字信號和模擬信號共用管腳時,在使用對應端口的數(shù)字信號或模擬信號功能前,須正確設置端口的類型,否則可能不會達到預期的結果。本芯片中 PA0~PA2, PA7, PB0~PB1 端口均具有獨立的模擬/數(shù)字信號選擇功能,由 ANS 寄存器控制選擇。當端口被配置為模擬端口時,讀相應 Px 寄存器始終讀到“0”。
4. 3. 5 I/O端口復用功能
為了使資源合理利用最優(yōu)化,本芯片大部分的 I/O 端口都具有復用功能。當端口用于復用功能時,管腳電平由復用功能決定。
4. 4 端口中斷
4. 4. 1 按鍵中斷(KINT)
本芯片外部端口支持 1 組外部按鍵中斷。按鍵中斷支持最多 8 個按鍵輸入端 KIN<7:0>, 8 個按鍵共用一個按鍵中斷使能位 KIE(INTE0<0>)及按鍵中斷標志位 KIF(INTF0<0>),每個輸入端可以由相應的按鍵屏蔽位 KMSKx(INTC0<7:0>)屏蔽,任何其中一個按鍵中斷產(chǎn)生將影響中斷標志 KIF。
當 KINn 復用端口被配置為數(shù)字輸入端口,且 1 組中任何一個端口輸入信號發(fā)生電平變化時,將產(chǎn)生按鍵中斷 KINT。使用外部按鍵中斷時,須配置相應的控制寄存器,并且使能外部按鍵中斷端口的內(nèi)部弱上拉電阻。外部按鍵電平比較,是比較按鍵輸入端口電平與鎖存器上的最后輸入值。清除按鍵中斷標志位前,必須對相應復用端口進行一次讀/寫操作,否則按鍵中斷標志位無法被清除。在按鍵中斷使能(KMSKn=1,KIE=1)前,先對端口寄存器進行讀或者寫的操作,清除中斷標志位,以免誤產(chǎn)生中斷。此中斷能將芯片從睡眠狀態(tài)喚醒。
0.png

4. 4. 2 外部端口中斷(PINT)
本芯片外部端口支持 4 個外部端口中斷,外部中斷源由外部中斷選擇位 PINT3S~PINT0S(PINTS<7:0>)選擇。外部端口中斷由相應的 PIE3~PIE0(INTE1<3:0>)使能,通過PEG3~PEG0(INTC1<3:0>)選擇上升沿觸發(fā)還是下降沿觸發(fā)。當 PINTn 復用端口被配置為數(shù)字輸入端口,且輸入信號變化滿足觸發(fā)條件時,將產(chǎn)生 PINTn 外部端口中斷,中斷產(chǎn)生將影響相應的中斷標志 PIFn(INTF1<3:0>)。此中斷能將芯片從睡眠狀態(tài)喚醒。

4. 5 I/O端口操作注意事項
當執(zhí)行以端口寄存器為目標的操作(除位操作指令)時,芯片實際執(zhí)行讀-修改-寫過程,即先讀取該組全部 I/O 端口的電平,修改后再寫回端口寄存器。位操作指令對 I/O 的修改操作只影響選定的位,不會影響同組其它 I/O 端口。因此建議用戶對單個 I/O 的修改采用位操作指令。此外用戶在對 I/O 端口的復用功能使能和關閉時,應充分考慮當前 I/O 端口的輸出寄存器值,并判斷是否需要重新對這些 I/O 端口進行初始化賦值。
4. 6 特殊功能寄存器
輸入/輸出端口的設置包括一系列的寄存器控制,PX 寄存器用于顯示 PX 端口的電平狀態(tài),PXT 寄存器用于設置 PX 端口的輸入輸出狀態(tài),N_PXU / N_PXD 用于設置 PX 端口的弱上拉 / 弱下拉電阻的連接狀況。ANS 用于設置 PX 端口的數(shù)據(jù)類型。


第 5 章 特殊功能及操作特性
5. 1 系統(tǒng)時鐘與振蕩器
5. 1. 1 概述
芯片運行所需要的時鐘源由振蕩器提供,不同的振蕩器選擇可以讓使用者在不同的應用需求中實現(xiàn)更大范圍的功能。本款芯片所提供的振蕩器有三種:外部晶體/陶瓷振蕩器XTAL、內(nèi)部高速RC振蕩器(16MHz)和內(nèi)部低速RC振蕩器(32KHz)。靈活選擇振蕩器,使得產(chǎn)品在速度和功耗方面可以達到最優(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 位校準寄存器(OSCCAL)
- 出廠前,在常溫下已經(jīng)校準到精度為±2%
- 支持多種分頻時鐘
內(nèi)部 32KHz RC 振蕩器
- 8 位校準寄存器(WDTCAL)
系統(tǒng)時鐘切換
- HS/XT/INTOSCH 16MHz 振蕩時鐘與內(nèi)部低速 INTOSCL 32KHz 時鐘切換
- 外部低速 LP 振蕩時鐘與內(nèi)部高速 INTOSCH 16MHz 時鐘切換
振蕩和暫停
- 在 IDLE0 模式下,振蕩器暫停振蕩
- 在 IDLE1 模式下,振蕩器保持振蕩,系統(tǒng)時鐘暫停
0.png

5. 1. 2. 1 外部時鐘
外部時鐘包括晶體/陶瓷振蕩器模式(HS/XT/LP)。對于晶體/陶瓷振蕩器而言,只要簡單地將晶體連接至 OSC1 和 OSC2 管腳間,就會產(chǎn)生振蕩所需的相移及反饋。為保證振蕩頻率更精準,需連接兩個小容量電容 C1 和 C2 到 VSS,具體數(shù)值與所使用的晶體/陶瓷振蕩器有關,電容參考取值范圍為 15~33pF。根據(jù)所選擇的振蕩器頻率,可分為三種模式:HS 模式、XT 模式和 LP 模式。當芯片配置字 OSCS<2:0> = 000 時,選擇 LP 模式;當OSCS<2:0> = 010 時,選擇 HS 模式;當芯片配置字 OSCS<2:0> = 100 時,選擇 XT 模式。芯片配置字 OSCS<2:0>客戶通過編程界面選擇。

晶體/陶瓷振蕩器模式(HS、XT、LP 模式)
HS/XT 晶振起振穩(wěn)定時間為 512 個系統(tǒng)時鐘。LP 晶振設計為低功耗振蕩,起振穩(wěn)定時間約一秒左右。

5. 1. 2. 2 內(nèi)部高速 16MHz RC振蕩器模式(INTOSCH)
芯片內(nèi)置 16MHz RC 時鐘振蕩器,不需要外接其它 外部器件。當 配置字中的OSCS<2:0>=000/110/111且寄存器OSCC中的CLKSS=1時,選擇內(nèi)部16MHz RC作為系統(tǒng)時鐘源,此時PA2和PA3管腳復用為通用I/O端口。INTOSCH 16MHz最低可分頻至32KHz,出廠前,內(nèi)置16MHz RC時鐘振蕩器已在常溫下校準。芯片上電時,會自動加載校準值,客戶不需要對校準寄存器OSCCAL進行任何操作。

5. 1. 2. 3 內(nèi)部低速 32kHz RC振蕩器模式(INTOSCL)
芯片內(nèi)置32KHz RC時鐘振蕩器,不需要外接其它外部器件,可用作WDT計數(shù)時鐘源,也可配置為主系統(tǒng)時鐘源。當配置字中的OSCS<2:0>=010/100/110/111且寄存器OSCC中的CLKSS=0時,選擇內(nèi)部32KHz RC作為系統(tǒng)時鐘源,此時PA和PA3管腳復用為通用I/O端口。芯片上電時,會自動加載校準值,客戶不需要對校準寄存器WDTCAL進行任何操作。5. 1. 3 系統(tǒng)時鐘切換
高頻時鐘能提供系統(tǒng)更高的性能,低頻時鐘能夠提供更低的功耗。因此,根據(jù)用戶需要,靈活地安排高低頻時鐘切換,可以使系統(tǒng)在執(zhí)行速度和功耗方面最優(yōu)化。系統(tǒng)可軟件設置寄存器位 CLKSS(OSCC<7>),選擇高、低速系統(tǒng)時鐘。系統(tǒng)上電時,寄存器 CLKSS 的值默認為 0,工作在低速系統(tǒng)時鐘模式下。
系統(tǒng)支持四種時鐘切換:
內(nèi)部低速 INTOSCL 32KHz 時鐘切換到內(nèi)部高速 INTOSCH/外部高速 HS/XT 時鐘
- 設置芯片配置字 CFG_WD 中的 OSCS<2:0>=010/100/110/111;
- 設置 OSCC 寄存器中的 CLKSS=1;
- 檢測 OSCC 寄存器中的 HSOSCF 位,直到檢測到 HSOSCF=1;
- 等待一條 NOP 指令;
- 檢測 PWEN 寄存器的 SW_HS 位,直到檢測到 SW_HS=1;
內(nèi)部高速 INTOSCH/外部高速 HS/XT 時鐘切換到內(nèi)部低速 INTOSCL 時鐘
- 設置芯片配置字 CFG_WD 中的 OSCS<2:0>=010/100/110/111;
- 設置 OSCC 寄存器中的 CLKSS=0;
- 檢測 OSCC 寄存器中的 WDTOSCF 位,直到檢測到 WDTOSCF =1;
- 等待一條 NOP 指令;
- 檢測 PWEN 寄存器的 SW_WDT 位,直到檢測到 SW_WDT =1;
外部低速 LP 時鐘切換到 INTOSCH 時鐘鐘
- 設置芯片配置字 CFG_WD 中的 OSCS<2:0>=000;
- 設置 OSCC 寄存器中的 CLKSS=1;
- 檢測 OSCC 寄存器中的 HSOSCF 位,直到檢測到 HSOSCF=1;
- 等待一條 NOP 指令;
- 檢測 PWEN 寄存器的 SW_HS 位,直到檢測到 SW_HS=1;

內(nèi)部高速 INTOSCH 時鐘切換到外部低速 LP 時鐘
- 設置芯片配置字 CFG_WD 中的 OSCS<2:0>=000;
- 設置 OSCC 寄存器中的 CLKSS=0;
- 檢測 OSCC 寄存器中的 LPOSCF 位,直到檢測到 LPOSCF =1;
- 等待一條 NOP 指令;
- 檢測 PWEN 寄存器的 SW_LP 位,直到檢測到 SW_LP =1;

5. 2 看門狗定時器
5. 2. 1 概述
看門狗定時器是芯片的一個組成部分,它的功能在于在發(fā)生軟件故障時,通過器件復位將
芯片復位。若系統(tǒng)進入了錯誤的工作狀態(tài),看門狗可以在合理的時間范圍內(nèi)使芯片復位。
使能看門狗時,若用戶程序清除看門狗定時器失敗,則在預定的時間范圍內(nèi),看門狗會使
系統(tǒng)復位。
WDT 定時器
- 8 位 WDT 定時計數(shù)器(無實際物理地址,不可讀寫)
- 8 位預分頻器(無實際物理地址,不可讀寫)
- WDT 控制寄存器(WDTC)
- WDT 計數(shù)周期匹配寄存器(WDTP)
- 喚醒功能
- 復位功能
內(nèi)部 WDT RC 振蕩器
- 定時器時鐘源為內(nèi)部 32KHz RC 時鐘或外部 LP 振蕩時鐘
- 8 位 WDT 時鐘校準寄存器(WDTCAL)
- 出廠前,在常溫下已經(jīng)將頻率校準在±15%以內(nèi),其高低溫頻偏對 WDT 計數(shù)
溢出周期的影響,見《電氣特性》章節(jié)的描述

5. 2. 3 WDT定時器
芯片提供8位WDT定時計數(shù)器,通過芯片配置字WDTEN可使能硬件看門狗WDT。當芯片配置字WDTEN使能時,WDT定時器計數(shù)使能;當WDTEN關閉時,WDT定時器計數(shù)禁止。客戶通過編程界面選擇。
當配置字 OSCS<2:0>位配置為 LP 模式時,WDT 的計數(shù)時鐘源有兩種選擇:內(nèi)部 32KHzRC 時鐘和外部 LP 振蕩時鐘。如果 WDTCKS=0 時,WDT 的計數(shù)時鐘為 WDT RC 時鐘;當 WDTCKS=1 時,WDT 的計數(shù)時鐘為 LP 振蕩時鐘。WDT 支持一個預分頻器,可通過 WDTC 寄存器中的 WDTPRS<3:0>位設置 WDT 時鐘源的預分頻比,再將分頻后的時鐘信號作為 WDT 定時器的計數(shù)時鐘。當 WDTPRE
(WDTC<4>)清零,禁止預分頻器,WDT 時鐘為 32KHz;當 WDTPRE(WDTC<4>)置 1,使能預分頻器。
WDT 支持一組可讀/寫的定時周期寄存器 WDTP,當看門狗計數(shù)到定時周期時,超時溢出。在 IDLE 模式下,WDT 計數(shù)溢出會喚醒 CPU;此外,WDT 計數(shù)溢出會復位芯片。為了避免不必要的復位,可使用 CWDT 指令適時清零 WDT 計數(shù)器。
在預分頻器分頻比為 1:2,且周期寄存器 WDTP 設置為 FFH 時,WDT 使用內(nèi)部 WDT 時鐘進行計數(shù),常溫下時鐘頻率約為 32KHz,計數(shù)溢出時間約為 16ms。當禁止預分頻器時,WDT 的計數(shù)溢出時間約為 8ms。 其它工作條件下,WDT 的計數(shù)溢出時間,可參考《附錄 參數(shù)特性圖》章節(jié)的相關圖示。
值得注意的是,當 WDT 內(nèi)部 RC 時鐘使能位 RCEN=0 時,只在 IDLE 模式下看門狗禁止,其它工作模式下 WDT 的 RC 時鐘一直打開,不受 RCEN 的影響。

5. 3. 4 外部MRSTN管腳復位
芯片提供外部 MRSTN 管腳,當 CFG_WD<5>(MRSTEN)為 1 時,用于系統(tǒng)復位。當復位管腳輸入低電平信號時,系統(tǒng)復位。當復位管腳處于高電平時,系統(tǒng)正常運行。需要注意的是,在系統(tǒng)上電完成后,外部復位管腳必須輸入高電平,否則系統(tǒng)將一直保持在復位狀態(tài)。另外,需要特別注意的是,禁止將 MRSTN 管腳直接連接到 VDD 上;禁止 MRSTN 管腳上的電壓高于 VDD 電壓。

外部 MRSTN 管腳復位電路有多種,以下介紹兩種比較典型的連接電路。
1. RC 復位
RC 復位電路是外部 MRSTNN 腳復位電路最簡單的一種,對外界環(huán)境條件要求不高的情況下,可以采用此種連接方式。
0.png

5. 4. 1 MCU低功耗模式
本芯片支持兩種低功耗休眠模式:IDLE0 模式或 IDLE1 模式,通過設置 PWRC 寄存器位
LPM(PWRC<7>)進行選擇。
支持 IDLE0 模式
- 當 LPM = 0 時,執(zhí)行 IDLE 指令,芯片進入 IDLE0 模式:
- 時鐘源停振(32KHz RC 時鐘源除外),主系統(tǒng)時鐘暫停
- 程序暫停、同步模塊暫停、異步模塊運行,器件功耗降低
- 支持低功耗喚醒,喚醒時間可配,同時需要考慮 LDO 穩(wěn)定時間
- 所有 I/O 端口將保持進入 IDLE0 模式前的狀態(tài)
- 若使能 WDT,則 WDT 將被清零并保持運行
- N_PD 位被清零,N_TO 位被置 1
支持 IDLE1 模式
- 當 LPM = 1 時,執(zhí)行 IDLE 指令,芯片進入 IDLE1 模式:
- 時鐘源保持運行,主系統(tǒng)時鐘暫停
- 程序暫停、同步模塊暫停、異步模塊運行,器件功耗降低
- 支持低功耗喚醒,喚醒時間可配,最小 1 個機器周期
- 所有 I/O 端口將保持進入 IDLE1 前的狀態(tài)
- 若使能 WDT,則 WDT 將被清零并保持運行
- N_PD 位被清零,N_TO 位被置 1
5. 4. 2 低功耗模式配置
兩種低功耗模式 IDLE0 和 IDLE1 模式的選擇由 PWRC 寄存器中的 LPM 位控制。當 LPM
= 0 時,執(zhí)行 IDLE 指令,芯片進入 IDLE0 模式;當 LPM = 1 時,執(zhí)行 IDLE 指令,芯片
進入 IDLE1 模式。

為了降低功耗,所有 I/O 管腳都應保持為 VDD 或 VSS。為了避免輸入管腳懸空而引入開
關電流,應在外部將高阻輸入的 I/O 管腳拉為高電平或低電平,MRSTN 管腳必須處于邏
輯高電平。

5. 4. 3 IDLE喚醒方式配置
當系統(tǒng)進入低功耗模式后,程序處于暫停狀態(tài),以下幾種方式可將系統(tǒng)喚醒。
0.png

注 1:低功耗喚醒與全局中斷使能無關,只需相應中斷源使能位置位為“1”即可。在低功耗模式時,若外設產(chǎn)生中斷
信號,即使全局中斷使能 GIE 為 0,低功耗模式依然會被喚醒,只是喚醒后不會執(zhí)行中斷程序。
注 2:關于外部按鍵中斷使用,當開啟中斷使能和中斷屏蔽位使能前,先對端口寄存器進行讀或者寫的操作,然后
清除中斷標志位,以免誤產(chǎn)生中斷。

當喚醒事件發(fā)生后,芯片根據(jù)配置字 OSCS<2:0>的配置執(zhí)行下述操作:
當 OSCS<2:0>配置為 HS/XT/INTOSCO/INTOSC 模式時:
- 在 IDLE0 模式(LPM=0)下,芯片需要先等待 VRwkdly 時間(由 VRST(PWRC<6:5>)設定),此時間稱為 LDO 穩(wěn)定時間,之后芯片主時鐘運行一段Twkdly 時間后才執(zhí)行 IDLE 下一條指令,Twkdly 稱為喚醒延時,喚醒延時可通過 WKDC 寄存器設置;
- 在 IDLE1 模式(LPM=1)下,芯片僅等待 Twkdly 時間后就執(zhí)行 IDLE 下一條指令,無 VRwkdly 時間。
當 OSCS<2:0>配置為 LP 模式時:
- 在 IDLE0 模式(LPM=0)下,芯片需要先等待 VRwkdly 時間(由 VRST(PWRC<6:5>)設定),此時間稱為 LDO 穩(wěn)定時間,接著芯片等待 LPwkdly 時間,之后芯片主時鐘運行一段 Twkdly 時間后才執(zhí)行 IDLE 下一條指令,Twkdly稱為喚醒延時,喚醒延時可通過 WKDC 寄存器設置;
- 在 IDLE1 模式(LPM=1)下,芯片僅等待 Twkdly 時間后就執(zhí)行 IDLE 下一條指令,無 VRwkdly 和 LPwkdly 時間。

第 6 章 外設
6. 1 8 位PWM時基定時器(T8P1/T8P2)
6. 1. 1 概述
本芯片包含 2 組 PWM 時基定時器(T8P1/T8P2),支持兩種工作模式,定時器模式和 PWM
模式。定時器模式根據(jù)寄存器制定的定時時間進行定時,可以使定時器有選擇地產(chǎn)生中斷請
求或完成其它操作。PWM 模式用于 PWM 輸出。
T8Pn 支持兩種工作模式(時鐘源為系統(tǒng)時鐘 2 分頻(Fosc/2))
- 定時器模式
- PWM 模式,支持最高 11 位 PWM 平均輸出精度,支持 PWM 帶死區(qū)互補輸出,
且死區(qū)時間軟件可配置
T8Pn 支持以下功能組件
- 4 位的預分頻器和 8 位后分頻器(無實際物理地址,軟件不可讀寫)
- 8 位計數(shù)器(T8Pn)
- 8 位精度寄存器(T8PnR)
- 8 位周期寄存器(T8PnP)
- 8 位周期緩沖器(PRDBUF,無實際物理地址,軟件不可讀寫)
- 8 位精度緩沖器(RESBUF,無實際物理地址,軟件不可讀寫)
- 8 位 T8Pn PWM 死區(qū)控制寄存器(T8PnPDT)
- 控制寄存器(T8PnC)
- T8PnPEX 后分頻比擴展寄存器(T8P1PEX/T8P2PEX)
- T8Pn 周期匹配控制寄存器(T8P1PMC/T8P2PMC)
- T8Pn 輸出控制寄存器(T8P1OC)
- 8 位 T8Pn PWM 死區(qū)控制寄存器(T8PnPDT)
中斷和暫停
- 支持匹配中斷標志(T8PnTIF)和周期中斷(T8PnPIF)
- 支持中斷處理
- 在 IDLE 模式下,T8Pn 暫停工作

6. 1. 4 預分頻器和后分頻器
預分頻器和后分頻器可以提供一個更長的溢出和中斷周期。T8Pn 模塊計數(shù)器支持可配置的4 位預分頻器和可配置的 8 位后分頻器。預分頻器與后分頻器的計數(shù)值都無法讀寫,修改T8Pn 的控制寄存器或計數(shù)器都會把預分頻器和后分頻器清零,但不改變分頻比設置。預分頻器的分頻比可通過 T8PnC 寄存器中的 T8PnPRS<1:0>位進行設置,預分頻比范圍為1:1~1:16。后分頻器的分頻比可通過 T8PnC 寄存器中的 T8PnPOS<3:0>位和后分頻比擴展寄存器 T8PnPEX 中的 T8PnPOSEX<3:0>進行設置,后分頻比范圍為 1:1~1:256。

6. 1. 5 工作模式
T8P1/T8P2 有兩種工作模式,定時器模式和 PWM 模式,通過 T8PnM 寄存器進行模式選
擇。兩種模式均支持預分頻器和后分頻器。兩種模式下,T8Pn 計數(shù)器的時鐘源均為系統(tǒng)時
鐘 2 分頻(Fosc/2)。

6. 1. 6 定時器模式
當 T8PnM=0 且 T8PnE=1 時,T8Pn 工作在定時器模式。
在定時器模式下,T8Pn 計數(shù)器的時鐘源為系統(tǒng)時鐘 2 分頻(Fosc/2),可選擇預分頻器對計數(shù)時鐘進行分頻,計數(shù)器的計數(shù)時鐘為分頻后的時鐘。

在定時器模式下,當 T8PnPMS=0 時,不更新周期緩沖器 PRDBUF,T8Pn 的計數(shù)值與周期寄存器 T8PnP 進行比較匹配;當 T8PnPMS=1 時,更新周期寄存器 T8PnP 的值至周期緩沖器 PRDBUF,T8Pn 的計數(shù)值與周期緩沖器 PRDBUF 進行比較匹配。當 T8Pn 的計數(shù)值與周期寄存器 T8PnP(當 T8PnPMS=0)或與周期緩沖器 PRDBUF(當T8PnPMS=1)匹配相等時,將周期中斷標志 T8PnPIF 置 1,該中斷標志需要軟件清零。同時 T8Pn 被自動清零并重新開始計數(shù),同時后分頻器加 1 計數(shù)。當后分頻器的計數(shù)值與后分頻器分頻比相同時,復位后分頻器,并將定時中斷標志 T8PnTIF 置 1,該中斷標志需要軟件清零。
在定時器模式下,周期緩沖器 PRDBUF 的更新:
在定時器模式起始周期,為了能將周期寄存器 T8PnP 的值更新至周期緩沖器 PRDBUF,需
滿足以下順序:先設置 T8PnM=0 且 T8PnPMS=1,再使能 T8PnE=1。起始周期結束后,每次 T8Pn 的計數(shù)值與周期緩沖器 PRDBUF 匹配相等后,將自動更新周期緩沖器。

6. 1. 7 PWM輸出模式
當 T8PnM=1 且 T8PnE=1 時,T8Pn 工作在 PWM 模式。計數(shù)時鐘源為系統(tǒng)時鐘二分頻 Fosc/2,并支持預分頻器。后分頻器的設置不影響 PWM 輸出周期和占空比,只影響匹配中斷 T8PnTIF 中斷標志位的產(chǎn)生,詳見《T8Pn 后分頻器配置表》。
在 PWM 模式下,PWM 輸出由寄存器 T8PnTRN 位控制。
當 T8PnTRN=1 時,PWM 輸出始終為 0,且不會更新 T8PnP 和 T8PnR 寄存器的值至周期緩沖器 PRDBUF 和精度緩沖寄存器 RESBUF。
當 T8PnTRN=0 時,PWM 輸出波形才能啟動,且 PWM 輸出起始為 1,同時分別將 T8PnP和 T8PnR 寄存器的內(nèi)容更新至周期緩沖器 PRDBUF 和精度緩沖寄存器 RESBUF(緩沖器軟件不可讀寫),隨后 T8Pn 從零開始遞增計數(shù),當 T8Pn 與 RESBUF 的值相等時,PWM輸出改變?yōu)?0,并繼續(xù)遞增計數(shù)。當 T8Pn 的計數(shù)值與 PRDBUF 相等時, PWM 輸出恢復為 1,同時 PRDBUF 和 RESBUF 再次分別載入 T8PnP 和 T8PnR 寄存器的值,并產(chǎn)生周期中斷 T8PnPIF 中斷標志,該中斷標志需要軟件清零。同時 T8Pn 被自動清零并重新開始計數(shù),后分頻器加 1 計數(shù)。至此一個完整的 PWM 周期完成,隨后繼續(xù)循環(huán)新的 PWM 周期。當后分頻器的計數(shù)值與后分頻器分頻比相同時,復位后分頻器,并將定時中斷標志T8PnTIF 置 1,該中斷標志需要軟件清零。
在 PWM 模式下,精度緩沖器 RESBUF 和周期緩沖器 PRDBUF 的更新:
在 PWM 模式起始周期,為了能將 T8PnP 和 T8PnR 寄存器的值至周期緩沖器 PRDBUF 和
精度緩沖寄存器 RESBUF,需滿足以下順序:先設置 T8PnM=1,T8PnPMS=1 和 T8PnE=1,再設置 PWM 輸出使能 T8PnTRN=0。
起始周期結束后,每次 T8Pn 的計數(shù)值與周期緩沖器 PRDBUF 匹配相等后,將自動更新周期緩沖器和精度寄存器。

注 1:若精度緩沖器 RESBUF 的值為 0,則當前 PWM 周期內(nèi) PWM 輸出始終為 0;若精度緩沖寄存器 RESBUF 的值不小于 PRDBUF,則當前 PWM 周期內(nèi) PWM 輸出始終為 1。
注 2:在讀取 T8PnTRN 位的狀態(tài)時,讀出此位的值為寫入此位值的反邏輯,即,當此位寫入 0 時,讀出的值為 1;當此位寫入 1 時,讀出的值為 0。
注 3:若 T8PnTRN=1,則 PWM 輸出 0,且周期緩沖器不更新(要么保持初始值 0xFF,要么為 T8PnTRN=0 時,最后一次更新過的值)。

6. 1. 8 PWM平均精度擴展
PWM 的最大分辨率可達 9 位,進一步細化 PWM 輸出精度,可通過設置擴展精度位T8PxRE<1:0>(T8PxOC<5:4>)進行 PWM 平均精度擴展。此應用模式原理是采用對連續(xù)輸出波形脈寬進行間隔地加 1(加 1 個 LSB,即脈寬增加了 1 個 Tosc × [預分頻倍數(shù)](見PWM 計算公式)),實現(xiàn) PWM 波形占空比的平均值細化。
擴展精度位可設置 0,1/4,2/4,3/4 共 4 個精度擴展值,相當于將 PWM 平均精度擴展 2位。
例如,當擴展精度設置為 2/4,即 4 個 PWM 脈寬中有 2 個脈寬的寬度增加 1 個 LSB,且增加 1 個 LSB 的脈寬均勻分布在 4 個脈寬中,如下圖所示,假設脈寬寬度為 n,則 4 個開關周期(PWM 周期)的平均脈寬為 n+1/2,從而在不提高時鐘頻率的情況下,等效實現(xiàn)了較高分辨率的 PWM。

6. 1. 9 PWM 復用輸出端口
T8Pn 各支持一對互補的 PWM 輸出端口,PWMn0 和 PWMn1,支持可調(diào)死區(qū)時間配置,死區(qū)時間可由 T8PnPDT 寄存器設置。
PWM 死區(qū)延時時間計算公式:T8PnPDT<7:0> x Tosc。
通過設置 T8PnOC 寄存器中的 T8PnPEN<1:0>和 T8PnNEN<1:0>,選擇 T8Pn 的 PWMn0和 PWMn1 與 I/O 復用的輸出管腳。
PWMn0 的輸出極性可通過寄存器 ANS<7:6>(PWM20NS,PWM10NS)進行設置。
值得注意的是,在使能 PWM 輸出前,需先將與 PWM 復用的相應 I/O 端口的控制寄存器位PxT 設置為輸出狀態(tài),否則將無 PWM 波形輸出。

6. 2 模/數(shù)轉(zhuǎn)換器模塊(ADC)
6. 2. 1 概述
模擬數(shù)字轉(zhuǎn)換器用于將模擬信號轉(zhuǎn)化成一組二進制代碼組成的數(shù)字信號。模擬信號經(jīng)由多路
復用輸入腳輸入,通過一個采樣-保持電路連接至轉(zhuǎn)換器的輸入端。該芯片支持 12-bit 6+2
通道的 A/D 轉(zhuǎn)換器,經(jīng)過 A/D 轉(zhuǎn)換器轉(zhuǎn)換的 12-bit 二進制數(shù)據(jù)存入 ADC 數(shù)據(jù)寄存器
ADCRH、ADCRL 中。
模/數(shù)轉(zhuǎn)換器特性
- 12 位 ADC 采樣精度
- 6 個模擬輸入+2 個電源電壓檢測通道可選
- 12 位轉(zhuǎn)換結果,支持高位對齊放置或低位對齊放置
- 支持外部或內(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ù)需要對以下幾個方面進行正確的配置,才可得到需要的正確轉(zhuǎn)換結果。

時鐘選擇
ADC 電路所需要的時鐘有 7 組可選,F(xiàn)osc~Fosc/64,可通過 ADCCH 寄存器選擇所需要的時鐘。

參考電壓選擇
ADC 電路分別使用一個正參考電壓和一個負參考電壓,對應外部參考電壓輸入腳分別為VREFP 和 VREFN。由于該兩個外部輸入腳分別與 PB1/AIN4、PB0/AIN3 復用,在使用這兩個外部參考電壓輸入時,需先通過 ANS 寄存器正確設置復用端口的類型。正參考電壓可通過 ADVREFS <2:0>位選擇 VDD、4V、3V、2.1V 或者是 VREFP 復用端口,負參考電壓對應地選擇 VSS 或者是 VREFN 復用端口。在正端參考電壓選擇 2.1V 時,需先根據(jù) VDD 電壓通過 AD2VCALS 位(ADCTR<0>)正確設置 A/D 2.1V 參考電壓調(diào)校信息。采樣時間選擇
本芯片支持 ADC 電路的采樣時間可選,可通過 ADCCH 寄存器中的 ADST <3:0>位選擇大
約 1~15 個 Tadclk 共 15 種選項。

復用端口類型選擇
本芯片中 ADC 電路的所有模擬輸入通道 AINn、參考電壓外部輸入腳均和 PA/PB 端口復用,在使用 ADC 電路轉(zhuǎn)換前,須先將所使用的管腳通過 ANS 寄存器設置為模擬類型。

模擬信號輸入通道選擇
ADC 電路使能前,需先選擇 A/D 模擬通道。本芯片 ADC 電路支持 6 個外部通道和 2 個電源電壓檢測通道可選,外部通道分別為 AIN0~AIN5,兩個電源電壓檢測通道分別為 VDD/4和 VDD/8。A/D 模擬通道選擇哪個通道可通過 ADCCL 寄存器中的 ADCHS <2:0>位選擇。對齊方式選擇
本芯片 ADC 電路轉(zhuǎn)換的結果支持兩種對齊方式,低位對齊和高位對齊,可通過 ADCCH寄存器中的 ADFM 位進行選擇。

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 模塊開始進行轉(zhuǎn)換,此為軟件觸發(fā) A/D 轉(zhuǎn)換;在 ADC 模塊轉(zhuǎn)換使能位 ADEN(ADCCL<0>)和 PWM 自動觸發(fā) ADC 使能位 TRIGEN(ADCTR<4>)都使能后,由 PWM 邊沿觸發(fā)信號致使 ADTRG 位自動置為“1”,ADC 模塊開始進行轉(zhuǎn)換,此種為 PWM 自動觸發(fā)。

PWM 自動觸發(fā)源可選擇來自 PWMn1 信號,通過自動觸發(fā)源選擇位 TRIGS(ADCTR<6>)進行選擇,PWM 自動觸發(fā)邊沿可通過 TRIGPEG 位(ADCTR<5>)選擇 PWM 上升沿或下降沿觸發(fā)。
值得注意的是,在使用 PWM 自動觸發(fā) ADC 時,建議先查詢 ADTRG 位的當前狀態(tài)。若查詢到 ADTRG 位為“1”時,此段時間的 PWM 邊沿自動觸發(fā)信號都將被忽略,直至 ADTRG
位的狀態(tài)恢復為“0”后,系統(tǒng)再次檢測到 PWM 邊沿自動觸發(fā)信號,才會響應 PWM 自動觸發(fā) ADC 模塊進行轉(zhuǎn)換。

6. 2. 4 ADC轉(zhuǎn)換步驟
下面概述實現(xiàn) ADC 轉(zhuǎn)換過程的各個步驟。
Step 1:選擇 ADC 轉(zhuǎn)換時鐘,通過 ADCCH 寄存器中的 ADCS <2:0>選擇 ADC 轉(zhuǎn)換時鐘。
Step 2:選擇正負參考電壓,通過 ADCCL 寄存器中的 ADVREFNS 位進行選擇。
Step 3:ADC 采樣時間選擇,通過 ADCCH 寄存器中的 A/D 采樣時間選擇位 ADST <3:0>設定。
Step 4:設置復用端口設為模擬類型,即選擇哪些管腳作為 ADC 轉(zhuǎn)換輸入管腳,由端口類型選擇寄存器 ANS 控制選擇。
Step 5:選擇模擬信號輸入通道 AINx,通過 ADCCL 寄存器中的 ADCHS <2:0>選擇 ADC模擬通道。
Step 6:設置轉(zhuǎn)換結果對齊方式,通過 ADCCH 寄存器中的 ADFM 位選擇高位對齊放置還是低位對齊放置。
Step 7:如果要使用中斷,則中斷控制寄存器需要正確地設置,以確保 A/D 中斷功能被正確激活。在中斷模式時,需將全局中斷使能位 GIE 置位為“1”和 ADC 中斷使能位置位為“1”。
Step 8:使能 ADC 電路,將 ADCCL 寄存器中的 ADC 使能位 ADEN 設置為“1”。
Step 9:選擇 ADC 模塊轉(zhuǎn)換觸發(fā)方式為軟件觸發(fā)還是 PWM 自動觸發(fā)。若選擇軟件觸發(fā),將 ADCCL 寄存器中的 ADC 轉(zhuǎn)換啟動位 ADTRG 位設置為“1”,開始進行 ADC 轉(zhuǎn)換;若選擇 PWM 自動觸發(fā),需先設置 TRIGS 位選擇自動觸發(fā)源和 TRIGPEG 位選擇 PWM 自動觸發(fā)邊沿,設置 PWM 自動觸發(fā) ADC 使能位 TRIGEN 為“1”。在 PWM 自動觸發(fā) ADC模塊轉(zhuǎn)換設置完成后,自動邊沿觸發(fā)信號會自動將 ADTRG 位置為“1”,開始進行 ADC轉(zhuǎn)換。
Step 10:輪詢 ADCCL 寄存器中的轉(zhuǎn)換狀態(tài)位 ADTRG 位,確定此次 A/D 轉(zhuǎn)換是否完成。
Step 11:讀取 ADCRH 和 ADCRL 寄存器中的轉(zhuǎn)換結果。

6. 3 低電壓檢測模塊(LVD)
6. 3. 1 概述
芯片內(nèi)置一組低電壓檢測模塊,支持低電壓檢測功能,即 LVD,該功能使能用于監(jiān)測電源電壓 VDD。在供電電源不穩(wěn)定的情況下,像外部電源噪聲串擾或 EMS 測試條件下,會使電源劇烈振蕩。在目標電壓未穩(wěn)定時,可能就會低于工作電壓。若所需檢測的電壓低于一定值可提供一個警告信號。低電壓檢測也可產(chǎn)生中斷信號。
6. 3. 2 LVD操作
LVD 功能的禁止使能由 LVDC 寄存器中的 LVDEN 控制位設置。當 LVDEN 位清零,LVD 功能禁止。當 LVDEN 位置高,LVD 功能使能。LVD 模塊將電源電壓 VDD 與預置電壓進行比較,比較結果通過 LVDC 寄存器的 LVDLS 位進行查詢。預置電壓的閾值由 LVDC 寄存器中的 LVDV<1:0>配置,預置電壓范圍為 2.1V~3.6V。當目標電壓低于預置電壓值時,LVDLS位被置為高,表明檢測到低電壓產(chǎn)生,產(chǎn)生 LVD 中斷標志。當 LVD 中斷使能開啟時產(chǎn)生 LVD中斷請求。

第 7 章 中斷處理
7. 1 概述
中斷是芯片一個重要功能。它能將芯片從睡眠模式中喚醒,也可以使系統(tǒng)在正常運行過程中響應突發(fā)事件,中止并保存當前運行程序的信息,跳轉(zhuǎn)到請求中斷的入口地址,執(zhí)行相對應的中斷服務程序,處理突發(fā)事件。本芯片僅支持默認中斷模式,最多可支持 12 個中斷源,1個軟件中斷和 11 個硬件中斷。

7. 3 中斷現(xiàn)場保護
中斷現(xiàn)場保護是中斷程序中一個很重要的組成部分。指令系統(tǒng)中有 PUSH(壓棧)和 POP(出棧)指令,可以用來實現(xiàn)中斷的數(shù)據(jù)保存。可以保存的數(shù)據(jù)包括:累加器 A 寄存器、程序狀態(tài)字寄存器 PSW、IAA 寄存器和 PCRH 寄存器。其它數(shù)據(jù)寄存器的保護需采用其它指令實現(xiàn)。可以連續(xù)進行 2 次 PUSH,第 3 次 PUSH會使得第一次 PUSH 的數(shù)據(jù)丟失。同樣,超過 2 次的連續(xù) POP,第 3 次 POP 恢復的數(shù)據(jù)不可預期。
7. 4 中斷操作
每個硬件中斷源都有各自的中斷使能和中斷標志位,因此初始化相應的硬件中斷時,需要先清除中斷標志位,再使能當前中斷。若使能前不先清除中斷標志,則有可能發(fā)生誤進中斷的情況。除了每個中斷支持中斷使能外,本芯片還提供了一個全局中斷。因此在初始化所有需要的中斷后,請使能全局中斷。
若中斷事件條件產(chǎn)生,相關中斷標志將被置為“1”。中斷標志產(chǎn)生后程序要跳轉(zhuǎn)至相應服務

地址執(zhí)行需滿足以下條件:
1. 當對應中斷使能位為“1”時,繼續(xù)判斷第二個條件是否滿足;當對應中斷使能位為“0”,即使中斷標志為“1”,中斷也不會發(fā)生,程序也不會跳轉(zhuǎn)至中斷服務地址執(zhí)行。
2. 當全局中斷使能位 GIE 為“0”,將屏蔽所有中斷請求。當全局中斷使能位 GIE 為“1”,程序?qū)⑻林袛喾⻊盏刂穲?zhí)行。

為確保對寄存器 GIE 和 GIEL 的軟件寫操作成功,需按如下步驟進行:
1. 在默認中斷模式或向量中斷模式下,對 GIE 位的軟件清 0 操作,需先關閉所有外設中斷使能,再將 GIE 位清 0;或在 GIE 位清 0 操作后,查詢 GIE 位是否為 0,不為 0則繼續(xù)執(zhí)行清 0 操作,直到成功為止;
對 GIE 位的軟件置 1 操作,無特殊要求,推薦先打開所需的外設中斷使能,再將 GIE位置 1。
2. 在向量中斷模式下,對 GIEL 位的軟件清 0 操作,需先關閉所有外設中斷使能,再將
GIEL 位清 0;或在 GIEL 位清 0 操作后,查詢 GIEL 位是否為 0,不為 0 則繼續(xù)執(zhí)行清 0 操作,直到成功為止;
對 GIEL 位的軟件置 1 操作,需與 GIE 位同時置 1,或先將 GIEL 位置 1,再將 GIE位置 1。
7. 4. 1 外部中斷
當 PINTn 復用端口被配置為數(shù)字輸入端口,且輸入信號變化滿足觸發(fā)條件時,將產(chǎn)生PINTn 外部端口中斷,相應的中斷標志 PIFn 被置“1”。當全局中斷控制位 GIE 和外部端口中斷控制位 PIEn 都被置為“1”,則向 CPU 發(fā)出 PINTn 外部端口中斷請求。當中斷條件允許,系統(tǒng)將進入中斷服務程序入口地址,進行中斷程序處理。值得注意的是,相應中斷標志位 PIFn 和中斷使能位 PIEn 都需通過軟件清除,INTC1 寄存器中的 PEGn 位用于配置觸發(fā)條件,可分別配置為上升沿觸發(fā)或下降沿觸發(fā)。

7. 4. 2 外部按鍵中斷
當 KINn 復用端口被配置為數(shù)字輸入端口,未被屏蔽的按鍵中任何一個端口輸入信號發(fā)生電平變化,將中斷標志位 KIF 置為“1”,當外部按鍵中斷控制位 KIE 為“1”,且全局中斷控制位 GIE 位使能后,則向 CPU 發(fā)出外部按鍵中斷請求。當外部按鍵中斷條件允許時,系統(tǒng)將進入中斷服務程序入口地址,進行中斷程序處理。使用外部按鍵中斷時,須配置相應的控制寄存器,并且使能外部按鍵中斷端口的內(nèi)部弱上拉電阻。
在按鍵中斷使能(KMSKn=1,KIE=1)前,先對端口寄存器進行讀或者寫的操作,清除中斷標志位,以免誤產(chǎn)生中斷。
清除該中斷標志位 KIF 的操作步驟:
1)對端口寄存器進行讀或者寫操作,結束端口電平與鎖存器值的不匹配條件;
2)軟件清除中斷標志位 KIF。
中斷使能位 KIE 也需要通過軟件進行清除。

7. 4. 3 T8Pn(T8P1/T8P2)定時中斷
8 位 PWM 時基定時器 T8Pn 處于定時器模式和 PWM 模式時,對計數(shù)時鐘進行遞增計數(shù),當 T8Pn 后分頻器的計數(shù)值與后分頻器分頻比相同時,將中斷標志 T8PnTIF 位置“1”。當
T8Pn 定時中斷使能位 T8PnTIE 置為“1”,且全局中斷控制位 GIE 使能后,則向 CPU 發(fā)出
T8Pn 定時中斷請求。當 T8Pn 定時中斷條件允許時,系統(tǒng)將進入中斷服務程序入口地址,進行中斷程序處理。值得注意的是,T8Pn定時中斷標志位 T8PnTIF 和中斷使能位 T8PnTIE都需通過軟件清除。
7. 4. 4 T8Pn(T8P1/T8P2)周期中斷
8 位 PWM 時基定時器 T8Pn 處于定時器模式和 PWM 模式時,都可以產(chǎn)生周期中斷。當T8Pn 計數(shù)器與 T8PnP 寄存器的值相等時(PWM 模式時,T8Pn 從零開始遞增計數(shù)),將產(chǎn)生 T8Pn 周期中斷,中斷標志 T8PnPIF 被置“1”。 如果中斷使能位 T8PnPIE 置為“1”,且全局中斷控制位 GIE 使能后,則向 CPU 發(fā)出 T8Pn 周期中斷請求。當 T8Pn 周期中斷
條件允許時,系統(tǒng)將進入中斷服務程序入口地址,進行中斷程序處理。值得注意的是,T8Pn周期中斷標志位 T8PnPIF 和中斷使能位 T8PnPIE 都需通過軟件清除。
7. 4. 5 ADC中斷
ADC 中斷由 ADC 轉(zhuǎn)換動作控制,當 ADC 轉(zhuǎn)換完成時,將產(chǎn)生 ADC 中斷,ADC 中斷標志位 ADIF 被置“1”。當 ADC 中斷控制位 ADIE 置為“1”,且全局中斷控制位 GIE 使能后,則向 CPU 發(fā)出 ADC 中斷請求。當 ADC 中斷條件允許時,系統(tǒng)將進入中斷服務程序入口地址,進行中斷程序處理。值得注意的是,ADC 中斷標志位 ADIF 和中斷使能位 ADIE 都需通過軟件清除。
7. 4. 6 LVD中斷
當 VDD 電壓小于 LVDC 寄存器設置閾值電壓時,低電壓產(chǎn)生,LVDLS 上升沿或下降沿觸發(fā)后,中斷標志 LVDIF 位被置“1”。如果中斷使能位 LVDIE 置為“1”,且全局中斷控制位GIE 使能后,則向 CPU 發(fā)出 LVD 中斷請求。當 LVD 中斷條件允許時,系統(tǒng)將進入中斷服務程序入口地址,進行中斷程序處理。值得注意的是,LVD 中斷標志位 LVDIF 和中斷使能位 LVDIE 都需通過軟件清除。
7. 4. 7 中斷操作注意事項
用戶在使能中斷前需先清除相應的中斷標志,避免中斷的誤觸發(fā)。
除只讀的中斷標志(由硬件清除)外,其余的中斷標志必須通過軟件清除。


MCU 芯片使用注意事項


關于芯片的上/下電
MCU 芯片具有獨立電源管腳。當 MCU 芯片應用在多電源供電系統(tǒng)時,應先對 MCU 芯片上電,再對系統(tǒng)其它部件上電;反之,下電時,先對系統(tǒng)其它部件下電,再對 MCU 芯片下電。若操作順序相反則可能導致芯片內(nèi)部元件過壓或過流,從而導致芯片故障或元件退化。具體可參照芯片的數(shù)據(jù)手冊說明。

關于芯片的復位
MCU 芯片具有內(nèi)部上電復位。對于不同的快速上/下電或慢速上/下電系統(tǒng),內(nèi)部上電復位電路可能失效,
建議用戶使用外部復位、下電復位、看門狗復位等,確保復位電路正常工作。在系統(tǒng)設計時,若使用外部復位電路,
建議采用三極管復位電路、RC 復位電路。若不使用外部復位電路,建議采用復位管腳接電阻到電源,或采取必要的電源抖動處理電路或其它保護電路。具體可參照芯片的數(shù)據(jù)手冊說明。

關于芯片的時鐘
MCU 芯片具有內(nèi)部和外部時鐘源。內(nèi)部時鐘源會隨著溫度、電壓變化而偏移,可能會影響時鐘源精度;外部時鐘源采用陶瓷、晶體振蕩器電路時,建議使能起振延時;使用 RC 振蕩電路時,需考慮電容、電阻匹配;采用外部有源晶振或時鐘輸入時,需考慮輸入高/低電平電壓。具體可參照芯片的數(shù)據(jù)手冊說明。

關于芯片的初始化
MCU 芯片具有各種內(nèi)部和外部復位。對于不同的應用系統(tǒng),有必要對芯片寄存器、內(nèi)存、功能模塊等進行初始化,尤其是 I/O 管腳復用功能進行初始化,避免由于芯片上電以后,I/O 管腳狀態(tài)的不確定情況發(fā)生。

關于芯片的管腳
MCU 芯片具有寬范圍的輸入管腳電平,建議用戶輸入高電平應在 VIHMIN 之上,低電平應在 VILMAX 之下。避免輸入電壓介于 VIHMIN 和 VILMAX 之間,以免波動噪聲進入芯片。對于未使用的輸入/輸出管腳,建議設置為輸入狀態(tài),并通過電阻接至電源或地,或設置為輸出狀態(tài),輸出固定電平。對未使用的管腳處理因應用系統(tǒng)而異,具體遵循應用系統(tǒng)的相關規(guī)定和說明。

關于芯片的 ESD 防護措施
東軟載波MCU芯片具有滿足工業(yè)級ESD標準保護電路。建議用戶根據(jù)芯片存儲/應用的環(huán)境采取適當靜電防護措施。應注意應用環(huán)境的濕度;建議避免使用容易產(chǎn)生靜電的絕緣體;存放和運輸應在抗靜電容器、抗靜電屏蔽袋或?qū)щ姴牧先萜髦校话üぷ髋_在內(nèi)的所有測試和測量工具必須保證接地;操作者應該佩戴靜電消除手腕環(huán)手套,不能用手直接接觸芯片等。

關于芯片的 EFT 防護措施
MCU 芯片具有滿足工業(yè)級 EFT 標準的保護電路。當 MCU 芯片應用在 PCB 系統(tǒng)時,需要遵守 PCB 相關設計要求,包括電源、地走線(包括數(shù)字/模擬電源分離,單/多點接地等等)、復位管腳保護電路、電源和地之間的去耦電容、高低頻電路單獨分別處理以及單/多層板選擇等。

關于芯片的開發(fā)環(huán)境
MCU 芯片具有完整的軟/硬件開發(fā)環(huán)境,并受知識產(chǎn)權保護。選擇上海東軟載波微電子有限公司或其指定的第三方公司的匯編器、編譯器、編程器、硬件仿真器開發(fā)環(huán)境,必須遵循與芯片相關的規(guī)定和說明。

0.png
(編譯器版本: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)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:1 發(fā)表于 2018-8-27 18:18 | 顯示全部樓層
希望國產(chǎn)單片機崛起
回復

使用道具 舉報

ID:385722 發(fā)表于 2022-9-8 22:51 | 顯示全部樓層
案例太少了哦
回復

使用道具 舉報

ID:1048397 發(fā)表于 2022-11-24 11:25 | 顯示全部樓層
多謝樓主分享!希望國產(chǎn)芯片應用更多。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中国一级特黄视频 | 日韩美香港a一级毛片免费 国产综合av | 成人精品一区亚洲午夜久久久 | 欧美一区二区三区四区五区无卡码 | 国产精品欧美一区二区 | 亚洲一区二区三区在线观看免费 | 欧美精品久久一区 | 国产精品久久精品 | av片在线观看 | 欧美精品 在线观看 | 欧美一级久久久猛烈a大片 日韩av免费在线观看 | 久久久久久久国产精品影院 | 狠狠操你 | 97超碰人人草| 一级片子 | 黄色一级免费观看 | 中文字幕在线一区二区三区 | 成人国产在线视频 | 成人av一区二区三区 | 一区二区三区亚洲精品国 | 成人区精品一区二区婷婷 | 国产在线观看一区二区三区 | 久草福利 | 亚洲精品乱码久久久久久按摩 | 亚洲欧美视频 | 69av在线视频 | 国产精品视频免费观看 | 中文字幕av中文字幕 | 国产亚洲精品成人av久久ww | 国产精品自产拍 | 日韩三区 | 日本亚洲欧美 | 国产欧美视频一区 | 精品久久久久久久久久久久久久 | 老熟女毛片 | 亚洲视频免费在线观看 | 成av在线| 在线欧美小视频 | 日韩有码一区 | www.97国产| 国产成人精品一区二区三区网站观看 |