|
KL25 Reference Manual_Rev分享給大家學(xué)習(xí)
1.1.1 目的
本文檔表述了飛思卡爾KL25 微控制器的特性、框架及程序模板。
1.1.2 適用讀者
本文檔適用于正在使用或即將使用KL25 微控制器的系統(tǒng)架構(gòu)師和軟件應(yīng)用開發(fā)員。
1.2 約定
1.2.1 數(shù)字系統(tǒng)
下列后綴表示了不同的數(shù)字系統(tǒng):
后綴 表示
b 二進制符號。例如,數(shù)字5的二進制表示為101b。二進制數(shù)字還可以用0b作為前綴表示。
d 十進制符號。十進制數(shù)字只有在出現(xiàn)混淆的情況下才使用該后綴。通常,十進制表示無需后綴。
h 十六進制符號。例如,數(shù)字60的十六進制表示為3Ch。十六進制數(shù)字還可以用0x作為前綴表示。
第2章 引言
2.1 概述
本章是 ARM® Cortex™-M0+的 Kinetis L系列 MCU及KL25 系列產(chǎn)品的概述。這也表示了本文涵蓋的芯片可用模塊是較為準(zhǔn)確的描述。
2.2 Kinetis L系列
業(yè)內(nèi)ARM Cortex-M0+內(nèi)核的 MCU 具有低功耗及混合信號的處理能力,Kinetis L系列則是其中最具可擴展性的系列。KL系列因存儲器容量、接口數(shù)量、封裝形式等不同,有 5 個子系列。Kinetis L系列共用公共外設(shè)和引腳,提高了可移植性。允許可擴展性允許開發(fā)者標(biāo)準(zhǔn)化他們的最終產(chǎn)品、最大化可重用硬件和軟件以及縮短進軍市場的時間。
Kinetis L系列的共性如下:
具有 48MHz ARM Cortex-M0+內(nèi)核頻率
具有高速 12/16位模數(shù)轉(zhuǎn)換器
除 KLx4/KLx2系列外,均具有12 位數(shù)模轉(zhuǎn)換器
具有高速模擬比較器
除 KLx4 系列外,均具有觸摸喚醒的低功耗觸摸傳感器
具有強大的定時器,包括電機控制等大多數(shù)應(yīng)用
通信接口低功耗,如UART、SPI、I2C 等
電壓供應(yīng)范圍:1.71V~3.6V,多功能低功耗模式支持獨立操作
運行溫度范圍:-40~105 °C(CSP 包除外)
Kinetis L系列微控制器融合了最新的低功耗革新技術(shù),具有高精度混合信號處理能力、寬廣的互聯(lián)性和人機接口。Freescale與 ARM的合作伙伴為每個MCU 系列提供良好的支持。KL0x 系列是 Kinetis L 系列中最初的產(chǎn)品,其引腳與 8 位 S08PT 系列兼容。
KL1x/2x/3x/4x各系列之間相互兼容,而且與基于ARM Cortex-M4 內(nèi)核的 K系列兼容。
0.png (78.5 KB, 下載次數(shù): 67)
下載附件
2018-9-28 17:59 上傳
所有的 Kinetis L 系列包括強大的模擬、通信、實時性和控制外設(shè),集成級別隨著閃存容量和輸入/輸出引腳數(shù)量增加而提高。Kinetis L系列特性如下:
1、內(nèi)核和框架:
(1)ARM Cortex-M0+內(nèi)核性能可達(dá)48 MHz,同時可在內(nèi)存中執(zhí)行零等待狀態(tài)。
1)單周期訪問 I/O:比標(biāo)準(zhǔn)I/O 最大提高 50%,允許位觸發(fā)、軟件仿真協(xié)議響應(yīng)外部事件。
2)雙通道:減少指令周期數(shù),更快的跳轉(zhuǎn)指令、 執(zhí)行 ISR 中斷服務(wù)例程和減少功耗。
3)相對8位和16 位微控制器,減少了閃存、系統(tǒng)消耗和耗電量,使代碼密度更為精簡。
4)優(yōu)化內(nèi)存訪問:訪問可選周期,以降低耗電量。
5)完全兼容ARM Cortex-M0系列,與ARM Cortex-M3/M4 指令集子集兼容:允許重新利用現(xiàn)有的編譯和調(diào)試工具
6)更精簡的指令系統(tǒng):56種指令、17個寄存器能夠?qū)崿F(xiàn)輕松編程,而且能夠有效處理內(nèi)存中8/16/32位數(shù)據(jù)。
7)線性的4GB地址空間去除分頁,減輕程序復(fù)雜度。
8)有ARM 第三方系統(tǒng)支持:軟件和工具幫助減少開發(fā)時間和開銷。
(2)微型跟蹤緩沖區(qū):輕量跟蹤方法允許快速錯誤識別和糾正。
(3)BME:對外圍寄存器的操作,位操作技術(shù)與傳統(tǒng)的讀、修改、寫技術(shù)相比,減輕代碼量和周期數(shù)
(4)多達(dá)4通道的DMA服務(wù),可用于外設(shè)和內(nèi)存服務(wù)并減少CPU干預(yù)。
2、超低功耗:
(1)極端動態(tài)效率:性能是最接近的 8 位或 16 位競爭產(chǎn)品 CoreMark/mA 的 2 倍,32 位ARM Cortex-M0+內(nèi)核采用飛思卡爾90nm薄膜存儲器閃存技術(shù)。
(2)靈活多樣的低功耗模式,包括新的門控時鐘,該模式在要求最低功耗時通過關(guān)閉總線、系統(tǒng)時鐘減少動態(tài)功耗
(3)在未喚醒內(nèi)核下,UART、SPI、I2C、ADC、DAC、TPM、LPT 和 DMA 支持低功耗模式。
3、內(nèi)存:
(1)內(nèi)存空間可擴展,從8KB 閃存/1KB SRAM到256KB 閃存/32KB SRAM。
(2)為優(yōu)化總線帶寬和閃存執(zhí)行操作內(nèi)嵌了64B的緩存空間(KL02 系列只有32B)。
4、混合信號模擬:
(1)快速、高精度的 16/12 位模數(shù)轉(zhuǎn)換器、12 位數(shù)模轉(zhuǎn)換器和高速比較器。提供強大信號調(diào)節(jié)、轉(zhuǎn)換和分析性能的同時降低了系統(tǒng)成本。KL02 系列沒有 12 位數(shù)模轉(zhuǎn)換器)
5、人機接口:
(1)可選的電容式觸摸傳感接口工作于所有低功耗模式下。
• Optional capacitive Touch Sensing Interface with full low-power support and minimal current adder when enabled
(2)段式 LCD
6、通信:
(1)所有UART 支持DAM傳輸,總線檢測到數(shù)據(jù)也能觸發(fā)傳輸,UART0 支持 4-32倍的采樣速率。在STOP/VLPS 模式,也能運行異步傳輸和接收操作。
(2)最大支持兩路SPI
(3)最大支持兩路I2C
(4)支持全速USB OTG片上傳輸控制設(shè)備(帶有片上收發(fā)器的全速USB OTG控制器)
(5)USB支持片上調(diào)節(jié)3.3V 到5V
(6)支持一路 I2S
7、可靠性和安全性
內(nèi)部看門狗監(jiān)控
8、定時控制器:
(1)強大的定時模塊支持通用/PWM/電機控制功能
(2)可用于RTOS任務(wù)調(diào)度時基、ADC轉(zhuǎn)換或定時的周期中斷定時器
9、系統(tǒng)特性:
(1)GPIO支持引腳中斷
(2)寬泛的工作電壓:1.71V~ 3.6V,F(xiàn)lash 編程電壓、模擬外設(shè)電壓低至1.71V
(3)運行溫度范圍:–40℃~ 105℃
2.3 KL25 子系列簡介
該芯片是增強版 Cortex-M0+ (CM0+)內(nèi)核的高集成、超低功耗 32 位微控制器。子系列特性如下:
內(nèi)核時鐘高達(dá)48MHz,總線時鐘高達(dá)24MHz
內(nèi)存空間具有高達(dá)128KB 的閃存和 16KB 的 RAM
寬泛的工作電壓:1.71V~ 3.6V,可對 Flash進行編程/擦除/讀取操作32到 80 引腳的多種封裝模式
運行溫度范圍:–40℃~ 105℃
該系列控制器更低功耗、更經(jīng)濟有效的特性為開發(fā)者提供了一個入門級 32 位芯片解決方案。該系列對于低成本、低功耗、高性能芯片應(yīng)用提出了下一代MCU解決方案,該方案對那些成本敏感、待機時間長的便攜式芯片是十分有價值的。
0.png (186.11 KB, 下載次數(shù): 50)
下載附件
2018-9-28 18:02 上傳
2.4.1 ARM Cortex™-M0+ 內(nèi)核模塊
表2-2描述了本芯片的可用內(nèi)核模塊。
0.png (158.47 KB, 下載次數(shù): 55)
下載附件
2018-9-28 18:02 上傳
2.4.2 系統(tǒng)模塊
表2-3描述了本芯片的系統(tǒng)模塊。
表2-3 系統(tǒng)模塊
0.png (180.87 KB, 下載次數(shù): 45)
下載附件
2018-9-28 18:03 上傳
3.4.10.1 COP時鐘
COP 的兩個時鐘輸入是 1 kHz 時鐘和總線時鐘。
3.4.10.2 COP看門狗操作
當(dāng)應(yīng)用程序沒有按照預(yù)期執(zhí)行時,COP 看門狗會強制系統(tǒng)復(fù)位。應(yīng)用軟件必須定期
清零COP 計數(shù)器, 去防止系統(tǒng)被 COP 計數(shù)器復(fù)位 (當(dāng)使能COP 計時器時)。如果應(yīng)用程
序跑飛,未能在 COP 計數(shù)器超時之前復(fù)位,則將產(chǎn)生系統(tǒng)復(fù)位強制信號將系統(tǒng)恢復(fù)到應(yīng)
用程序中的一個已知起點。
任何復(fù)位后,COP 看門狗都將被使能。如果應(yīng)用程序不使用COP 看門狗,它可以通
過清除在SIM卡中的COPCTRL [ COPT ] 來禁用。
COP 計數(shù)器通過選定的超時期間向 SIM 的服務(wù)COP (SRVCOP) 寄存器的地址寫入
0x55 和 0xAA (按此順序)來復(fù)位。寫不影響在 SRVCOP 寄存器中數(shù)據(jù)。一旦寫序列
完成后, COP 超時周期將重新啟動。如果程序無法在超時時間內(nèi)執(zhí)行此重新啟動,則微
控制器將復(fù)位。此外,如果任何0x55 或0xAA 以外的值寫入SRVCOP 寄存器,則微控制
器立即復(fù)位。
在SIM的COPCTRL COPCLKS ]字段中,選擇用于COP 定時器的時鐘源。時鐘源選
項是總線時鐘或內(nèi)部的1 kHz時鐘源。每個時鐘源,有三個COPCTRL [ COPT ]控制的相
關(guān)的超時。表 3-23 總結(jié)了COPCLKS 和COPT位的控制功能。COP 看門狗默認(rèn)操作是在
1 kHz時鐘源和最長的超時作為該時鐘源(2的10次方個循環(huán)) 。
總線時鐘源選擇后,通過設(shè)置在SIM的 COPCTRL [ COPW ]位來使窗口COP 操作可
用。在這種模式下,寫入SRVCOP 寄存器以清除COP 定時器必須發(fā)生在選定的超時時間
的最后 25%。過早地寫將立即復(fù)位芯片。當(dāng) 1 kHz 時鐘源選擇,窗口COP 操作不可用。
的第一次寫入到 SIM 的 COPCTRL 寄存器和任何系統(tǒng)復(fù)位后,COP 計數(shù)器都將被初
始化。后續(xù)寫入到 SIM 的 COPCTRL 寄存器將不影響 COP 的操作。即使應(yīng)用程序使用
COPT、 COPCLKS、 以及 COPW 位的默認(rèn)設(shè)置來復(fù)位,用戶也應(yīng)在復(fù)位初始化鎖定的
設(shè)置過程中去寫write-once COPCTRL 寄存器。這種方法可以防止如果應(yīng)用程序帶來丟失
的意外更改。
寫到 SRVCOP 寄存器的服務(wù)(清除) COP 計數(shù)器不應(yīng)該被放置在中斷服務(wù)例程(ISR)
中,因為ISR即使主應(yīng)用程序失敗也可以繼續(xù)定期執(zhí)行。
如果選擇總線時鐘源時,當(dāng)微控制器在調(diào)試模式下或系統(tǒng)在停止模式(包括VLPS或
LLS )下時,COP 計數(shù)器不會遞增。微控制器退出調(diào)試模式或停止模式后,COP計數(shù)器
恢復(fù)。
如果選擇 1 kHz時鐘源時, 在調(diào)試模式及停止模式(包括VLPS 或 LLS) 任一模式下,
COP 計數(shù)器都將被重新初始化為零。退出調(diào)試模式或停止模式后, 計數(shù)器從零開始計時。
無論選擇的哪種時鐘, 只要當(dāng)芯片進入一個VLLSx 模式COP 都將被禁止。從VLLSx
模式喚醒芯片復(fù)位后, COP 將重新初始化并作為任何復(fù)位使能。
3.4.10.3 時鐘門
該系列器件包含每個外設(shè)的時鐘門控,也就是說,時鐘的每個外設(shè)都可以明確地選通
或關(guān)閉,使用的時鐘門控位在SIM模塊內(nèi)。
3.5.2.1 MCG和RTC中的OSC的操作模式
控制OSC塊的最通常的方法是通過MCG的時鐘源選擇MCG_C1[CLKS] 和MCG_C2
的寄存器位來配置振蕩器的頻率范圍、增益模式以及晶體或外部的時鐘操作。OSC_CR也
控制著 OSC 的啟動以及 EXTAL 和 XTAL 兩個引腳的內(nèi)部負(fù)載電容的配置。詳細(xì)內(nèi)容參
考 OSC 和 MCG 章節(jié)。
RTC_CR[OSCE]位對 MCG 和 OSC_CR 的啟動功能有著重要的控制。當(dāng)
RTC_CR[OSCE]設(shè)定好后,給 OSC 配置低頻率、低功率,RTC_CR[SCxP]位撤銷
OSC_CR[SCxP]位來控制內(nèi)部電容配置。詳細(xì)內(nèi)容參考RTC章節(jié)。
3.6.1.4 Flash 模式
“Flash存儲器章節(jié)”定義了兩種操作模式—正常NVM模式和專用NVM模式。在這
個芯片中,flash 存儲器只運行 NVM 的正常模式。所有 nvm專用模式的參考都可以被忽
略。
3.6.1.5 擦除所有的flash內(nèi)容
除了軟件,整個flash存儲器可以通過SW-DP的調(diào)試端口設(shè)置MDM-AP CONTROL[0]
從flash存儲器的外部進行擦除。設(shè)置MDM-AP CONTROL[0]指示批量擦除的命令被接收,
當(dāng)批量擦除的命令完成時清除MDM-AP CONTROL[0]。
3.6.1.6 FTFA_FOPT寄存器
Flash 存儲器的 FTFA_FOPT 寄存器允許用戶在計算機啟動的時候適配 MCU 的操作。
它的定義細(xì)節(jié)參見FOPT啟動選擇。
3.6.2 Flash存儲器的控制器結(jié)構(gòu)
該部分總結(jié)了芯片中的該模塊是如何配置的。關(guān)于模塊本身的全面描述,請參考它們
專門的章節(jié)。FMC 重新設(shè)定的配置細(xì)節(jié)參見MCM_PLACR寄存器的描述。
0.png (65.1 KB, 下載次數(shù): 45)
下載附件
2018-9-28 18:05 上傳
3.7.1.2 ADC上的DMA支持
應(yīng)用中可能需要ADC 的連續(xù)采樣,這會給CPU帶來相當(dāng)大的負(fù)荷。當(dāng)ADC 以高速
進行采樣時,為了得到更高的性能,ADC 支持 DMA 的請求功能。在轉(zhuǎn)換完成后,ADC
能觸發(fā) DMA(通過DMA請求)。
3.7.1.3 ADC0連接/通道分配
注意
如下面的部分所示,每個 ADCx_DPx 輸入和特定的 ADCx_DMx 輸入可作為單向模
式的單向ADC通道。
3.7.2.1 CMP 實例化信息
該芯片包含一個高速比較器和 2 個可反相、正相 8 路輸入多工器比較器。每個 CMP
輸入通道都連接至多路復(fù)用器。其中兩個通道連接至內(nèi)部源,其他源支持多達(dá)6 個輸入引
腳。該芯片的CMP 輸入連接總結(jié)參見通道分配表。
CMP 也包含一個 64-電阻階梯網(wǎng)絡(luò)的 6 位 DAC,該電阻階梯網(wǎng)絡(luò)可為通過內(nèi)部連接
到CMP 且需要參考電壓的應(yīng)用提供一個可選參考電壓。
CMP 除在VLLS0模式,均可任意工作。
利于ADC的觸發(fā),CMP已經(jīng)有幾個模塊至模塊的內(nèi)部連線,TMP 觸發(fā)和UART IR
接口。CMP 模塊內(nèi)部連線詳細(xì)信息請參閱 模塊-模塊章節(jié)。
CMP 不支持窗口比較功能且CMP_CR1[WE]必須清零。連接至模塊的SAMPLE 輸入
端為無效輸入時,采樣功能弱化。采樣操作受限于總線時鐘的分頻(CMP_CR1[SE]=0)。
由于引腳數(shù)的限制,此芯片不支持CMP的pass through模式,故CMPx_MUXCR[PSTM]
必須清零。
3.7.2.4 CMP 觸發(fā)模式
當(dāng)CMP_CR1[TRIGM]置位,CMP 和6 位 DAC 子模塊支持觸發(fā)模式的操作。當(dāng)使能
觸發(fā)模式,觸發(fā)事件將會初始化比較次序,該次序必須在執(zhí)行CMP 操作和捕捉輸出前使
能 CMP 和 DAC。在該芯片中,由 LPTMR 控制這兩個階段的次序。當(dāng) LPTMR 使能時,
LPTMR觸發(fā)輸出總是使能。第一個信號提供使能CMP 和DAC,同時置位TCF標(biāo)志。根
據(jù) LPTMR 配置,延時的第二個信號觸發(fā) CMP 捕捉比較的結(jié)果。在預(yù)分頻的定時器模式
下,延遲等于1/2的預(yù)分頻輸出周期。旁路預(yù)分頻時,延遲等于1/2的預(yù)分頻時鐘周期。
來自LPTMR的兩個信號間的延時必須大于在數(shù)據(jù)手冊中已定義的模擬比較器初始化
的延時。
6.2.2.1.1復(fù)位引腳過濾
引腳在 1kHz LPO 時鐘和總線時鐘中都可以使用該過濾。RPFC[RSTFLTSS],
RPFC[RSTFLTSRW], 和 RPFW[RSTFLTSEL]在 RCM 寄存器中設(shè)置控制;見 RCM 相關(guān)
章節(jié)。過濾器芯片上電復(fù)位以后與復(fù)位異步。上電復(fù)位時默認(rèn)設(shè)置 RESET 引腳無濾波設(shè)
置。
對于所有的(如Stop,VLPS,LLS,VLLS3,和 VLLS1)LPO時鐘仍然保持使能的stop
模式,LPO 基于數(shù)字過濾是唯一的可選時鐘。過濾邏輯可以是開關(guān)到旁路操作或者繼續(xù)
過濾操作,這些都取決于過濾器模式的選擇。當(dāng)進入VLLS0 模式,復(fù)位引腳過濾器是無效
的并且是被忽略的。
LPO 過濾器的過濾值計數(shù)固定是3。輸入數(shù)據(jù)有一個2個周期的同步信號。這樣,從
高到低或從低到高的轉(zhuǎn)換需要5個周期。
6.2.2.2 低電平檢測(LVD)
當(dāng)給芯片提供多變的電壓,芯片的低電平檢測系統(tǒng)可以保護內(nèi)存內(nèi)容和控制MCU 系
統(tǒng)狀態(tài)。系統(tǒng)由上電復(fù)位電路(POR)和低電壓檢測(LVD)電路組成。對于低電壓檢測
(LVD)電路,用戶可選選擇電壓(高電壓(VLVDH)或低電壓(VLVDL))。 在正 常運
行、等待和停止模式下,低電壓檢測系統(tǒng)在正常運行、等待和停止模式下總是保持使能。
LVD 系統(tǒng)在VLPx、LLSx和 VLLSx 模式下總是保持禁止。
通過設(shè)置 PCM 的 LVDSC1[LVDRE]位為 1,LVD 可以在檢測到低電壓條件時產(chǎn)生復(fù)
位。當(dāng)產(chǎn)生 LVD復(fù)位時,LVD 系統(tǒng)使MCU處于復(fù)位狀態(tài)直到供應(yīng)的電壓大于LVD 低電
壓閾值。LVD復(fù)位或POR時 SRSL[LVD]位被置位。
6.2.2.3 COP看門狗復(fù)位
看門狗定時器通過軟件周期性的通信操作監(jiān)視系統(tǒng)的操作。該通信通常稱為服務(wù)性看
門狗。如果沒有定時進行喂狗,看門狗將產(chǎn)生系統(tǒng)復(fù)位。COP 復(fù)位導(dǎo)致 SRS0[WDOG]位
被置位。
6.2.2.4 低漏喚醒(LLWU)復(fù)位
LLWU 模塊為用戶提供了用外部引腳和內(nèi)部外設(shè)將MCU 從低漏模式下喚醒。LLWU
模塊只有在低漏功耗模式下使用。在VLLSx 模式下,所有使能的輸入LLWU 都可以產(chǎn)生
系統(tǒng)復(fù)位。
系統(tǒng)復(fù)位后,LLWU 會保持標(biāo)識上一次的喚醒源的標(biāo)志直到用戶清該標(biāo)志位。
注意:
LLWU 復(fù)位中外設(shè)模塊的一些條件標(biāo)志位會自動被清除。詳見各個外設(shè)模塊說明。
6.2.2.5 多功能時鐘發(fā)生器時鐘丟失(LOC)復(fù)位
MCG 模塊支持一個外部的參考時鐘。
如果MCG中的C6[CME]為1,時鐘監(jiān)視器使能。當(dāng)外部參考壓降低于floc_low or floc_high,
(由 MCG 中的C2[RANGE]位控制),MCU 復(fù)位。RCM的 SRS0[LOC]位為1代表該復(fù)位
源。
注意:
為了防止不可預(yù)測丟失時鐘的復(fù)位事件,所有的時鐘監(jiān)視器在進入低功耗模式下(包
括 VLPR和 VLPW)之前必須禁用。
6.2.2.6 MCG –丟失鎖定LOL復(fù)位
MCG 有一個PLL丟失鎖定探測器。當(dāng)MCG 配置為PEE或者鎖定使能,該探測器使
能。如果 MCG_C8[LOLRE]位被置位并且 PLL 鎖的狀態(tài)位(MCG_S[LOLS0])變成 1,
MCU 復(fù)位。RCM_SRS0[LOL]位標(biāo)志該復(fù)位源。
注意:如果芯片在任何停止模式下,該復(fù)位源不會產(chǎn)生任何復(fù)位。
6.2.2.7 停止模式的應(yīng)答錯誤(SACKERR)
如果內(nèi)核試圖進入 stop 模式或者計算操作,該復(fù)位產(chǎn)生,但是不是所有模塊的 stop
模式在 1kHzLPO 時鐘的1025 個周期內(nèi)。
如果一個錯誤產(chǎn)生,該模塊可能并不應(yīng)答進入 stop 模式。該錯誤也可能由外部時鐘
輸入一個模塊中產(chǎn)生。
6.2.2.8 軟件復(fù)位(SW)
NVIC 應(yīng)用中斷和復(fù)位控制寄存器的 SYSRESETREQ 位置位時會產(chǎn)生一個軟件復(fù)位。
(參見 ARM 的 NVIC 文檔寄存器詳細(xì)說明,尤其 VECTKEY 位域要求說明)。置位
SYSRESETREQ可產(chǎn)生軟件復(fù)位請求。除了調(diào)試模塊,軟件復(fù)位能重設(shè)系統(tǒng)大多數(shù)模塊。
軟件復(fù)位時RCM的 SRS1[SW]位被置位。
6.2.2.9 鎖定復(fù)位(LOCKUP)
LOCKUP 會立即表明嚴(yán)重錯誤的內(nèi)核軟件產(chǎn)生的錯誤。在內(nèi)核中系統(tǒng)硬件保護激活
時,一個不可恢復(fù)異常導(dǎo)致內(nèi)核被鎖。
LOCKUP 導(dǎo)致系統(tǒng)復(fù)位,亦使RCM的SRS1[LOCKUP]位被置位。
6.2.2.10 MDM-AP系統(tǒng)復(fù)位請求
通過設(shè)置 MDM-AP 控制寄存器中的系統(tǒng)復(fù)位請求位可以產(chǎn)生系統(tǒng)復(fù)位。通過 SWD
接口,此復(fù)位方式是的主要復(fù)位方法。直到該位被清,系統(tǒng)復(fù)位才停止。
當(dāng)芯片從系統(tǒng)復(fù)位中喚醒,通過設(shè)置MDM-AP 控制寄存器中的內(nèi)核保持復(fù)位位可以
控制正在復(fù)位的內(nèi)核。
6.2.3 MCU復(fù)位
MCU 不同模塊產(chǎn)生各種不同的復(fù)位。
6.2.3.1 POR上電復(fù)位
只有在上電復(fù)位的時候上電復(fù)位激發(fā)。將PMC 和RTC復(fù)位,也同樣觸發(fā)其他復(fù)位。
6.2.3.2 芯片非VLLS上電復(fù)位
非VLLS 芯片上電復(fù)位來自上電復(fù)位和LVD復(fù)位。復(fù)位部分SMC 和 SIM。同時 復(fù)
位了LPTMR。
在非VLLS 芯片上電復(fù)位同樣引起以下復(fù)位:芯片上電復(fù)位,芯片非VLLS 復(fù)位,和
芯片復(fù)位(包括早期的芯片復(fù)位)
6.2.3.3 芯片上電復(fù)位
芯片上電復(fù)位斷言芯片POR,LVD和 VLLS 喚醒復(fù)位源。它重設(shè)了復(fù)位引腳過濾寄存
器和SIM和MCG 的部分寄存器。芯片POR 同樣產(chǎn)生芯片復(fù)位(包括早期的芯片復(fù)位)。
6.2.3.4 芯片非VLLS復(fù)位
通過復(fù)位引腳,芯片非VLLS 復(fù)位在除了 VLLS 喚醒源,其他復(fù)位都可以產(chǎn)生。它復(fù)
位了SMC,LLWU 和其他模塊(該模塊在VLLS 模式下保持上電)。
芯片非 VLLS 復(fù)位同樣引起芯片復(fù)位(包括早期芯片復(fù)位)觸發(fā)。
6.2.3.5 早期芯片復(fù)位
早期芯片斷言所有的復(fù)位源。它復(fù)位了flash內(nèi)存模塊。它在 flash內(nèi)存初始化開始之
前無效(“早于”芯片復(fù)位無效)。
6.2.3.6 芯片復(fù)位
芯片復(fù)位同樣來自所有復(fù)位源,并且只有在flash初始化完成之后無效并且 引腳同樣
禁止。該復(fù)位重置了現(xiàn)存的模塊(該模塊沒有被其他復(fù)位所重置)。
6.2.4 復(fù)位引腳
對于所有的復(fù)位源(除了VLLS 喚醒),其他都通過復(fù)位引腳發(fā)生,復(fù)位引腳被MCU
拉低至少 128 總線時鐘周期,直到flash初始化完成。
在 flash 初始化完成之后,復(fù)位引腳釋放,并且內(nèi)部芯片復(fù)位在復(fù)位引腳上拉之后失
效。一直按住外部復(fù)位引腳會延遲了內(nèi)部芯片復(fù)位。
復(fù)位引腳通過置 RESET_PIN_CFG 選項位為 0,可以禁用。當(dāng)該選項選中,在芯片上
電復(fù)位上升沿時,會有一個短暫的沖突區(qū),在建立該選項的設(shè)置和在引腳處釋放復(fù)位功能
之前設(shè)備驅(qū)動引腳輸出低電平。
6.2.5 調(diào)試復(fù)位
以下部分詳細(xì)描述了調(diào)試復(fù)位。
6.2.5.1 復(fù)位調(diào)試子系統(tǒng)
使用DP CTRL/STAT 寄存器的CDBGRSTREQ 位復(fù)位調(diào)試模塊。但是,如下所述,
使用CDBGRSTREQ 位并沒有復(fù)位所有調(diào)試相關(guān)的寄存器。
6.3.3 啟動順序
在上電時,片上穩(wěn)壓器會保持芯片處于POR 狀態(tài)直到輸入電壓高于POR閾值。系統(tǒng)
會持續(xù)這個靜止?fàn)顟B(tài)直到內(nèi)部調(diào)節(jié)電壓達(dá)到 LVD 標(biāo)定的安全操作電壓。復(fù)位控制邏輯器
控制一系列退出復(fù)位。
1. 系統(tǒng)復(fù)位保持在內(nèi)部邏輯,復(fù)位引腳驅(qū)動為低電平, MCG 在使能默認(rèn)的時鐘模式。
2. 時鐘使能(系統(tǒng)時鐘,flash 時鐘和任何沒有時鐘門控制的總線時鐘復(fù)位后禁用)。
3. 內(nèi)部系統(tǒng)復(fù)位邏輯持續(xù)保持拉高,但是flash 控制器停止復(fù)位并且在復(fù)位控制邏輯
持續(xù)將復(fù)位引腳拉低時,開始初始化操作。
4. 先將 NVM 選項中的復(fù)位序列字節(jié)讀取并且存到 FTFA_FOPT 寄存器中。如果與
LPBOOT 相應(yīng)的位,為備用時鐘分頻器復(fù)位值編程時,系統(tǒng)/內(nèi)核時鐘切換到較慢的時鐘
速度。如果清FAST_INT位,flash初始化切換到慢速時鐘會導(dǎo)致更長的恢復(fù)時間.
5. 當(dāng) flash初始化完成,復(fù)位引腳將被釋放。如果復(fù)位引腳持續(xù)觸發(fā)(如復(fù)位引腳一
個緩慢上升沿或者外部使能拉低),系統(tǒng)持續(xù)保持復(fù)位狀態(tài)。一旦檢測復(fù)位引腳的電平為
高,內(nèi)核時鐘使能,系統(tǒng)將退出復(fù)位狀態(tài)。
6. 當(dāng)系統(tǒng)退出復(fù)位時,處理器初始化堆棧,程序計數(shù)器(PC)和連接寄存器(LR)。
處理器從中斷向量表 0 偏移處讀取 SP(SP_main)。內(nèi)核從中斷向量表偏移 4 處讀取 PC。
LR 設(shè)置為 0xFFFF_FFFF。CPU開始轉(zhuǎn)到PC位置執(zhí)行。
子系統(tǒng)復(fù)位遵從同樣的復(fù)位順序。
第7章 電源管理模塊
7.1 簡介
本章主要描述各種芯片電源模塊,以及在這些模式下各個不同模塊的功能。
7.2 時鐘模塊
該部分描述了該設(shè)備支持的多種時鐘模塊。
7.2.1 局部停止
局部停止是一種可替代 stop 模式的時鐘選項,在 SMC 停止控制寄存器
(SMC_STOPCTRL)進行配置。STOP 模式只是一部分進入,在高能耗的情況下保留了
一些額外的功能使能。局部stop 模式能夠從Run 模式或者VLP Run 模式進入。
當(dāng)配置為 PSTOP2 模式,只有內(nèi)核和系統(tǒng)時鐘不可以用,總線時鐘仍然使能。進入
Stop 模式后總線主機和總線從機由系統(tǒng)時鐘起振,但是在RUN(或者VLP Run)模式下
總線從機由總線時鐘起振。在 RUN(或者 VLP Run)模式下,MCG 時鐘產(chǎn)生器和 PMC
片上穩(wěn)壓器仍然運行。退出PSTOP2,一個異步的來自總線主機或者總線從機(由系統(tǒng)時
鐘驅(qū)動)的中斷,或者一個同步的來自總線從機(由總線時鐘驅(qū)動)的中斷可以通過復(fù)位
初始化。一旦這樣配置,DMA 請求(采用異步的 DMA 喚醒)能同樣用于退出局部 Stop
模式(在DMA持續(xù)時間,在設(shè)備轉(zhuǎn)回PSTOP2模式之前)。
當(dāng)配置為PSTOP1,系統(tǒng)時鐘和總線時鐘都被禁止。所有的總線主機和總線從機進入
stop模式,但是MCG的時鐘發(fā)生器和PMC的片上穩(wěn)壓器保持運行 (或者VLP Run)模式。
從PSTOP1 模式離開,一個來自總線主機或者從機的異步中斷被復(fù)位初始化。一旦該配置,
在設(shè)備傳送回PSTOP1之前在DMA傳送周期內(nèi),一個異步DMA請求可以用來退出局部
Stop。
PSTOP1模式類似于STOP模式,但是耗能更高,喚醒速度更快。還可以保持所有的
MCG 時鐘使能,這可以用于使一些異步外設(shè)可以在stop 模式下使能工作。
7.2.2 DMA喚醒
不管什么Stop模式下的DMA請求都可以用來喚醒設(shè)備。在計算操作, PSTOP, STOP
和VLPS 低功耗模式下,每個DMA通道都可以喚醒。
當(dāng)在PSTOP,STOP 或者VLPS,檢測到DMA 喚醒,設(shè)備將退出低功耗模式。它包括
儲存片上穩(wěn)壓器和內(nèi)部電源開關(guān),使能MCG 中的時鐘發(fā)生器,使能系統(tǒng)和總線時鐘(不
是內(nèi)核時鐘)和阻塞發(fā)給總線主機和總線從機的 STOP 信號。唯一的不同是可以在 CPU
時鐘失效時,CPU 將保持在低功耗模式下運行。
在計算操作中,DMA 喚醒將導(dǎo)致退出計算操作。這個包括使能時鐘和阻塞發(fā)給總線
主機和總線從機的STOP模式信號。內(nèi)核時鐘仍然在計算操作中保持使能。
由于 DMA 喚醒將使能時鐘和阻塞發(fā)給總線主機和停止總線從機的 STOP 模式信號,
軟件方需要首先確保總線主機和從機并沒有包含進DMA喚醒和發(fā)送器保持它在一個已知
的狀態(tài)。在所選的模塊中,可通過在進入低功耗模式之前或者通過設(shè)置 DOZE 使能位,
達(dá)到以上的目的。
一旦DMA請求將設(shè)備喚醒并且DMA 完成當(dāng)前的傳輸,設(shè)備將回到原始的低功耗模
式。這包括請求所有非 CPU 總線主機進入 Stop 模式并且請求總線從機進入 Stop 模式。
在 STOP 和VLPS模式 MCG和PMC 將同樣進入對應(yīng)的模式。
注意:
如果被請求的DMA發(fā)送器不能產(chǎn)生DMA 請求,導(dǎo)致設(shè)備將保持在高功耗的狀態(tài)直
到低功耗模式完全退出。
使能的 DMA 喚醒將停止進入低功耗模式,如果DMA 請求在stop 模式進入隊列中聲
明(或者如果請求在DMA 喚醒時再次進入)并且能引起SMC 設(shè)置Stop Abort標(biāo)志位。
一旦DMA喚醒完成,進入低功耗模式將重新開始。
在 DMA 喚醒的中斷將立即退出低功耗模式(對于計算操作時可選的)。
DMA喚醒可以由同步的DMA請求產(chǎn)生或者異步的DMA請求產(chǎn)生。在stop模式中,
并不是所有的外設(shè)能夠產(chǎn)生異步DMA 請求,如果該外設(shè)能夠產(chǎn)生同步的DMA請求并且
在 stop 模式下也支持異步中斷,那么該外設(shè)可以產(chǎn)生一個異步的DMA請求。
7.2.3 計算操作
計算操作:是一種使 CPU 一直訪問 SRAM 和 FLASH 讀取端口,但將所有其他總線
主機和總線從機進入Stop模式的執(zhí)行或者純計算模式的操作。計算操作在RUN 模式或者
VLP RUN模式下都可以使能。
注意:
如果不先退出計算操作,無法進入任何stop模式。
因為計算操作重復(fù)使用 stop 模式邏輯(包括在總線從機之前禁用總線主機的進入),
任何總線主機或者總線從機可以在 stop 模式下保持使能,也能在計算操作下保持使能,
包括異步中斷的產(chǎn)生和DMA請求。當(dāng)在 run模式下使能計算操作,模塊對總線主機和總
線從機的作用等同于stop模式。當(dāng)在VLP RUN 模式下使能計算操作,模塊對總線主機和
總線從機的作用等同于VLPS模式。盡管FLASH 寄存器接口禁用,MCG,PMC,SRAM和
flash 讀取端口都不受計算操作的影響。
在計算操作時,AIPS 外設(shè)空間不可訪問并且訪問會產(chǎn)生總線錯誤。在計算操作時,
私有的外設(shè)空間仍然可以訪問,包括 MCM,NVIC,IOPORT 和系統(tǒng)滴答。盡管可以通過
IOPORT訪問GPIO寄存器,但GPIO 端口數(shù)據(jù)輸入寄存器不能返回有效的數(shù)據(jù),因為時鐘
對于端口控制和中斷模塊無效。通過寫入GPIO端口數(shù)據(jù)輸出寄存器,可以控制GPIO端
口配置為輸出引腳。
計算操作由 MCM 中的 CPO 寄存器控制,只可以 CPU 訪問。設(shè)置或清 MCM 的
CPOREQ 位會進入或者退出計算操作。計算操作在探測到一個中斷(該中斷是用來服務(wù)
大部分中斷的)可以配置為自動退出。只有內(nèi)核系統(tǒng)中斷(異常,包括NMI和系統(tǒng)滴答)
并且在不退出計算操作的情況下,任何邊沿檢測中斷仍有效。
當(dāng)進入計算操作, CPOACK狀態(tài)位標(biāo)志進入已完成。當(dāng)在run模式下退出計算操作,
CPOACK 狀態(tài)位立刻取反。當(dāng)在 VLPRUN 模式下退出計算操作,退出將延時直到 PMC
控制電源消耗。這個延時通過檢測 CPOACK 位來確定什么時候 AIPS 外設(shè)空間能夠訪問
并且不產(chǎn)生總線錯誤。
DMA喚醒在計算操作中可以使用并且DMA喚醒還會引起CPOACK狀態(tài)位清零并且
AIPS外設(shè)空間在DMA 喚醒周期可以訪問。在DMA喚醒完成后,設(shè)備恢復(fù)為計算操作模
式。
7.2.4 外設(shè)休眠
一些外設(shè)支持休眠模式,在低功耗模式下可以使用寄存器的某一位禁用外設(shè)。Flash
在外設(shè)休眠模式下通過SIM中的寄存器,同樣可以進入低功耗的狀態(tài)。
外設(shè)休眠是指在如下的操作中:
CPU 在等待模式
CPU在stop模式,包括進入序列 ①
7.2.5 時鐘門
和在DMA喚醒階段
CPU 在計算操作,包括進入序列和在DMA 喚醒階段。
在 WAIT 或者 VLPW 模式下,外設(shè)休眠模式因此能用來禁用所選的總線主機或者從
機。在進入任何 stop 模式(或者計算操作)同樣可以用于禁用總線從機,以此來代替等
待總線主機應(yīng)答作為進入 stop 模式的順序的一部分。最后,可以用來禁用選中的總線主
機或從機(該總線從機或主機在DMA 喚醒狀態(tài)應(yīng)該保持未激活狀態(tài))。
如果flash在WAIT 和 STOP 模式下不能訪問,那Fash 休眠模式可用降低功耗,當(dāng)執(zhí)
行 flash 中的向量和代碼將消耗稍長時間喚醒。在計算操作下執(zhí)行代碼或者SRAM中的向
量,同樣可以用來減少電源消耗。
為了節(jié)省功耗,大部分模塊的時鐘可以通過設(shè)置SIM模塊的 SCGCx 寄存器關(guān)閉。這
些寄存器比特位在復(fù)位之后清零;同時也會禁用相應(yīng)模塊的時鐘。初始化一個模塊之前,
需要先設(shè)置SCGCx寄存器的相應(yīng)位來使能該模塊的時鐘。在關(guān)閉時鐘之前,必須確保已
經(jīng)禁用了模塊。有關(guān)此部分的詳細(xì)的資料請參見“SIM”的時鐘分配章節(jié)。
7.3 電源模塊
電源管理控制器(PMC)提供多種可選電源,用戶可以根據(jù)不同的功能需求來選擇
不同的模式以優(yōu)化電源功耗。
根據(jù)用戶對停止模式的需求,提供了多種模式,如:提供狀態(tài)駐留,邏輯單元和存儲
單元的部分掉電,或者完全斷電;或關(guān)閉某些邏輯單元和存儲單元電源;或關(guān)閉所有邏輯
單元和存儲單元電源。 I/O 狀態(tài)在所有模式操作中都會置高。下表比較可使用的電源模式。
每個運行模式都有對應(yīng)的等待和停止的模式。等待模式和ARM的睡眠模式類似。停
止模式(VLPS,STOP)和 ARM 深度睡眠模式類似。當(dāng)最大總線頻率不是必須需要的時候,
極低功耗運行操作模式可以大大減少電源消耗。
CPU 有三種基本模式:運行、等待和停止。WFI 指令包含芯片等待和停止模式。芯
片通過運行、等待和停止三種模式的不同排列來實現(xiàn)低功耗�;灸J礁鶕�(jù)需要又細(xì)劃分
了一些低功耗模式。
0.png (266.14 KB, 下載次數(shù): 60)
下載附件
2018-9-28 18:07 上傳
7.4 進入及退出電源模式
WFI指令激活等待和停止模式。處理器需要通過一個中斷退出低功耗模式。對于LLS
和VLLS 模式下,只有 LLWU 產(chǎn)生的喚醒,NMI引腳或者RESET引腳可以作為喚醒源。
當(dāng)NMI或者RESET引腳通過設(shè)置相應(yīng)的FOPT位被禁止,那么這些引腳不可作為喚醒源。
通過復(fù)位來自VLLSx的喚醒流總是有效。
注意: WFE 指令對于進入低功耗模式有一定作用,但是這不是這個指令的真正用途。
可以參考ARM文檔來獲取更多的關(guān)于WFE 的指令信息。
在 VLLS 恢復(fù),在代碼執(zhí)行開始后,I/O 引腳持續(xù)保持在靜止?fàn)顟B(tài),在未鎖定 I/O 之
前,軟件可以重新配置系統(tǒng)。RAM只有在VLLS3模式下受限。
7.5 低功耗下的模塊操作
下表說明了芯片處于各種低功耗模式下每個模塊的功能。但有一些例外的標(biāo)準(zhǔn)行為,
如計算機操作(CPO)和部分停止模式2(調(diào)試模塊被分開討論了,詳細(xì)信息見低功耗下
的調(diào)試)。數(shù)據(jù)速率(例如 2MHz 和 1Mbps)代表最高頻率或者最大數(shù)據(jù)傳輸率。另外,
以下是縮寫的解釋:
FF=所有功能,在VLPR 和 VLPW 模式,頻率是有限制的,如果模塊沒有頻率限制,
那么它的值是FF。
Async operation=交替時鐘源完全功能,提供可選時鐘保持使能。
static=模塊寄存器狀態(tài)以及相關(guān)聯(lián)的內(nèi)存會受限制;
powered=存儲器電源被保留。
low power=內(nèi)存在低功耗狀態(tài)下強制保存內(nèi)容。
OFF=模塊斷電;模塊在復(fù)位狀態(tài)下喚醒,對于時鐘,OFF意味著禁用。
wakeup=模塊可以作為芯片的喚醒源。
第8章 安全性
8.1 介紹
該設(shè)備基于 flash 模塊選擇的模式實現(xiàn)的。下面對 flash 安全和在非 flash 模塊進行全
局的概述。
8.2 Flash 安全性
Flash模塊基于 FSEC[SEC]位保存的狀態(tài)提供了對MCU 的安全性信息。反過來, MCU
驗證請求的安全性和對 FLASH 進行限制訪問。在復(fù)位期間,flash 模塊通過從 flash 配置
域的安全位讀出的數(shù)據(jù),初始化FSEC 寄存器。
注意:
安全性特征僅僅應(yīng)用于外部訪問:調(diào)試。CPU 訪問 flash 是不會受 FSEC 的狀態(tài)的影
響。
在非安全模式下,不管調(diào)試端口(SWD)還是執(zhí)行用戶代碼,所有的 flash命令在可
編程的接口都是可以用的。當(dāng)flash 處于加密狀態(tài)下(FSEC[SEC]位置 00,01或者 11),只有
編程接口允許執(zhí)行全部擦除操作。另外,在該模式下,調(diào)試端口不可訪問內(nèi)存地址。
8.3其他模塊的安全性交互
Flash 安全性可以設(shè)置哪些資源可以訪問。下面的章節(jié)描述了模塊和flash 安全性設(shè)置
之間的交互和flash安全性對非 flash模塊上的影響。
8.3.1安全性和調(diào)試的交互
當(dāng)flash 加密時,SWD接口是不能訪問MCU 的內(nèi)存資源的。
盡管大部分調(diào)試功能被禁止,但是調(diào)試器還是可以通過寫 FLASH 全部擦除位命令。
當(dāng)內(nèi)存保護時,仍然可以通過調(diào)試器全部擦除。
當(dāng)全部擦除無效,通過調(diào)試器全部擦除是不可行的。
第9章 調(diào)試
9.1 介紹
該調(diào)試系統(tǒng)是基于ARM CorSight
TM1
9.2 調(diào)試端口引腳
結(jié)構(gòu),由于引腳的約束和其他可用的資源,該調(diào)
試系統(tǒng)可以配置為具有很高的靈活性的系統(tǒng)。
該系統(tǒng)提供從外部調(diào)試接口訪問內(nèi)存和寄存器,和基本的運行/停止控制以及 2 個斷
點和 2個監(jiān)視點。
只支持一種調(diào)試接口:
Serial Wire Debug(SWD)
在上電復(fù)位之后調(diào)試引腳默認(rèn)使能為SWD功能。
9.3 SWD狀態(tài)和控制寄存器
通過ARM調(diào)試訪問接口(DAP),調(diào)試器可以訪問狀態(tài)和控制單元,在DAP總線上
的寄存器的作用如下圖。在低功耗模式下恢復(fù)和經(jīng)典的運行控制模式下,這些寄存器提供
了額外的控制和狀態(tài)。這些狀態(tài)寄存器位為調(diào)試器提供了一種更新內(nèi)核的狀態(tài)方法,該方
法不用初始化總線交叉開關(guān),使得在調(diào)試階段降低干擾。
這些 DAP 控制和狀態(tài)寄存器是比較重要的,這些寄存器不在系統(tǒng)內(nèi)存映射,它們只
能用 SWD 通過調(diào)試訪問接口(DAP)訪問。通過下表中列出的可用寄存器,MDM-AP
和調(diào)試端口1(DAP1)都可訪問。
9.5 微型追蹤緩沖區(qū)(MTB)
MTB 為 Cortex-M0+內(nèi)核,提供簡單的執(zhí)行跟蹤能力。當(dāng) MTB 使能,通過執(zhí)行跟蹤
接口,進入SRAM的可配置區(qū)域, Cortex-M0+處理器記錄的編程流可以改變MTB記錄。
隨后,芯外調(diào)試器可以提取這些跟蹤信息,這將允許重建的指令流跟蹤。MTB 不包括任
何加載/儲存數(shù)據(jù)跟蹤能力和跟蹤信息能力。
MTB同樣類似一個簡單的AHB-Lite SRAM控制器,另外提供了跟蹤能力。系統(tǒng)總線
主機,包括處理器,可以通過 AHB-Lite 接口讀取/寫入訪問所有的 SRAM,允許內(nèi)存存
儲程序和數(shù)據(jù)信息。 MTB同時將跟蹤信息存儲到SRAM并且允許總線主機訪問存儲內(nèi)存。
MTB確保跟蹤信息可以先于訪問AHB-Lite接口寫入 SRAM。
MTB包括跟蹤控制寄存器為了配置和激發(fā)MTB功能。MTB支持通過MTB DWT 模
塊的TSTART和 TSTOP 控制功能觸發(fā)。
9.6 在低功耗模式下的調(diào)試
在低功耗模式下,調(diào)試模塊保持靜止或者斷電。在低功耗模式期間,調(diào)試器不能獲取
任何調(diào)試數(shù)據(jù)信息。所以調(diào)試模式保持靜止,系統(tǒng)一旦退出低功耗模式,調(diào)試端口會恢復(fù)
功能。因此調(diào)試器邏輯是斷電的,調(diào)試器在恢復(fù)的過程中會復(fù)位,而且一旦低功耗模式,
需要重新配置調(diào)試器。
9.7 調(diào)試&安全
當(dāng) flash 加密時, 為了防止取得加密的數(shù)據(jù),調(diào)試端口功能被限制使用。在安全狀態(tài)
下調(diào)試器仍可以訪問狀態(tài)寄存器而且可以設(shè)定設(shè)備的當(dāng)前安全狀態(tài)。對于一個加密的設(shè)備,
調(diào)試器只可以執(zhí)行完全擦除操作。
39.3.2 發(fā)送器功能描述
本節(jié)介紹UART發(fā)送器的總體框圖,以及專門用于發(fā)送中止和空閑字符的功能。
發(fā)送器輸出(UART_TX)空閑狀態(tài)默認(rèn)為邏輯高電平,復(fù)位之后,緊跟著C3[TXINV]
被清除。發(fā)送器的輸出通過設(shè)置 C3[TXINV]倒轉(zhuǎn)。發(fā)送器通過設(shè)置 C2[TE]位啟用。發(fā)送
器發(fā)出一個前導(dǎo)符,是一個完整的字符幀的空閑狀態(tài)。之后發(fā)送器保持空閑狀態(tài),直到數(shù)
據(jù)在發(fā)送數(shù)據(jù)緩沖區(qū)中。通過寫入到 UART 數(shù)據(jù)寄存器,程序?qū)?shù)據(jù)存儲到發(fā)送數(shù)據(jù)緩
沖區(qū)中。
UART 發(fā)送器的核心元素是,根據(jù)在 C1[M]、C2[M10]和 BDH[SBNS]控制位的設(shè)置
的 10位到13 位長發(fā)送移位寄存器。本節(jié)的其余部分,假設(shè)C1[M], C2[M10]和BDH[SBNS
被清除,選擇正常的8 位數(shù)據(jù)模式。在8 位數(shù)據(jù)模式下,移位寄存器持有起始位,8個數(shù)
據(jù)位,一個停止位。當(dāng)發(fā)送移位寄存器對一個新的 UART 字符有效時,等待在發(fā)送數(shù)據(jù)
寄存器的值被轉(zhuǎn)移到移位寄存器,同時波特率時鐘同步,并發(fā)送數(shù)據(jù)寄存器空(S1[TDRE)
狀態(tài)標(biāo)志設(shè)置,以指示可能會被寫入發(fā)送數(shù)據(jù)緩沖區(qū)UART_D 另一個字符。
當(dāng)一個停止位被移出UART_TX引腳后,如果發(fā)送數(shù)據(jù)緩沖區(qū)中沒有新的字符,發(fā)送
器設(shè)置傳輸完成標(biāo)志位并且進入UART_TX高的空閑模式,等待傳輸字符。
寫 0 到 C2[TE]中不會立即關(guān)閉發(fā)送器。必須首先完成當(dāng)前正在發(fā)送的活動。這包括
正在發(fā)送中的數(shù)據(jù)字符,等待空閑字符和等待中止符。
39.3.2.1 發(fā)送中止與等待空閑
UART_C2[SBK]位發(fā)送中止符,原本是用來獲得舊的打字接收器的信息。中止符是一
個完整的邏輯 0,10 位到 12 位包含開始和停止位的位時間的字符。13 個位時間的中斷,
可以通過設(shè)置UART_S2[BRK13]啟用。通常情況下,程序會等待UART_S1[TDRE]被設(shè)置
以顯示消息的最后一個字符被移到發(fā)送移位寄存器中,寫1,然后 寫0到UART_C2[SBK]
位來發(fā)送中止字符。只要移位寄存器可用,就會將一個中止符排進要發(fā)送的隊列。如果
UART_C2[SBK]保持為 1 時,當(dāng)隊列中的中止數(shù)據(jù)進入移位寄存器時,同步波特率時鐘,
同時一個額外的中止字符被排隊。如果接收設(shè)備是另一個飛思卡爾半導(dǎo)體UART,在所 有
數(shù)據(jù)位和幀錯誤(UART_S1[FE]= 1)出現(xiàn)時,中止符被接收為0。
當(dāng)使用空閑線喚醒時,在兩個信息之間喚醒任何休眠的接收器,一個完整的空閑(邏
輯 1)字符時間是需要。通常情況下,程序會等待 UART_S1[TDRE]設(shè)置為顯示消息的最
后一個字符移到發(fā)送移位寄存器,然后寫 0,然后寫 1 到 UART_C2[TE]位。只要移位寄
存器可用,這個動作隊列發(fā)送一個空閑字符。只要在移位寄存器中的字符沒有完成而
UART_C2[TE]被清除,UART 發(fā)送器就不會釋放UART_TX引腳的控制。
間隔字符的長度會受到 UART_S2[BRK13],UART_C1[M]和 UART_C4[M10]位的影
響,如下表所示。
39.3.3 接收器功能描述
在本節(jié)中,接收器的框圖是對整體接收器的功能描述的一個引導(dǎo)。接著,用于重建接
收器的數(shù)據(jù)的數(shù)據(jù)采樣技術(shù)被更詳細(xì)地描述。最后,對接收器兩個變化的喚醒功能做出解
釋。
設(shè)置UART_S2[RXINV],接收器的輸入被倒轉(zhuǎn)。設(shè)置UART_C2[RE]位接收器被啟用。
字符幀由一個起始位(邏輯0),8到 10 個數(shù)據(jù)位(MSB或LSB在前),一個或兩個停止位
(邏輯1)組 成。9位或 10位數(shù)據(jù)模式的信息,請參閱為“8位, 9 位和 10 位數(shù)據(jù)模式” ①
當(dāng)程序檢測到接收數(shù)據(jù)寄存器滿時(UART_S1[RDRF= 1),它通過閱讀UART_D寄存
器,來從接收數(shù)據(jù)寄存器中得到數(shù)據(jù)。對于標(biāo)志清空的詳細(xì)信息請參閱“中斷和狀態(tài)標(biāo)
。
在以后的討論中,我們都假設(shè)UART配置成普通的8位數(shù)據(jù)模式。
當(dāng)移位寄存器接收到停止位后,如果接收數(shù)據(jù)寄存器未滿,數(shù)據(jù)字符被傳輸?shù)浇邮諗?shù)
據(jù)寄存器,且接收數(shù)據(jù)寄存器滿(UART_S1 RDRF)狀態(tài)標(biāo)志設(shè)置。如果UART_S1[RDRF]
已經(jīng)置位表明接收數(shù)據(jù)寄存器(緩沖區(qū))已經(jīng)滿了,則溢出(OR)狀態(tài)標(biāo)志被置位,且
新的數(shù)據(jù)丟失。由于UART 接收器有雙緩沖區(qū),在UART_S1[RDRF]被設(shè)置后,程序有一
個完整字符的時間,將接收數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)讀出,以避免接收器溢出數(shù)據(jù)丟失。
39.3.3.1 數(shù)據(jù)采樣技術(shù)
UART 接收器,支持 4 倍和 32 倍的波特率時鐘之間的過采樣率。當(dāng) UART_RX 的串
行數(shù)據(jù)輸入引腳上檢測到下降沿,接收器根據(jù)過采樣率開始采樣邏輯電平。在3 個邏輯1
的樣本后,下降沿被定義為邏輯 0 采樣。過采樣波特率時鐘把位時間從 1 到 OSR(OSR
配置的過采樣率)分為4至32段。當(dāng)一個下降沿被定位,分別在(OSR/ 2),(OSR/ 2)
+1,(OSR/ 2) +2上采集樣本,共采集3個樣本以保證這是一個真正的開始位而不是噪音。
如果這三個樣本中的至少兩個是0,則接收器假定它是同步到接收的字符。在接收器被認(rèn)
為是同步前,如果另一個下降沿被檢測到,則接收機從第一分部重新啟動采樣。
然后接收器采樣每個位時間,包括的起始位和停止位,在(OSR/ 2),(OSR/ 2)+1,
和(OSR/ 2)+2,以確定該位的邏輯電平。邏輯電平被解釋為大多數(shù)位時間期間采取的樣
本。當(dāng)接收到的字符被傳輸?shù)浇邮諗?shù)據(jù)緩沖區(qū)時,如果樣本在任何位時間,包括起始位和
停止位,字符幀的位與該位的邏輯電平不匹配時,噪聲標(biāo)志(UART_S1[NF])被設(shè)置。
當(dāng) UART 接收器被配置為波特率時鐘的沿跳變采樣時,在每個接收到的比特的數(shù)目
被變?yōu)殡p倍(從 1到OSR* 2)。然后采樣開始數(shù)據(jù)位從OSR, OSR1和OSC2 中采樣得到。
沿跳變的采樣時鐘為4 倍到 7 倍過采樣率并且對較高的過采樣率來說是可選的。
下降沿檢測邏輯持續(xù)的檢測下降沿。如果檢測到一個下降邊緣,采樣時鐘同步到位時
間(除非重新同步已被禁用)。這提高了在存在噪聲或不匹配的波特率情況下的接收機的
可靠性。它并不能提高最壞的情況下分析,因為在字符幀中的任何地方,有一些字符不具
有任何額外的下降沿。
在一個幀錯誤的情況下,假設(shè)接收的字符不是中止符,一個下降沿的采樣邏輯被填充
3個邏輯 1,則之后幾乎可以立即檢測到新的起始位。
39.3.3.2 接收器喚醒操作
接收器喚醒是一種硬件機制,它允許 UART 接收器可以忽略用于不同的 UART 接收
器的消息字符。在這樣的系統(tǒng)中,所有的接收器判斷每個消息的第一個字符,并且它們盡
快確定該消息是不是為不同的接收器,并寫邏輯1 到接收器喚醒控制位UART_C2[RWU]。
當(dāng) RWU 位被置位且 UART_S2[RWUID]位被置位時,與接收器相關(guān)聯(lián)的狀態(tài)標(biāo)志(除空
閑位 IDLE 外)被禁止,從而消除了軟件處理不重要的消息字符的開銷。在一個消息的結(jié)
尾,或在下一個消息開始處,所有的接收器自動地將 UART_C2[RWU]置為 0,從而所有
39.3.3.2.1 空閑線喚醒
當(dāng)喚醒被清除時,接收器被設(shè)置為空閑線喚醒。在這種模式下,當(dāng)接收器檢測到空閑
線的一個滿字符時間,UART_C2[RWU]自動清零。UART_C1[M]和 UART_C4[M10]控制
位選擇 8 位到 10 位數(shù)據(jù)模式并且 UART_BDH[SBNS]位選擇 1 位或 2 位停止位數(shù)字,以
此來確定需要多少空閑位時間來構(gòu)成一個完整的字符時間。因為包含開始位和停止位,所
以共需要 10至13 位的時間。
當(dāng) UART_C2[RWU]為 1, ART_S2[RWUID]為 0時,不設(shè)置的UART_S1[IDLE]標(biāo)志,
但空閑狀態(tài)能喚醒接收器。當(dāng)UART_S1[RDRF]標(biāo)志被設(shè)置并產(chǎn)生一個中斷(如果中斷被
啟用),接收器喚醒并等待下一個消息的第一個數(shù)據(jù)字符。當(dāng) UART_S2[RWUID]為 1 時,
無論UART_C2[RWU]為0或1,任何空閑的條件設(shè)置UART_S1[IDLE]標(biāo)志并產(chǎn)生中斷(如
果中斷被啟用)。
空閑線類型(UART_C1[ILT)控制位,它選擇兩種方式中的一種來檢測空閑線。當(dāng)
UART_C1[ILT]被清零,空閑位在起始位或停止位或字符結(jié)束時的邏輯 1 位之后開始,一
直計數(shù)到一個完整的空閑字符時間結(jié)束。當(dāng)UART_C1[ILT]被置位,空閑位計數(shù)器在停止
位時間后才啟動,所以空閑檢測不受到前一消息的最后一個字符中的數(shù)據(jù)的影響。
39.3.3.2.2 地址標(biāo)志喚醒
當(dāng)設(shè)置喚醒時,接收器被設(shè)置為地址標(biāo)志喚醒。在此模式下,當(dāng)接收器檢測到一個接
收字符的 MSB為邏輯“1”時,UART_C2[RWU]自動清零。
地址標(biāo)志喚醒允許信息包含空閑字符,但需要將最高有效位保留為地址幀使用。在接
收到停止位之前,地址幀中的 MSB為邏輯“1”時,將清除UART_C2[RWU]位,并設(shè)置
UART_S1[RDRF]標(biāo)志。在這種情況下,即使接收器在大多數(shù)字符時間里處于休眠狀態(tài),
MSB集的字符仍可以被接受。
39.3.3.2.3 匹配地址操作
當(dāng) UART_C4[MAEN1]或 UART_C4[MAEN2]位被置位時,匹配地址操作被使能。在
這個功能中,通過UART_RX 引腳接收的幀與邏輯緊接停止位之前的邏輯1 的位置被認(rèn)為
是一個地址,并且與相關(guān)聯(lián)的 MA1 或 MA2 寄存器進行比較。如果比較匹配,幀只傳輸
到接收緩沖區(qū),并且UART_S1[RDRF]被置位。
隨后接收到的所有的數(shù)據(jù)幀中停止位之前的邏輯0的位置,被認(rèn)為是與該地址相關(guān)聯(lián)
的數(shù)據(jù),并轉(zhuǎn)移到接收數(shù)據(jù)緩沖器。如果沒有明顯的地址匹配時,則沒有傳輸?shù)浇邮諗?shù)據(jù)
緩沖,邏輯零位的位置和之后的所有幀緊接停止位也被丟棄。如果UART_C4[MAEN1]和
UART_C4[MAEN2]位都無效①,接收機正常工作和接收的所有數(shù)據(jù)被傳輸?shù)浇邮諗?shù)據(jù)緩沖
器。
MA1和 MA2寄存器中的匹配地址的操作與以上功能相同。
•如果只有一個UART_C4[MAEN1]和UART_C4[MAEN2]有效 ②,標(biāo)記的地址僅與相
關(guān)聯(lián)的匹配寄存器進行比較,并且只有當(dāng)匹配時,數(shù)據(jù)才傳送到接收數(shù)據(jù)緩沖區(qū)。
•如果UART_C4[MAEN1]和UART_C4[MAEN2]都有效,標(biāo)記的地址和兩個匹配寄存
器進行比較,并且只有當(dāng)都匹配時,數(shù)據(jù)才被傳送。
39.3.4 額外的UART功能
以下部分展示了UART 的額外功能。
39.3.4.1 8位、9位和10位數(shù)據(jù)模式
UART系統(tǒng),發(fā)送器和接收器,可以通過設(shè)置UART_C1[M]成為9位數(shù)據(jù)模式,或通
過配置 UART_C4[M10]成為 10 位數(shù)據(jù)操作模式。在 9位數(shù)據(jù)模式中,UART 數(shù)據(jù)寄存器
的最高有效位的左側(cè)是第9 位,在 10 位模式,是第10 個數(shù)據(jù)位。對于發(fā)送數(shù)據(jù)緩沖器,
這些位被存儲在 UART_C3 的 T8 和 T9 中。對于接收器,這些位存放在 UART_C3[R8]和
UART_C3[R9]中。
為了能夠一致的寫發(fā)送數(shù)據(jù)緩沖區(qū),在寫 UART_C3[T8]、UART_C3[T9]之前先寫
UART_D。
如果要被發(fā)送的新的比特字符的第九和第十位與前一個字符是相同,就沒有必要再次
寫T8 和T9。當(dāng)數(shù)據(jù)被從發(fā)送數(shù)據(jù)緩沖器傳送到發(fā)送移位寄存器,T8和 T9中的值是在同
時從UART_D復(fù)制到移位寄存器。
9位數(shù)據(jù)模式通常用于奇偶校驗,可以允許8位的數(shù)據(jù)加上第九位的奇偶校驗,或用
于地址標(biāo)志喚醒,所以第九位也可以作為喚醒位。10 位數(shù)據(jù)模式通常用于奇偶校驗和地
址標(biāo)志喚醒,從而第九位可以作為喚醒位,第 10 位作為奇偶校驗位。在自定義的協(xié)議,
第九和/或第十位,也可以作為軟件控制標(biāo)記。
39.3.4.2 循環(huán)模式
當(dāng) UART_C1[LOOPS]被置位時,在同一個寄存器的 UART_C1[RSRC]位選可以擇循
環(huán)模式(UART_C1[RSRC]= 0)或單線模式(UART_C1[RSRC]=1)。循環(huán)模式獨立于在外
部系統(tǒng)中的連接,有時用于檢測軟件,幫助隔離系統(tǒng)問題。在此模式下,發(fā)射機的輸出在
內(nèi)部連接到接收器輸入并且UART 不可使用UART_RX 引腳。
39.3.4.3 單線操作
當(dāng) UART_C1[LOOPS]被設(shè)置,在同一個寄存器的 RSRC 位可以選擇循環(huán)模式
(UART_C1[RSRC]=0)或單線模式(UART_C1[RSRC]=1)。單線模式實現(xiàn)半雙工串行連
接。接收器在內(nèi)部連接到發(fā)射器的輸出UART_TX引腳(UART_RX引腳不使用)。
在單線模式中,UART_C3[TXDIR]位控制著 UART_TX 引腳的串行數(shù)據(jù)的方向。當(dāng)
UART_C3[TXDIR]被清零,UART_TX 引腳作為 UART 接收器和發(fā)射器的輸入暫時從
UART_TX 引腳斷開,從而一個外部設(shè)備可以發(fā)送串行數(shù)據(jù)到接收器。當(dāng)
UART_C3[TUXDIR]被置位時,UART_TXD 引腳被發(fā)射器作為輸出腳,內(nèi)部環(huán)回連接被
禁用。因此導(dǎo)致接收器不能接收由發(fā)射機發(fā)送出去的字符。
39.3.5 中斷和狀態(tài)標(biāo)志
UART系統(tǒng)產(chǎn)生三個獨立的中斷,從而減少需要用軟件來隔離的中斷的數(shù)量。一個中
斷與發(fā)射器的TDRE 與TC 事件對應(yīng)。另一種中斷與接收器的RDRF,IDLE,RXEDGIF,
和 LBKDIF事件對應(yīng)。第三個中斷用于OR,NF,F(xiàn)E,和PF事件發(fā)生錯誤的狀況。每10
個這樣的中斷源可以被本地中斷使能掩碼單獨屏蔽。當(dāng)本地掩碼被清除,以禁止產(chǎn)生中斷
請求時,該標(biāo)志可以通過軟件查詢。
UART發(fā)送器有兩個狀態(tài)標(biāo)志,這兩個狀態(tài)標(biāo)志可以選擇性的產(chǎn)生硬件中斷請求。發(fā)
送數(shù)據(jù)寄存器狀態(tài)為空(UART_S1[TDRE])表示在發(fā)送數(shù)據(jù)緩沖區(qū)有空間可以寫另一個
發(fā)送字符到UART_D。如果發(fā)送中斷使能(UART_C2[TIE])位被置位,當(dāng)UART_S1[THERE]
被置位,就會請求一個硬件中斷。發(fā)送完成(UART_S1[TC]=1)表明傳輸器完成了對所
有數(shù)據(jù)、前導(dǎo)符、間隔字符的發(fā)送,并且伴隨著UART_TX,處于無效電平。此標(biāo)志常常
使用在有調(diào)制解調(diào)器的系統(tǒng)中,以用來確定當(dāng)前關(guān)閉調(diào)制解調(diào)器是否安全。如果發(fā)送完成,
中斷使能(UART_C2[TCIE])位被置位,當(dāng)UART_S1[TC]被設(shè)置,一個硬件中斷被請求。
不同于硬件中斷的是,如果相應(yīng)的 UART_C2[TIE]或 UART_C2[TCIE]本地中斷屏蔽被清
除,軟件輪詢可以用來監(jiān)測UART_S1[TDRE]和UART_S1[TC]狀態(tài)標(biāo)志,。
當(dāng)程序檢測到接收數(shù)據(jù)寄存器滿時(UART_S1[RDRF]=1),它通過讀取 UART_D,
從接收數(shù)據(jù)寄存器得到的數(shù)據(jù)。通過讀UART_D,UART_S1[RDRF]標(biāo)志被清除。
IDLE 狀態(tài)標(biāo)志包含邏輯,以防止當(dāng)在較長的一段時間內(nèi)UART_RX 接收線保持空閑
狀態(tài)時重復(fù)置位。寫 1 到的 UART_S1[IDLE]標(biāo)志,可清除 IDLE。當(dāng) UART_S1[IDLE]已
被清除后,只有在接收器接收到至少一個新的字符,并且已經(jīng)設(shè)置 UART_S1[RDRF]時,
UART_S1[IDLE]才能被重新設(shè)置。
如果接收到的字符里檢測到相關(guān)的錯誤,會導(dǎo)致UART_S1 [RDRF]被設(shè)置,同時,錯
誤標(biāo)志、噪音標(biāo)志(UART_S1[NF])、幀錯誤(UART_S1[FE])和奇偶校驗錯誤標(biāo)志
(UART_S1[PF]),都在同一時間被置位。在溢出情況時,這些標(biāo)志都不被設(shè)置。
當(dāng)一個新的字符準(zhǔn)備從接收移位寄存器傳輸?shù)浇邮諗?shù)據(jù)緩沖區(qū)時,如果
UART_S1[RDRF]已經(jīng)被設(shè)置,則溢出標(biāo)志(UART_S1[OR])被置位來代替數(shù)據(jù),且連同
與數(shù)據(jù)相關(guān)的NF,F(xiàn)E 或 PF條件丟失。
在任何時候, UART_RX 的串行數(shù)據(jù)輸入引腳上活躍的 邊緣,會使
UART_S2[RXEDGIF]標(biāo)志置位。通過寫1 到UART_S2[RXEDGIF]標(biāo)志,它被清除。此功
能依賴于接收器被使能(UART_C2[RE]=1)。
0.png (132.26 KB, 下載次數(shù): 50)
下載附件
2018-9-28 18:11 上傳
D7(TDRE)—發(fā)送數(shù)據(jù)寄存器空標(biāo)志。當(dāng)發(fā)送數(shù)據(jù)從發(fā)送數(shù)據(jù)緩沖區(qū)轉(zhuǎn)移到發(fā)送移
位寄存器時,TDRE被復(fù)位,為緩沖區(qū)的新數(shù)據(jù)騰出空間。要清除TDRE:在 TDRE置位
情況下,讀UART_S1,之后寫UART數(shù)據(jù)寄存器(UART_D)。TDRE=0,發(fā)送數(shù)據(jù)寄存
器(緩沖區(qū))滿;TDRE=1,發(fā)送數(shù)據(jù)寄存器(緩沖區(qū))空。
D6(TC)—發(fā)送完成標(biāo)志。該位與 UART0 中大部分一樣。不一樣的部分:UART1
與UART2模塊下, TC自動除之前還需要滿足一些條件,需要在TC被置位下,讀UART_S1。
之后的清除操作與UART0模塊下的一樣。
D5(RDRF)—接收數(shù)據(jù)寄存器滿標(biāo)志。當(dāng)數(shù)據(jù)從接收移位寄存器轉(zhuǎn)移到接收數(shù)據(jù)寄
存器(UART_D)中時,RDRF 被置位。在 RDRF 被置位情況下,讀 UART_S1,之后再
讀數(shù)據(jù)寄存器(UART_D)可以清除RDRF。RDRF=0,接收數(shù)據(jù)寄存器空;RDRF=1,接
收數(shù)據(jù)寄存器滿。
D4(IDLE)—空閑線標(biāo)志。當(dāng) UART 接收線路空閑時,IDLE 被置位。當(dāng) ILT 被清
除,在開始位之后接收器開始計數(shù)空閑位的時間。如果接收字符全1,這些位的時間和停
止位的時間達(dá)到完整的字符的邏輯高,10或 11 位(根據(jù) M控制位決定)的時間,需要的
接收器檢測到空閑線。當(dāng)ILT 被置位,在停止位之后接收器才開始計空閑線時間。接收器
檢測空閑線時,在結(jié)束的前一個字符的停止位和邏輯高位時間不計入完整的字符的邏輯高
接收器所需的時間。
若要清除 IDLE,可以在 IDLE 置位的情況下讀UART_S1,然后讀 UART數(shù)據(jù)寄存器
(UART_D),則 IDLE 被清除。 IDLE 清除之后,只有當(dāng)接收器收到一個新的字符且RDRF
被置位后,IDLE 才可以被重置。IDLE 只被設(shè)置 1 次,即使接收線保持長時間的空閑。
IDLE=0,無空閑線被檢測;IDLE=1,有空閑線被檢測。
D3(OR)—接收溢出標(biāo)志。大部分與UART0相同。不同的是:如果要清OR,則在
OR 被置位的情況下,讀UART_S1,并且之后讀UART 數(shù)據(jù)寄存器(UART_D)。OR=0,
無溢出;OR=1,接收溢出(新的數(shù)據(jù)丟失)。
D2(NF)—噪音標(biāo)志。接收器使用的先進的采樣技術(shù),該技術(shù)需要獲取接收的 7 個
開始位中的樣本和3個數(shù)據(jù)位與停止位中的樣本。如果數(shù)據(jù)幀中的任意該樣本與其他樣本
不相符合,則 NF 與 RDRF 一同被置位。如果要清 NF,則在 NF 被置位的情況下,讀
UART_S1,并且之后讀UART數(shù)據(jù)寄存器(UART_D)。NF=0,無噪聲被檢測到;NF=1,
UART_D接收到的字符數(shù)據(jù)中檢測到噪聲。
D1(FE)—幀錯誤標(biāo)志。大部分與UART0 相同。不同的是:如果要清FE,則在 FE
被置位的情況下,讀UART_S1,并且之后讀UART數(shù)據(jù)寄存器(UART_D)。
D0(PF)—奇偶校驗錯誤標(biāo)志。大部分與 UART0 相同。不同的是:如果要清 PF,
則在PF被置位的情況下,讀UART_S1,并且之后讀UART 數(shù)據(jù)寄存器(UART_D)。
40.2.6 UART狀態(tài)寄存器2(UARTx_S2)
該寄存器包含一個只讀狀態(tài)標(biāo)志。
該寄存器介紹大部分與 UART0 一致。不同的是:當(dāng) LBKDE 位被置位,幀錯誤被抑
制,中止檢測的閾值由 10位變?yōu)?11位,防止作為 LIN 中止符號的0x00 數(shù)據(jù)字符的誤檢
測。
D7(TDMAS)—發(fā)送器DMA選擇。如果TIE①被置位,TDMAS將配置發(fā)送數(shù)據(jù)寄存
器空標(biāo)志位(TDRE②
40.3 功能描述
),來形成中斷或者DMA請求。說明:如果UART_C2[TIE]被清零,
那TDRE DMA和TDRE中斷信號在TDRE標(biāo)志置位時無效,并且無視TDMAS的狀態(tài)。如果
TIE和TDMAS同時被置位,然后UART_C2[TCIE]必須被清零。并且UART_D在服務(wù)一個
DMA請求時不能被寫入。TDMAS=0,如果TIE和TDRE標(biāo)志位被置位,TDRE中斷信號觸
發(fā)中斷服務(wù)例程;TDMAS=1,如果TIE被置位而且TDRE標(biāo)志位被置位,TDRE DMA請求
信號將會請求一個DMA傳輸器。
D6,保留位,只讀。值恒為0。
D5(RDMAS)—接收完成 DMA 選擇。如果 RIE 被置位,RDMAS 將配置接受數(shù)據(jù)
寄存器滿標(biāo)志位(RDRF),來形成中斷或者DMA 請求。說明:如果RIE 被清零,那RDRF
DMA和RDRF中斷信號在RDRF標(biāo)志置位時無效,并且無視RDMAS的狀態(tài)。 RDMAS=0,
如果RIE 和RDRF標(biāo)志位被置位,RDRF中斷請求將觸發(fā)中斷服務(wù)例程。RDMAS=1,如
果 RIE 被置位而且RDRF標(biāo)志位被置位,RDRF請求信號將觸發(fā)一個DMA傳輸器。
D4~D0,只讀,值恒為0。
UART 在 MCU 和遠(yuǎn)程設(shè)備之間(包括其他 MCU)支持全雙工,異步,NRZ 串行通
信和波特率發(fā)生器,發(fā)送器和接收器模塊。UART包括波特率發(fā)生器,發(fā)送器,接收器模
塊。UART 發(fā)送器和接收器獨立地操作,盡管他們使用相同的波特率發(fā)生器。MCU 監(jiān)控
UART的狀態(tài),傳送寫的數(shù)據(jù),處理收到的數(shù)據(jù)。下面描述UART的每個模塊。
UART通信需要發(fā)送器和接收器,這兩個模塊都需要從獨立的時鐘源獲取波特率,使
得他們的波特率相同 ①
40.3.2 發(fā)送器功能描述
。所允許的波特率偏差取決于接收器對于起始位邊沿的同步和位采
樣是如何進行的。
MCU 在下降沿,再次同步到位邊界。最壞的情況下,每幀的 10 或者 11、12 位不傳
輸,以至于在波特率中不匹配的誤差被累積起來,從而對整個字符時間造成影響。在整個
總線時鐘被晶振驅(qū)動的FreescaleUART系統(tǒng),對于 8位數(shù)據(jù)格式被允許的波特率不匹配要
控制在±4.5%,對 9 位數(shù)據(jù)格式被允許的為±4%。盡管波特率分頻因子的設(shè)置不能產(chǎn)生
一直匹配的標(biāo)準(zhǔn)波特率,它常常允許有一點偏差,不妨礙通信。
該節(jié)大部分與UART0相同。
與 UART0 不同的是:UART1、UART2 發(fā)送器的核心元素是,根據(jù)在 UART_C1[M]
與 UART_BDH[SBNS]控制位的設(shè)置的 10、11 或 12 位長的發(fā)送移位寄存器。UART1、
UART2選擇正常的8位數(shù)據(jù)模式,是通過清除UART_C1[M],UART_BDH[SBNS]。
與 UART0不同的是: UART1、 UART2中寫0到UART_C2[TE]是將引腳變?yōu)橥ㄓ肐/O
引腳,而不是UART0中的關(guān)閉發(fā)送器。
40.3.2.1 發(fā)送中止與等待空閑
該節(jié)大部分與UART0相同。
與 UART0 不同的是:UART1、UART2 的中止符是一個完整的邏輯 0,10 位包含開
始和停止位的位時間的字符。
比 UART0 多的功能描述是:有一種可能就是移位寄存器完成當(dāng)前工作,如果當(dāng)
40.3.3 接收器功能描述
該節(jié)大部分與UART0相同。
與 UART0 不同的是:字符幀由一個起始位(邏輯 0),8 個數(shù)據(jù)位(LSB 在前),一
個或兩個停止位(邏輯1)組成。
與 UART0不同的是:UART1、UART2中無 10位數(shù)據(jù)模式,只有8、9位數(shù)據(jù)模式。
40.3.3.1 數(shù)據(jù)采樣技術(shù)
該節(jié)大部分與UART1相同;
與UART0不同的是:UART1、UART2接收器的采樣頻率采用16x的波特率時鐘。
與UART0不同的是:UART1、UART2的 16x 波特率時鐘把位時間分為16 段,分別
標(biāo)記為 UART_D[RT1]~UART_D[16]。
與 UART0 不同的是:UART1、UART2 對于開始位的判斷,采樣的樣本位為
UART_D[RT3],UART_D[RT5],UART_D[RT7]上采集樣本;對于邏輯電平的判斷采樣的
是 UART_D[RT8],UART_D[RT9],UART_[RT10];而 UART0 中對起始位和邏輯電平的
判斷都是用的(OSR/ 2),(OSR/ 2)+1,和(OSR/ 2)+2。
與 UART0 不同的是:UART1、UART2 接收器中無“在接收器被認(rèn)為是同步前,如
果另一個下降沿被檢測到,則接收機從第一分部重新啟動采樣”此概念。
與 UART0不同的是:UART1、UART2中增加了以下概念�!皩τ谄鹗嘉粊碇v,如果
UART_D[RT3],UART_D[RT5],UART_D[RT7]上采集樣本為 0,那么即使_D[RT8],
UART_D[RT9],UART_[RT10]上采集的是1,起始位也被認(rèn)為是1。”
與 UART0 不同的是:UART1、UART2 無“接收器被配置為波特率時鐘的沿跳變采
樣”的概念。
與 UART0不同的是:UART1、UART2 中增加了以下概念“在一個幀錯誤的情況下,
直道幀錯誤標(biāo)志 UART_S1[FE]被清之前,接收器都被禁止接收任何新的字符。接收移位
寄存器仍然工作,但當(dāng) UART_S1[FE]保持置位時,一個完整的字符無法轉(zhuǎn)移到接收數(shù)據(jù)
緩沖區(qū)�!�
40.3.3.2 接收器喚醒操作
對UART1、UART2 接收器喚醒的邏輯概念描述與UART0相同,不做解釋。
40.3.3.2.1 空閑線喚醒
大部分與UART0相同。
與 UART0 不同的是:UART1、UART2 是通過 UART_C1[M]來控制 8 位或 9 位數(shù)據(jù)
模式。而UART0中是通過UART_C1[M]和UART_C4[M10]來控制8位或10位數(shù)據(jù)模式。
所以UART1、UART2中一個完整的字符時間要10或11或12 位時間(包括起始位),而
UART0中要 10到 13位時間(包括起始位)。
40.3.3.2.2 地址標(biāo)志喚醒
大部分與UART0相同。
與 UART0不同的是:UART1、UART2清除UART_C2[RWU]位的條件是接收器檢測
到 1 個或兩個接收到的字符中,UART_DBH[SBNS]=1,MSB 位為邏輯 1 時,
UART_C2[RWU]自動清除。而在 UART0中,只要檢測到一個接收到的字符的MSB 位為
邏輯 1時UART_C2[RWU]即自動清除。
40.3.4 中斷和狀態(tài)標(biāo)志
大部分邏輯概念描述與UART0 相同。
與 UART0不同的是:UART_S1[RDRF]標(biāo)志位的清除方法不同。UART1、UART2 中
清 UART_S1[RDRF]是通過在 UART_[RDRF]置位的情況下讀 UARTxS1,之后再讀
UART_D來清除 RDRF。
與 UART0不同的是:IDLE 標(biāo)志位的清除方法不同。UART1、UART2 中清 IDLE 是
通過在UART_S1[IDLE]被置位的情況下,讀UARTxS1,之后再讀UART_D來清除IDLE。
與UART0不同的是:UART1、UART2中增加了以下概念:“當(dāng)使用輪詢時,該序列
很自然的滿足了正常過程中的用戶程序。如果硬件中斷被使用,UARTxS1 必須在中斷服
務(wù)例程(ISR)中被讀取。通常情況下,這是在ISR中完成從而來檢測接收是否錯誤,所
以順序可以自動滿足”。
40.3.5 DMA操作
在發(fā)送器中,TDRE 標(biāo)志和 TC 可以配置為維護一個 DMA 傳輸請求。在接收端,標(biāo)
志 RDRF、IDLE、LBKDIF可以配置為維護一個DMA 傳輸請求。下面的表顯示了配置位
的設(shè)置,要求要配置每個標(biāo)記為DMA 操作。
當(dāng)一個標(biāo)志配置為一個DMA請求,它相關(guān)的DMA請求斷言,當(dāng)標(biāo)志被設(shè)置。當(dāng)RDRF
或空閑標(biāo)志 IDLE 被配置為一個 DMA 請求,清除機制對于先讀取 UART_S1 隨后讀
UART_D,并不會清除相關(guān)的標(biāo)記。DMA 請求依然會有效,直到收到一個 DMA 操作完
成的指示。當(dāng)收到這個指示,該標(biāo)記位和相關(guān)的 DMA 請求標(biāo)志位會被清除。如果 DMA
操作未能消除情況,必會造成DMA請求產(chǎn)生另一個請求。
40.3.6 額外的UART功能
40.3.6.1 8位、9位數(shù)據(jù)模式
邏輯原理與UART0 大致相同。
與 UART0 不同的是:UART1、2 無 10 位數(shù)據(jù)模式,且是通過設(shè)置 UART_C1[M]來
配置為 9 位數(shù)據(jù)模式的。對于發(fā)送數(shù)據(jù)緩沖器,這些位被存儲在 UART_C3[T8](UART0
存放在T8,T9中) 。對于接收器,這些位存放在UART_C3[R8](UART0存放在R8,R9
中) 。
40.3.6.2 停止模式操作
在處于所有的停止模式下,UART模塊的時鐘都將停止。在stop3④模式下,沒有UART
模塊寄存器會受到影響。因為時鐘停止了,只有在停止和VLPS⑤
40.3.6.3 循環(huán)模式
模式下,只要一退出停止
模式,UART模塊就會立即恢復(fù)。當(dāng)有字符正在發(fā)送或接收時,軟件必須確保UART不會
進入停止模式。
完全與 UART0 相同,此外,在此模式下,UART1、UART2 中的接收引腳恢復(fù)到普
通 I/O 口引腳。
40.3.6.4 單線操作
完全與 UART0 相同,此外,在此模式下,UART1、UART2 中的接收引腳恢復(fù)到普
I/O
42.4.3 使能TSI模塊
TSI 模塊可以再運行時實現(xiàn)全部的功能,等待和低功耗模式。TSI_GENCS[TSIEN]必
須被置位來使能在運行和等待模式下的 TSI 模塊。當(dāng) TSI_GENCS[STPE]位被置位,這便
允許TSI模塊在低功耗模式下工作。
42.4.4 軟件和硬件觸發(fā)模式
TSI 模塊允許軟件或硬件觸發(fā)來開始一次掃描。當(dāng)一個軟件觸發(fā)被使能
(TSI_GENCS[STM]位被清零),TSI_GENCS[SWTS]位必須置 1 從而開始掃描電極通道,
該通道由 TSI_DADT[TSICH]決定。當(dāng)一個硬件觸發(fā)被使能(TSI_GENCS[STM]位被置 1),
TSI_GENCS[SWTS]位清零,TSI將不會開始掃描直到硬件觸發(fā)達(dá)到時。硬件觸發(fā)因MCU
配置的而形式多樣,總的說來,RTC 溢出也可以作為一個事件。詳細(xì)的內(nèi)容請參考芯片
配置章節(jié)。
42.4.5 掃描次數(shù)
TSI提供多重掃描功能。掃描的次數(shù)是由TSI_GENCS[NSCN]位來表示。掃描次數(shù)可
以是 1 到 32.之間任意的數(shù)。TSI_GENCS[NSCN]位被置零,則采用單獨掃描模式。16 位
計數(shù)器累加所有掃描值直到 NSCN 時間掃描完成并且使用者可以通過讀
TSI_DATA[TSICNT]來取得該累加值。當(dāng) DMA 傳送被使能,計數(shù)器值可以被 DMA 引擎
讀取出來。
42.4.5 時鐘設(shè)置
TSI模塊有著雙重晶振架構(gòu)。在普通的應(yīng)用中,參考晶振時鐘是TSI模塊唯一的時鐘
源。通過使用一個 16 位的計數(shù)器,參考時鐘是用來測量電極晶振的。參考晶振的頻率是
由當(dāng)前電流源所決定的。具體情況可以參考電源流的章節(jié)。
輸出的電極晶振頻率實現(xiàn)由TSI_GENCS[PS]位進行分頻,分頻值可變,最大值是128
分之一。
42.4.7 參考電壓
論是電極晶振和參考晶振,TSI模塊提供了一個內(nèi)部參考電壓。內(nèi)部參考電壓可以工
作在低功耗模式下,甚至當(dāng)MCU校準(zhǔn)器部分?jǐn)嚯�,作為低功耗觸摸感應(yīng)很理想。
充放電不同的電壓是可配置的,通過設(shè)置 TSI_GENCS[DVOLT]位。下表展示了所有
的電壓差配置。請注意該表格不適用于噪聲模式,詳見噪聲模式章節(jié)。
42.4.8 電流源
TSI 模塊支持八種不同的電流源從 500nA 到 64μA。TSI_GENCS[EXTCHRG]位決定
了電極晶振的電流,以便對外部電極充放電。TSIGENCS[REFCHRG]位決定了參考晶振的
電流,而且取決于適用哪個內(nèi)部參考時鐘。小電流源將會用更多的時間充放電,更適合探
測高精度的變化。大電流源花費更少的時間,被用來給大電極充電而且耗電更少。
TSI_GENCS[CURSW]位允許電流源交換,以便參考晶振和電極晶振使用相反的電流
源。當(dāng) TSI_GENCS[CURSW]被設(shè)置并且當(dāng)前的電流源交換的TSI_GENCS[EXTCHRG]位
和 TSI_GENCS[REFCHRG]位仍然控制著相應(yīng)的電流源,即是,TSI_GENCS[EXTCHRG]控
制當(dāng)前參考晶振并且TSI_GENCS[REFCHRG]控制電極晶振電流。
42.4.9 掃描結(jié)束
作為一個掃描開始,[SCNIP]位設(shè)置表示掃描正在進行。當(dāng)掃描完成后,[EOSF]位置位。
在[EOSF]被清零之前, TSI_DATA[TSICN]中的值必須被讀出。如果 TSI_GENCS[TSIIEN]
位被置位而 TSI_GENCS[DMAEN]沒有被置位,一個中斷是提交給CPU 運行后處理立即。
如果它是運行在低功耗模式下,中斷也可以是可選的喚醒單片機執(zhí)行ISR。當(dāng)DMA功能是
通過設(shè)置 TSI_GENCS[TSIIEN]和 TSI_GENCS[ESOR]而被使能,只要掃描完成后,一個
DMA 傳輸請求會對DMA 控制器的數(shù)據(jù)移動,一般來說,DMA 引擎將獲取 TSI 轉(zhuǎn)換結(jié)果從
TSI_DATA寄存器、存儲到其他內(nèi)存空間,然后刷新TSI掃描通道指數(shù)(TSI_DATA[TSICH])
為下一個循環(huán)做準(zhǔn)備。當(dāng)DMA 傳輸完成之后,TSI_GENCS[EOSF]會被自動清除。
42.4.10 超出范圍中斷
如果被使能,當(dāng)觸發(fā)條件到達(dá)時,TSI 會立即掃描 TSI_DATA[TSICH]中的電極,在
GENCS[TSIIE]位置位并且GENCS[ESOR]位清除時,GENCS[OUTRGF]標(biāo)志產(chǎn)生一個TSI
中斷請求。 根據(jù)這個配置,在掃描結(jié)束之后, TSI會把掃描結(jié)果存放在TSI_DATA[TSICHT],
如果GENCS[OUTRGF]被設(shè)置了,并且TSI_DATA[TSICHT]值超出 TSI_THRESHLD 寄存
器的值就會發(fā)出一個中斷請求。例如,如果在低功耗模式下,電極電容值不改變,那么將
不會引起中斷。不過,這種中斷模式并不支持噪聲的模式,
42.4.11 從低功耗模式中喚醒MCU
在低功耗模式,一旦通過TSI_GENCS[STPE]和TSI_GENCS [TSIIE],TSI可以通過單片
機的低功耗模式(停止、VLPS、VLLS 等)的上下限范圍內(nèi)的掃描完成或中斷來喚醒 CPU,
也就是說,如果 TSI_GENCS[ESOR]被置位,最后的掃描完成喚醒 CPU,反之,溢出中斷喚醒
CPU。
42.4.12 DMA功能支持
只有當(dāng)TSI_DATA[DMAEN]被置位時, DMA傳輸使能。一個DMA傳輸請求被允許,
當(dāng)TSI_GENCS[EOSF]、TSI_GENCS[ESOR]和TSI_GENCS[TSIIE]被置位。然后芯片內(nèi)直
接存儲器存取控制器檢測這個請求和之間傳輸數(shù)據(jù)的內(nèi)存空間和TSI寄存器空間。在數(shù)據(jù)
轉(zhuǎn)移時,DMA DONE 被允許用來自動清除 TSI_GENCS[EOSF]位。這個函數(shù)通常是使用
DMA 控制器在一個掃描結(jié)束事件中從 TSI_DATA[TSICNT]得到轉(zhuǎn)換結(jié)果,然后刷新通道
指數(shù)(TSI_DATA[TSICH])觸發(fā)器為下一個尋壞做準(zhǔn)備。DMA 功能不可用于單片機在停止
模式。
42.4.13 噪聲檢測模式
噪聲檢測模式下的電路配置如下圖。這個模式可以檢測接觸時產(chǎn)生的較大的EMC噪
聲。我們通過MODE[3:0]來設(shè)置這個檢測模式。
在噪聲檢測模式,參考晶振的變化只有它的輸出將傳入計數(shù)器2,并且該計數(shù)器將通
過設(shè)置NSCN.2 ^(PS)得到最大值。 這樣說明晶振可以決定噪聲檢測模式的持續(xù)時間。
這個模塊的外部晶振也是可以改變的,而不是靠一個晶振電路實現(xiàn)射頻振幅檢測。這
個幅度檢測的閾值由DVOLT 位來設(shè)置。
下圖的Vmid電壓值是受一系列串聯(lián)電阻來調(diào)控的,其值等于V (mid) = (V(vp)+V(vm))
用一下的算法來確定噪聲水平:
(1)初始化 Rs = maxrs;Dvolt = minDv(設(shè)置其他配置)
(2)執(zhí)行一個噪聲循環(huán)。
(3)如果TSIcounter < 3,請轉(zhuǎn)到第8 步
(4)如果Rs = minrs,轉(zhuǎn)到步驟 6。
(5)減少價值的rs轉(zhuǎn)到步驟2
(6)如果Dvolt = maxDv,去結(jié)束
(7)Dvolt增加價值。設(shè)置Rs = maxrs。 轉(zhuǎn)到步驟2
(8)如果 minrs Rs >,(減少值Rs、去結(jié)束)
(9)Rs = maxrs,減少Dvolt的值。
(10) 最終得到的值和Dvolt。
噪聲檢測模式的一個例子如下圖所示。如圖 TSI 是在電容模式下工作直到 30μs 的時
候,我們把他改變成噪聲檢測模式。在此模式下,觸摸電容板塊的偏差在 0.815 V 之內(nèi),
并且此觸摸電容板內(nèi)的所有交流波形是由一個噪聲源外部集成電路觸發(fā)形成的。
規(guī)律如下圖所示,在噪聲檢測模式下,clkref 輸出的峰值,檢測到的峰值數(shù)量都可以被計
數(shù)統(tǒng)計或者直接數(shù)字模塊使用。clkext的輸出有著內(nèi)部晶振輸出,這些輸出值可用于設(shè)置
最大噪聲檢測的時間窗口。
以下的波形圖展示了在噪聲檢測模式下的兩個操作:
•V(vp)和V(vm)閾值發(fā)生了 34.4μs的改變。
•由于這種這些串聯(lián)電阻改變了,所以振幅的噪聲波形也發(fā)生變化,其電阻值范圍是
184 kΩ(iext < 2:0 > = 011)和 32kΩ(iext < 2:0 > = 101)。
0.png (87.8 KB, 下載次數(shù): 51)
下載附件
2018-9-28 18:16 上傳
42.4.13.1 自動噪聲模式
該模式通過對 MODE[3:2]=11(噪聲模式 3)來設(shè)置。在這種模式下閾值遞增時,內(nèi)部
IP 即使達(dá)到極點,也不會有影響噪聲電壓閾值。
如下圖所示,閾值比較輸出計數(shù)器和 DVOLT 控制位的值都增加了的話,DVOLT 閾
值也會相應(yīng)的增加。該寄存器的四位設(shè)置為1111(= 15),計數(shù)器將會停止在這個最大值上。
完整的pdf格式文檔51黑下載地址(共577頁):
KL25 Reference Manual_Rev[3](中文譯本).pdf
(13.61 MB, 下載次數(shù): 59)
2018-9-28 16:13 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|