打印
[其它产品/技术]

英飞凌TC3XX芯片之MCU时钟配置实战精华总结

[复制链接]
2354|29
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 两只袜子 于 2024-6-25 09:31 编辑

概述

当我们使用需要用到时钟的外设时,基本都需要对MCU驱动模块进行配置。驱动程序提供AUTOSAR指定的运行时服务接口。MCU驱动模块负责以下工作:
完成AUTOSAR上层组件指定的时钟、复位和静态低功耗模式功能配置。
Trap功能的配置。
配置 BASIC 驱动程序所涉及的GTM、CCU6 和GPT12的全局特性。
为定时器IP的其他驱动程序提供库支持 - GTM、CCU6、GPT12和STM。
模拟转换器所需的相位同步器配置。
符合AUTOSAR规范的Runtime APIs,用于时钟、复位、低功耗管理和RAM初始化。
用于Trap管理的Runtime APIs。
本文的参考资料见下表。


下图为MCAL驱动模块涉及的软硬件接口关系图。



本次配置主要描述MCU本身需要配置的功能(主要为系统时钟),牵扯到独立功能的诸如GTM部分我们会在单独介绍其功能时描述对应MCU需要完成的配置。MCAL针对不同的驱动模块的配置项根据功能进行了容器的划分,下面是后边配置涉及的容器。





MCU配置

我们首先打开EB,导入Mcu与McalLib(McalLib里面的函数会贯穿整个MCAL)。本文只介绍MCU本身需要配置的部分。



本次配置的主要目标是完成芯片的时钟配置。板卡为英飞凌提供的KIT_A2G_TC397XA_TFT。涉及的软件包括:
EB-tresos:用于生成动态代码,具体工程搭建参考《【AUTOSAR MCAL】MCAL基础与EB tresos工程新建》。
HighTech:用于编译生成elf文件,具体的工程搭建参考《【MCAL】HighTec集成TC3xx对应MCAL的Demo》。
UDE 5.2:用于下载和调试程序。
需要注意的是MCU配置尤其是时钟这块儿的依赖项比较多,建议先使用MCAL EB-tresos Demo中的配置,需要特殊处理时钟分频系数或者某模块的时钟时,再单独修改,路径为:MC-ISAR_AS422_TC3xx_BASIC_2.20.0\DemoWorkspace\McalDemo\TC39B\1_ToolEnv\2_Tresos\AS422\DemoApp\config\Mcu.xdm。


General:McuGeneralConfiguration

下图为General配置界面,需要修改的一个配置选项如下。



McuSafetyEnable:因为我们的DEM没有对应的配置,所以我们需要关闭安全检查,否则报错生成动态代码会报错。
其余的选项根据功能开发需要选宏开关即可,我们这里直接采取默认的选项即可。需要着重理解的选项如下:
McuInitClock:Mcu_InitClock API可用,用作初始化芯片时钟。
McuMainOscillatorFrequency :外部部晶体或陶瓷谐振器频率为20Mhz。
McuOscillatorMode:芯片时钟源是外部晶体或陶瓷谐振器模式。
General:McuModuleConfiguration

这部分为MCU模式相关的通用配置,我们暂时不需要改动。



McuResetSettingConf

此部分包含芯片复位的配置,这部分我们需要修改的配置如下。
McuSWResetConf ::软件复位选择导致的,有系统复位与应用复位,这里选择应用复位,应用复位后芯片的所有外设、CPU和部分SCU寄存器会回到初始状态,其他部分(如RAM,时钟)状态维持不变,影响范围比系统复位要小,也因此应用复位耗时最短。因为APP跳转Boot的是通过软件复位来实现的,为了保持编程标志位在RAM中的值,需要选择应用复位。
McuSTMxResetOnApplResetEnable :STM定时器的计数值会在清零,重新计数。


McuTrapSettingConf

这部分功能为各核心Trap使能相关配置,我们暂时不需要改动。



McuClockSettingConfig

这里是Mcu时钟配置的容器,其中主要包含了以下一些容器。





