前言
SCR是Standby Controller的簡稱,是以8051內(nèi)核為基礎的CPU。本視頻首先介紹了MCU的兩個域,接著介紹了SCR的架構,其中包括SCR和主核的通信,SCR喚醒源,SCR的外設資源等內(nèi)容,最后介紹了SCR的調(diào)試方法以及示例程序。
正文
1.Overview
分離的IO:也就是一部分IO是處于High performance domain里面的,另一部分IO是處于low power domain里面的。
High performance domain一般使用Vext或者Vddm或者Vflex作為參考電源,Low power domanin使用Vevrsb作為參考電源的。
在TC3xxx芯片里面,Pin33和Pin34口是處在Low power domain的,是使用Vevrsb作為參考電源的。
2.System Architecture:Standby Domain
深灰色:Swtich Off,在進入到Standby模式后就被關閉了,因為EVRC和EVR33都關掉了,所以TC3xx的內(nèi)核(Tricore)以及VDDP3已經(jīng)沒有電了,所以進入Standby后內(nèi)核是斷電了的,那么從Standby喚醒走的流程和Power On Reset走的流程是差不多的。
淺灰色:Optional,可選的模塊,進入到Standby模式后可以選擇開啟或者關閉。SCR(Standby Controller)和Wake-up Timer(WUT)以及Pin Wake-up unit等(灰色部分)是相互獨立的,一個選擇關閉后剩下的可以選擇關閉或者開啟。
白色:Always on,永遠在工作的。EVR LDO Preregulator可以產(chǎn)生一個和內(nèi)核電壓一樣大小的電壓VDDPD= 1.25V,給Standby RAM(CPU0 dLMU...)以及EVRC,EVR33供電。PLPBG Low Power Bandgap是用來Monitor監(jiān)控SHPBG High Precision Bandgap的。
SHPBG High Precision Bandgap的作用是作為Second monitor的參考源,就是在做電源監(jiān)控的時候可以設置一個電源的范圍,采集電源ADC值和設置的電源電壓范圍進行比較。SHPBG High Precision同時是SCR里面ADC的參考源。Pin Wake-up unit可以有PINA和PINB兩種喚醒源,而PORST/ESR1/PINA是處于Core Domain的,如果Core Domain和Standby Domain共軌的話,這些引腳(PINA/PINB)都是可以作喚醒源的。
但是在上圖圖中Standby Domain和Core Domain用了獨立的電源,一旦Main Supply斷電的話,PINA就無法作為喚醒引腳了。這種獨立供電的方式除了SCR,WUT,PINB可以作為喚醒源外,VEXT(Core Domain的主電源)也可以作為喚醒源,比如VEXT上升到某個閾值的時候喚醒Core Domain(下降到某個閾值的時候進入到Standby mode)
3.SCR Architecture
SCR本身是一個8051核,SCR的代碼是運行在XRAM的,數(shù)據(jù)也存放在XRAM。存放在XRAM的數(shù)據(jù)如果要去訪問的話,需要使用DBTR寄存器,當成擴展的ROM去訪問它。
SCR和主核TriCore間有多種訪問方式:
1)主核和SCR之間可以互相發(fā)送中斷
2)Shawdow Register也就是映射寄存器相互訪問,比如在SCR設置了SCRINTEXCHG寄存器后,在Tricore的PMSWCR2.SCRINT寄存器位域就會相應改變,利用這個特性可以做一些簡單的調(diào)試,比如讓SCR全速運行起來,運行到不同地方設置SCRINTEXCHG不同的值,在Tricore里面就可以通過PMSWCR2.SCRINT監(jiān)控SCR的運行到哪里了。使用這種調(diào)試方式的話,Tricore就不能進入休眠。
3)P33和P34這兩組pin腳可以歸屬于Tricore也可以歸屬于SCR,由PCSR寄存器配置。所以在進入Standby之前需要將P33和P34的控制器權交給SCR。
SCR除了普通的IO喚醒監(jiān)控外,還支持很多的外設喚醒監(jiān)控,比如特定幀CAN喚醒。
SCR支持多種喚醒源,用的比較多的是Software request,也就是往SCU_STDBYWKP.SCRWKP寄存器位域里面寫入1就喚醒主核了,大部分的喚醒功能都是用這個功能去做的。對于IO的將車,SCR有自己的外部中斷,但一個跳變沿過來的時候,首先會進入到SCR的中斷,在中斷里面設置SCU_STDBYWKP.SCRWKP喚醒主核。
Aurix 1G上的SCR Block Diagram,Aurix 2G上的SCR相比于1G上的SCR做了一些改變,比如原來的XRAM是掛在SPI下面的,訪問Aurix 1G的XRAM需要使用SPI接口。
Aurix 2G的XRAM直接掛在SPB總線下面,訪問XRAM直接通過通過地址訪問,更加便捷。
XC800核集成了T0 T1 UART三個外設,其他的RTC,WDT,T2CCU,SSC都是擴展的外設。SCR_P00.0 - SCR_P00.7對應Tricore的SCR_P33.0 - SCR_P33.7,SCR_P01.0對應Tricore的P34.1, SCR_P01.1- SCR_P01.7對應Tricore的SCR_P33.9 - SCR_P33.15。
主核即使進入休眠了,也可以通過OCDS/JTAG/DAP/SPD口來調(diào)試SCR。
16-bit看門狗只有低八位可以設置。
可以選擇70KHz的Standby clock時鐘,也可以選擇100MHz的back up clock。
沒有喂狗或者錯誤的窗口喂狗都會產(chǎn)生Watch Dog的Event,這個Event首先會產(chǎn)生一個NMI的中斷,類似一個Prewarning的中斷,這個中斷發(fā)生以后,再等0x30(48)個時鐘周期后發(fā)生Reset(Reset是Enabled),這個Prewarning的中斷(NMI)一旦發(fā)生以后,就算再去喂狗,依然在48個cycle以后還會發(fā)生Reset。
SCR的看門狗的Event(NMI Request)可以用來喚醒主核,前提是SCU_STDBYWKP.WDTWKSEL設置為1。
RTC事件產(chǎn)生的Interrupt Request可以用來喚醒主核,前提是SCU_STDBYWKP.RTCWKSEL設置為1。
T2CCU可以用來作PWM的輸入捕獲和PWM的輸出控制。
在SCR里面有一個Wake-up CAN的通道,不是我們常規(guī)見的CAN Node,僅僅嵌入了CAN的一個Filter,但我們收到的CAN Frame和Filter中預設的ID匹配的話,就產(chǎn)生一個Wake-up的Event,不是通常意義上的CAN Module,只能收不能發(fā)CAN報文。收報文的引腳也有很多個,如圖所示。
4.Debug System
調(diào)試SCR可以使用主核的DAP口(主核不能休眠),也可以使用SCR私有的DAP口。
兩種調(diào)試SCR的方法:
方法1:SCR的SCRINTEXCHG寄存器映射到shadow Register,也就是主核的PMSWCR2.SCRINT,SCR在不同的地方設置SCRINTEXCHG不同的值,Tricore中查看PMSWCR2.SCRINT值就可以知道SCR的當前的狀態(tài)。
方式2:主核訪問XRAM,可以直接通過地址訪問,SCR訪問XRAM需要使用DPTR指令,當成擴展的RAM來使用。
可以在XRAM里面開辟一個區(qū)域,比如說這個區(qū)域的前面一段是SCRto Tricore的信息,后面半段是Tricore to SCR的信息,通過這種方式可以作一些參數(shù)的交互。
5.SCR SW Framework
SCR的代碼放在SCR的目錄下面,SCR的編譯器Config_8051_Tasking目錄下的Config_Tasking.mk里面(主要就是設置c51的編譯器路徑,Taking支持c51芯片的編譯),編譯完成后就會產(chǎn)生.Hex文件,使用0_Utilities目錄下的Hex2CArrray tool將.Hex轉成CArray這樣的C文件。
在運行SCR之前,第一步是使能SCR,第二部是把SCR mode設置為Programmer Mode(SCR boot mode,通過寄存器設置),第三步就是把CArray里面內(nèi)容寫道XRAM里面,第四步把SCR的boot mode設置為Normal mode,SCR就跑起來了,SCR跑起來以后,MCU就可以進入它的Standby mode,在進入Standby mode之前需要把喚醒源配置好。
審核編輯:劉清
-
mcu
+關注
關注
146文章
17316瀏覽量
352388 -
寄存器
+關注
關注
31文章
5363瀏覽量
121014 -
SCR
+關注
關注
2文章
150瀏覽量
44281 -
PIN管
+關注
關注
0文章
36瀏覽量
6374
原文標題:AURIX? TC3xx 休眠控制SCR
文章出處:【微信號:汽車電子嵌入式,微信公眾號:汽車電子嵌入式】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論