AURIX™ TC3xx 休眠控制SCR


前言

SCRStandby Controller的简称,是以8051内核为基础的CPU。本视频首先介绍了MCU的两个域,接着介绍了SCR的架构,其中包括SCR和主核的通信,SCR唤醒源,SCR的外设资源等内容,最后介绍了SCR的调试方法以及示例程序。

AURIX™ TC3xx 休眠控制SCR

参考资料:

[1] https://videos.infineon-autoeco.com/pc/page/index?keyword=AURIX

[2] TriCore TM TC1.6.2 core architecture manual

[3 ]Infineon-AURIX_TC3xx_Part1-UserManual-v02_00-EN

正文

1.Overview

AURIX™ TC3xx 休眠控制SCR

分离的IO:也就是一部分IO是处于High performance domain里面的,另一部分IO是处于low power domain里面的。


High performance domain一般使用Vext或者Vddm或者Vflex作为参考电源,Low power domanin使用Vevrsb作为参考电源的。


TC3xxx芯片里面,Pin33Pin34口是处在Low power domain的,是使用Vevrsb作为参考电源的。

2.System Architecture:Standby Domain

AURIX™ TC3xx 休眠控制SCR

深灰色Swtich Off,在进入到Standby模式后就被关闭了,因为EVRCEVR33都关掉了,所以TC3xx的内核(Tricore)以及VDDP3已经没有电了,所以进入Standby后内核是断电了的,那么从Standby唤醒走的流程和Power On Reset走的流程是差不多的。


浅灰色Optional,可选的模块,进入到Standby模式后可以选择开启或者关闭。SCRStandby Controller)和Wake-up TimerWUT)以及Pin Wake-up unit等(灰色部分)是相互独立的,一个选择关闭后剩下的可以选择关闭或者开启。


白色Always on,永远在工作的。EVR LDO Preregulator可以产生一个和内核电压一样大小的电压VDDPD = 1.25V,给Standby RAMCPU0 dLMU...)以及EVRCEVR33供电。PLPBG Low Power Bandgap是用来Monitor监控SHPBG High Precision Bandgap的。SHPBG High Precision Bandgap的作用是作为Second monitor的参考源,就是在做电源监控的时候可以设置一个电源的范围,采集电源ADC值和设置的电源电压范围进行比较。SHPBG High Precision同时是SCR里面ADC的参考源。Pin Wake-up unit可以有PINAPINB两种唤醒源,而PORST/ESR1/PINA是处于Core Domain的,如果Core DomainStandby Domain共轨的话,这些引脚(PINA/PINB)都是可以作唤醒源的。

AURIX™ TC3xx 休眠控制SCR

但是在上图图中Standby DomainCore Domain用了独立的电源,一旦Main Supply断电的话,PINA就无法作为唤醒引脚了。这种独立供电的方式除了SCRWUTPINB可以作为唤醒源外,VEXTCore Domain的主电源)也可以作为唤醒源,比如VEXT上升到某个阈值的时候唤醒Core Domain(下降到某个阈值的时候进入到Standby mode

3.SCR Architecture

AURIX™ TC3xx 休眠控制SCR

SCR本身是一个8051核,SCR的代码是运行在XRAM的,数据也存放在XRAM。存放在XRAM的数据如果要去访问的话,需要使用DBTR寄存器,当成扩展的ROM去访问它。


SCR和主核TriCore间有多种访问方式:

1)主核和SCR之间可以互相发送中断


2)Shawdow Register也就是映射寄存器相互访问,比如在SCR设置了SCRINTEXCHG寄存器后,在TricorePMSWCR2.SCRINT寄存器位域就会相应改变,利用这个特性可以做一些简单的调试,比如让SCR全速运行起来,运行到不同地方设置SCRINTEXCHG不同的值,在Tricore里面就可以通过PMSWCR2.SCRINT监控SCR的运行到哪里了。使用这种调试方式的话,Tricore就不能进入休眠。


3)P33P34这两组pin脚可以归属于Tricore也可以归属于SCR,由PCSR寄存器配置。所以在进入Standby之前需要将P33P34的控制器权交给SCR

AURIX™ TC3xx 休眠控制SCR

SCR除了普通的IO唤醒监控外,还支持很多的外设唤醒监控,比如特定帧CAN唤醒。


SCR支持多种唤醒源,用的比较多的是Software request,也就是往SCU_STDBYWKP.SCRWKP寄存器位域里面写入1就唤醒主核了,大部分的唤醒功能都是用这个功能去做的。对于IO的将车,SCR有自己的外部中断,但一个跳变沿过来的时候,首先会进入到SCR的中断,在中断里面设置SCU_STDBYWKP.SCRWKP唤醒主核。

AURIX™ TC3xx 休眠控制SCR

Aurix 1G上的SCR Block DiagramAurix 2G上的SCR相比于1G上的SCR做了一些改变,比如原来的XRAM是挂在SPI下面的,访问Aurix 1GXRAM需要使用SPI接口。

AURIX™ TC3xx 休眠控制SCR

Aurix 2GXRAM直接挂在SPB总线下面,访问XRAM直接通过通过地址访问,更加便捷。


XC800核集成了T0 T1 UART三个外设,其他的RTCWDTT2CCUSSC都是扩展的外设。SCR_P00.0 - SCR_P00.7对应TricoreSCR_P33.0 - SCR_P33.7SCR_P01.0对应TricoreP34.1SCR_P01.1- SCR_P01.7对应TricoreSCR_P33.9 - SCR_P33.15