时钟系统本身是由不同的构建块组成的时钟树,下面是几个构建块包含的内容。
Clock Source:时钟树源头,可以是外部晶振或者内部系统时钟。
Clock speed up-scaling:时钟的缩放部分,主要由PLL(锁相环)构成。
Clock distribution:时钟分配,由CCU负责。
Individual clock configuration:单独的时钟配置,针对片内外设(Peripherals)。


McuSystemPllSettingConfig

此容器包含系统锁相环的配置,主要完成对时钟源晶振频率的倍/分频,从而达到配置的频率。下图为系统PLL功能逻辑图。



需要注意的配置如下。
McuClockReferencePointFrequency0:系统时钟,它的计算公式为Fpll =( (Fosc * (McuNDivider + 1)) / ((McuK2Divider+1)*(McuPDivider+1)))。  




McuPeripheralPllSettingConfig

此容器包含外设PLL的配置,下图为对应的功能逻辑图。





这里我们主要关注下面的配置项。

McuClockReferencePointFrequency1 (dynamic range):外设时钟1,Fpll1 =( (Fosc * (McuNDivider + 1)) / ((McuK2Divider+1)*(McuPDivider+1)))

McuClockReferencePointFrequency2 (dynamic range):外设时钟2,Fpll2 =( (Fosc * (McuNDivider + 1)) / ((McuK3Divider+1)*(McuPDivider+1)))





McuPllDistributionSettingConfig

这个容器包含在时钟树内的各种片内外设时钟配置。





这里需要我们首先注意的是以下的配置。
McuClockDistributionInpClockSel:将备用时钟或者PLLx选为时钟分配单元输入,这里选用的是PLLx。
McuLowPowerDivValue:这个参数定义了低功率分频特性是否启用。这里为不启用。
剩下的配置则对应了各个片内外设,我们用到哪里就需要关注那部分。






McuExternalClockOutputConfig

包含MCU外部时钟的配置参数,因为我们用的是外部晶振,这里就不涉及了。



McuClockMonitorConfig

这个容器定义了TC3xx时钟监视的配置,这里我们不需要改动。



McuModeSettingConf

这个容器主要包含Mcu不同模式的配置集合。主要需要我们关注的为:

McuMode:当前配置集合为空闲模式的集合,用于正常的程序运行。1为睡眠模式,2为待机模式。



McuDemEventParameter

这是一个容器,用于引用 DemEventParameter元素,这些元素使用Dem_ReportErrorStatus() API,以防发生相应的错误。EventId 取自引用的DemEventParameter的DemEventId符号名称。容器中提供了标准化错误,并且可以通过特定于供应商的错误引用进行扩展。这部分我们不需要修改。





McuRamSectorSettingConf

此部分容器包含初始化设置一部分RAM区域,通过Mcu_InitRamSection()函数来实现,我们没有使用。



McuResetReasonConf

这里在配置完芯片类型,建立MCU模块,这部分重启原因配置就会生成了。用户可以通过Mcu_GetResetReason()获取重启原因。



MCU驱动使用与调试

MCU驱动使用主要涉及的是系统时钟的初始化,首先调用Mcu_Init()初始化MCU通用配置,然后调用Mcu_InitClock()初始化芯片的时钟部分,最后使用Mcu_GetPllStatus()获取PLL状态,相位锁定之后(频率稳定),表示初始化完成,调用Mcu_DistributePllClock()将PLL时钟作为MCU时钟的源头。代码实现如下。



工程准备好之后,编译生成.elf文件然后将PLS正确与开发板相连(JTAG接口),然后打开UDE,与PLS连接上之后下载程序到办卡上,在Mcu_DistributePllClock ()接口前设置断点,如果能跑到这句话能初步说明PLL锁相环生成系统成功是OK的。



版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。原文链接:https://blog.csdn.net/geek_liyang/article/details/135119504

使用特权

评论回复
沙发
中国龙芯CDX| | 2024-6-27 09:59 | 只看该作者
英飞凌TC3XX芯片之MCU时钟配置是非常重要的一个知识

使用特权

评论回复
板凳
nuan11nuan| | 2024-7-11 12:37 | 只看该作者
英飞凌TC3XX系列芯片是一款高性能的汽车级别微控制器单元(MCU),在配置MCU时钟时需要注意时钟源这方面

