• 845查看
  • 0回复

[综合] AURIX? TC3xx 休眠控制SCR

[复制链接]


该用户从未签到

发表于 14-8-2023 09:41:24 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


前言

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

AURIX? TC3xx 休眠控制SCRw1.jpg

参考资料:

[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 休眠控制SCRw2.jpg

分离的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

AURIX? TC3xx 休眠控制SCRw3.jpg

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

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

白色:Always on,永远在工作的。EVR LDO Preregulator可以产生一个和内核电压一样大小的电压VDDPD = 1.25V,给Standby RAM(CPU0 dLMU...)以及EVRC,EVR33供电。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可以有PINA和PINB两种唤醒源,而PORST/ESR1/PINA是处于Core Domain的,如果Core Domain和Standby Domain共轨的话,这些引脚(PINA/PINB)都是可以作唤醒源的。

AURIX? TC3xx 休眠控制SCRw4.jpg

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

3.SCR Architecture

AURIX? TC3xx 休眠控制SCRw5.jpg

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

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

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

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

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

AURIX? TC3xx 休眠控制SCRw6.jpg

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

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

AURIX? TC3xx 休眠控制SCRw7.jpg

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

AURIX? TC3xx 休眠控制SCRw8.jpg

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口来调试SCR。

AURIX? TC3xx 休眠控制SCRw9.jpg

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

可以选择70KHz的Standby clock时钟,也可以选择100MHz的back up clock。

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

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

AURIX? TC3xx 休眠控制SCRw10.jpg

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

AURIX? TC3xx 休眠控制SCRw11.jpg

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

AURIX? TC3xx 休眠控制SCRw12.jpg

AURIX? TC3xx 休眠控制SCRw13.jpg

AURIX? TC3xx 休眠控制SCRw14.jpg

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

4.Debug System



AURIX? TC3xx 休眠控制SCRw15.jpg

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



AURIX? TC3xx 休眠控制SCRw16.jpg

两种调试SCR的方法:

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

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

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

5.SCR SW Framework

AURIX? TC3xx 休眠控制SCRw17.jpg

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

AURIX? TC3xx 休眠控制SCRw18.jpg

在运行SCR之前,第一步是使能SCR,第二部是把SCR mode设置为Programmer Mode(SCR boot mode,通过寄存器设置),第三步就是把CArray里面内容写道XRAM里面,第四步把SCR的boot mode设置为Normal mode,SCR就跑起来了,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




该用户从未签到

发表于 20-3-2025 08:33:00 | 显示全部楼层
关于AURIX的TC3xx休眠控制SCR前言:

SCR作为待机控制器,采用8051内核。本视频旨在详细介绍MCU的两个域结构,以及SCR的核心架构。其中,SCR与主核的通信机制、唤醒源以及外设资源是重点介绍内容。此外,还将指导如何进行SCR调试,并提供示例程序供参考。如需深入了解TC1.6.2核心架构细节,可查阅TriCore TM TC1.6.2核心架构手册。关于Infineon-AU的更多信息,建议访问其官方网站获取最新资料。
回复 支持 反对

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 19-8-2025 02:20 , Processed in 0.387611 second(s), 35 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.