主核即使进入休眠了,也可以通过OCDS/JTAG/DAP/SPD口来调试SCR

AURIX™ TC3xx 休眠控制SCR

16-bit看门狗只有低八位可以设置。


可以选择70KHzStandby clock时钟,也可以选择100MHzback up clock


没有喂狗或者错误的窗口喂狗都会产生Watch DogEvent,这个Event首先会产生一个NMI的中断,类似一个Prewarning的中断,这个中断发生以后,再等0x3048)个时钟周期后发生ResetResetEnabled),这个Prewarning的中断(NMI)一旦发生以后,就算再去喂狗,依然在48cycle以后还会发生Reset

SCR的看门狗的EventNMI Request)可以用来唤醒主核,前提是SCU_STDBYWKP.WDTWKSEL设置为1

AURIX™ TC3xx 休眠控制SCR

RTC件产生的Interrupt Request可以用来唤醒主核,前提是SCU_STDBYWKP.RTCWKSEL设置为1

AURIX™ TC3xx 休眠控制SCR

T2CCU可以用来作PWM的输入捕获和PWM的输出控制。

 

AURIX™ TC3xx 休眠控制SCR

AURIX™ TC3xx 休眠控制SCR

AURIX™ TC3xx 休眠控制SCR

 

 

SCR里面有一个Wake-up CAN的通道,不是我们常规见的CAN Node,仅仅嵌入了CAN的一个Filter,但我们收到的CAN FrameFilter中预设的ID匹配的话,就产生一个Wake-upEvent,不是通常意义上的CAN Module,只能收不能发CAN报文。收报文的引脚也有很多个,如图所示。

4.Debug System

 

AURIX™ TC3xx 休眠控制SCR

调试SCR可以使用主核的DAP口(主核不能休眠),也可以使用SCR私有的DAP口。

 

AURIX™ TC3xx 休眠控制SCR

两种调试SCR的方法:

方法1SCRSCRINTEXCHG寄存器映射到shadow Register,也就是主核的PMSWCR2.SCRINTSCR在不同的地方设置SCRINTEXCHG不同的值,Tricore中查看PMSWCR2.SCRINT值就可以知道SCR的当前的状态。

方式2:主核访问XRAM,可以直接通过地址访问,SCR访问XRAM需要使用DPTR指令,当成扩展的RAM来使用。

可以在XRAM里面开辟一个区域,比如说这个区域的前面一段是SCR to Tricore的信息,后面半段是Tricore to SCR的信息,通过这种方式可以作一些参数的交互。

5.SCR SW Framework

AURIX™ TC3xx 休眠控制SCR

SCR的代码放在SCR的目录下面,SCR的编译器Config_8051_Tasking目录下的Config_Tasking.mk里面(主要就是设置c51的编译器路径,Taking支持c51芯片的编译),编译完成后就会产生.Hex文件,使用0_Utilities目录下的Hex2CArrray tool.Hex转成CArray这样的C文件。

AURIX™ TC3xx 休眠控制SCR

在运行SCR之前,第一步是使能SCR,第二部是把SCR mode设置为Programmer ModeSCR boot mode,通过寄存器设置),第三步就是把CArray里面内容写道XRAM里面,第四步把SCRboot mode设置为Normal modeSCR就跑起来了,SCR跑起来以后,MCU就可以进入它的Standby mode,在进入Standby mode之前需要把唤醒源配置好。


推荐阅读

Autosar架构下的模块详细设计及代码实现--基于配置的编程方法

AUTOSAR 通信服务-CanSM概念详解

AUTOSAR 通信服务-PDU Router

AUTOSAR CAN通信协议栈分析(2)-CanIf

Bug分析-内存被异常篡改问题分析

AUTOSAR架构下CAN BusOff问题分析

C语言编程技巧(1)-表驱动法

CANoe工具使用(1)-实现CAN通道的收、发、录、回放报文

S32K平台学习(1)-S32K144启动流程分析

详解芯片Rese Vector和Interrupt Vector-以S32K和RH850为例

Can通信协议栈分析(1)-Can Driver

AUTOSAR 通信服务 - NM概念详解

AUTOSAR模式管理-EcuM Sleep and UP详解

AUTOSAR 诊断服务-DEM功能概述

基于AUTOSAR与Matlab开发应用层(三)应用层总体功能开发和集成

AUTOSAR-MCAL--SPI模块详解(三)

AUTOSAR-MCAL--MCU模块详解

RH850-U2A16芯片--RAM and Flash介绍

AUTOSAR存储协议栈-- EEPROM Driver模块介绍

AUTOSAR-MCAL--SPI模块详解(三)

详解芯片Rese Vector和Interrupt Vector-以S32K和RH850为例

AUTOSAR架构下RH850芯片深度休眠配置实践-Conifig EcuM and BswM

AUTOSAR架构下关于CanNm的几点思考

AUTOSAR下Com模块中Signal Group详解

Can/Lin报文的触发发送(Trigger Transmit)

AUTOSAR 通信服务-Com模块报文的发送机制

End




欢迎点赞,关注,转发,在看,您的每一次鼓励,都是我最大的动力!

汽车电子嵌入式

微信扫描二维码,关注我的公众号


原文始发于微信公众号(汽车电子嵌入式):AURIX™ TC3xx 休眠控制SCR

版权声明:admin 发表于 2023年1月16日 上午8:01。
转载请注明:AURIX™ TC3xx 休眠控制SCR | CTF导航

相关文章

暂无评论

暂无评论...