使用特权

评论回复
地板
eleg34ance| | 2024-7-11 13:44 | 只看该作者
TC3XX芯片通常支持多种时钟源,包括内部振荡器、外部晶体振荡器等。在配置时需要选择合适的时钟源,并根据具体应用需求进行配置

使用特权

评论回复
5
twinkhahale| | 2024-7-11 15:06 | 只看该作者
根据应用需求,需要配置时钟的分频系数,以获得所需的时钟频率。这通常涉及到主时钟、外设时钟等的分频设置

使用特权

评论回复
6
pe66ak| | 2024-7-11 16:10 | 只看该作者
对于需要高稳定性的应用,如汽车电子系统,需要确保时钟源的稳定性和精度,通常需要进行外部晶振的校准和配置

使用特权

评论回复
7
miltk| | 2024-7-11 17:13 | 只看该作者
在某些应用场景下,可能需要在运行时切换时钟源或者时钟频率,需要注意切换时的时序和稳定性

使用特权

评论回复
8
nqty| | 2024-7-11 18:19 | 只看该作者
对于需要低功耗的应用,需要合理配置时钟以降低功耗,包括选择低功耗时钟源、关闭不需要的时钟模块等

使用特权

评论回复
9
teaccch| | 2024-7-11 19:24 | 只看该作者
在配置TC3XX芯片的MCU时钟时,需要根据具体的应用需求和硬件设计规范进行配置,确保时钟系统的稳定性、精度和功耗符合要求

使用特权

评论回复
10
wamed| | 2024-7-12 08:26 | 只看该作者
建议参考英飞凌提供的官方文档和参考设计,以获得更详细的配置指导

使用特权

评论回复
11
yuliangren| | 2024-7-12 10:07 | 只看该作者
话说,直接用官方的例程进行修改多好啊

使用特权

评论回复
12
suiziq| | 2024-7-12 12:30 | 只看该作者
他们没有时钟配置工具吗?

使用特权

评论回复
13
yellow555| | 2024-8-27 16:37 | 只看该作者
需要对 MCU 驱动模块进行详细配置。

使用特权

评论回复
14
yellow555| | 2024-8-27 16:38 | 只看该作者
还要配置陷阱功能,以便在发生异常或错误时能快速响应并处理。

使用特权

评论回复
15
pixhw| | 2024-9-3 16:24 | 只看该作者
英飞凌TC3XX芯片是一款高性能的微控制器(MCU),它采用了Aurix™ 32位多核微控制器架构。TC3XX系列芯片的时钟系统非常复杂,提供了多种时钟源和配置选项,以满足不同的应用需求。

使用特权

评论回复
16
iyoum| | 2024-9-3 18:04 | 只看该作者
通过修改时钟控制寄存器(如RCC_CFGR)来配置时钟树,包括PLL(锁相环)的使能与配置、系统时钟的选择与分频等。PLL的配置是其中的关键步骤,它涉及输入频率的选择和输出倍频因子的设定,直接影响到系统主时钟的频率。

使用特权

评论回复
17
wengh2016| | 2024-9-3 18:55 | 只看该作者
TC3XX芯片内的时钟分发网络负责将选定的时钟信号分配给不同的外设和核心模块。这包括AHB总线矩阵、APB总线以及各种外设模块。正确配置这一网络是确保系统正常运行的关键。

使用特权

评论回复
18
jtracy3| | 2024-9-3 19:58 | 只看该作者
对于MCU来说,时钟配置是非常基础但又至关重要的部分

使用特权

评论回复
19
tabmone| | 2024-9-3 21:17 | 只看该作者
在选择外部时钟源时,务必注意其稳定性和精度,以确保系统正常运行。

使用特权

评论回复
20
yorkbarney| | 2024-9-3 22:53 | 只看该作者
TC3XX芯片通常包含多个时钟源,如HSE(外部高速晶振)、HSI(内部高速RC)、LSE(外部低速晶振)和LSI(内部低速RC)等。每种时钟源都有其特定的应用场景和优缺点,比如外部晶振提供更准确的时钟信号,而内部RC则成本更低且易于集成。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2035

主题

7339

帖子

10

粉丝