资讯详情

资讯详情

Davinci软件中MCU软件

目录Autosar架构BSW层MCU模块介绍MCU配置芯片时钟树MCU工作模式Davinci软件对应MCU配置参数Autosar架构BSW层MCU模块介绍Autosar架构中的这个MCU模块用来配置芯片的时钟以及生成配置等MCU配置芯片时钟树对于不同芯片来说都有时钟树通过芯片内置的晶振或者外置晶振输入时钟源然后再通过时钟树的分频或者锁相环的升频再供给给芯片的外设来让芯片的外设进行工作具体时钟树截图如下所示。SOSC外部高速时钟 8MhzFast IRC外部高速时钟 48MhzSlow IRC内部低速时钟 8MhzLPO内部低功耗时钟源一般看门狗配置会选择该时钟 128KhzCLKOUT能够将时钟映射到该引脚然后用来输出时钟方便使用示波器进行测试。SCG时钟发生器选择外部时钟作为时钟源SPLL锁相环能够将时钟进行升高在通过分频qiMCU工作模式普通的mcu配置模式相同的时钟有着不同的运行频率具体配置模式与芯片外设表格截图如下所示。HSRUN高速运行模式RUN普通运行模式VLPR低速运行模式Davinci软件对应MCU配置参数McuDebugConfiguration具体配置参数影响如下所示。NXP 在 AUTOSAR 标准之外扩展的**非标准 API 编译开关**。全部只影响多编/少编几个函数不改变硬件初始化。本工程 5 项全为 false。 | 参数 | 本工程值 | 作用 | 开启的影响 | |---|---|---|---| | McuDisableCmuApi | false | 是否提供 Mcu_Disable_CMU() | 调试器单步暂停时可用它临时关时钟监控避免误触发时钟失效中断/复位量产建议关 | | McuEnablePeripheralCMU | false | 是否启用**外设时钟**频率监控CMU 监控外设时钟而非系统时钟 | 开启后可监控外设时钟频率越界增加少量中断/校验开销 | | McuGetMidrStructureApi | false | 是否提供 Mcu_GetMidrStructure() | 读取芯片 MIDR 标识寄存器厂号/系列bring-up 辨片用生成宏 MCU_GET_MIDR_API | | McuGetPeriphStateApi | false | 是否提供 Mcu_GetPeripheralState() | 运行时查询某外设 PCC 时钟是否已使能生成宏 MCU_GET_PERIPH_STATE_API | | McuDisableDemReportErrorStatus | false | 是否**禁止**向 Dem 上报错误状态 | 注意极性勾选禁止上报。本工程 false生成头文件中对应宏 MCU_DISABLE_DEM_REPORT_ERROR_STATUS 用于控制错误是否进 Dem 事件链 |对应davinci软件中的配置截图。McuGeneralConfiguration具体配置参数影响如下所示。这是 AUTOSAR 标准规定的模块行为总开关每一项直接决定 Mcu.c 中一个 API 是否存在或做不做事并在 Mcu_Cfg.h 生成同名大写宏。 | 参数 | 本工程值 | 生成宏 | 作用 / 配置影响 | |---|---|---|---| | McuDevErrorDetect | false | MCU_DEV_ERROR_DETECT STD_OFF | 开发错误检测。开启后 API 入口检查参数如错误的时钟配置 ID非法时调 Det_ReportError()ModuleId101。**调试期建议开量产关掉省代码和时间** | | McuVersionInfoApi | false | MCU_VERSION_INFO_API OFF | 是否编译 Mcu_GetVersionInfo() | | McuPerformResetApi | false | MCU_PERFORM_RESET_API OFF | 是否编译 Mcu_PerformReset()软件触发复位。本工程通过其他方式复位 | | McuCalloutBeforePerformReset | false | — | 是否在执行复位前调用用户回调 | | McuPerformResetCallout | NULL_PTR | MCU_RESET_CALLOUT_USED OFF | 复位前回调的**函数名**。需配合上一项使用NULL_PTR 无回调。典型用途复位前紧急存数据 | | McuGetRamStateApi | false | MCU_GET_RAM_STATE_API OFF | 是否编译 Mcu_GetRamState()查询 RAM 是否可访问启动早期/低功耗返回场景用 | | **McuInitClock** | **true** | MCU_INIT_CLOCK ON | **关键**Mcu_Init() 是否初始化整套时钟树SCG/PLL/分频/PCC。关掉则 Mcu 不配时钟由启动代码自行管理——正常工程必须开 | | McuEnterLowPowerMode | true | MCU_ENTER_LOW_POWER_MODE ON | Mcu_SetMode() 是否真正执行进入低功耗的硬件动作WFI/SMC 模式切换。关掉则函数只记录模式不动作 | | McuNoPll | false | MCU_NO_PLL OFF | 声明不使用 PLL。置 true 时 SPLL 配置被跳过系统只能跑 SOSC/SIRC/FIRC≤48MHz | | McuEnableUserModeSupport | false | MCU_ENABLE_USER_MODE_SUPPORT OFF | 是否支持 CPU 在非特权User模式下调用本驱动 | | McuTimeout | 50000 | MCU_TIMEOUT_LOOPS 50000U | 等待 PLL 锁定等操作的循环超时上限。超时后 API 返回错误而非死等。取值与循环体耗时相关过小会误报过大延长故障启动时间 |对应davinci软件中的配置截图。McuModuleConfiguration具体配置参数影响如下所示。| 参数 | 本工程值 | 含义与影响 | |---|---|---| | McuClockSrcFailureNotification | ENABLED | 时钟源失效的处理方式ENABLED产生 CMU 错误**中断**通知生成 MCU_CMU_ERROR_ISR_USED ONDISABLED按硬件配置直接复位 | | McuLPO1KClockEnable | true | 使能片上 **1kHz 低功耗振荡器**支路看门狗/LPO 时钟用 | | McuLPO32KClockEnable | true | 使能片上 **32kHz 低功耗振荡器**支路 | | McuLPOClockSelect | LPO_CLK_128K | LPO 输出频率选择128kHz 档。影响看门狗超时基准与复位滤波时间 | | McuNumberOfMcuModes | 1 | 定义的电源模式数量本工程只有 1 个模式容器即 RUN。要 STOP/VLPR 时需新增 McuModeSettingConf 并改大此值 | | McuRTCCLKINFrequencyHz | 32000 | RTC 外部输入时钟频率声明Hz供生成器校验分频 | | McuRamSectors | 0 | 需 Mcu_InitRamSection() 初始化的 RAM 段数量。0 McuRamSectorSettingConfs 为空 | | McuRtcClkSelect | SOSCDIV1_CLK | RTC 时钟源选择。本工程选 SOSC 分频 18MHz 经 RTC 内部再分频。时钟源没开时 RTC 不走 |对应davinci软件中的配置截图。其余配置内容解析## 第 5 章 McuClockSettingConfig_0时钟方案全文重点 一个 McuClockSettingConfig **一套完整时钟方案**应用通过 Mcu_InitClock(McuClockSettingConfig_0) 整包切换。多套方案如正常运行一套、低功耗一套可并存为多个容器。 ### 5.1 容器级参数3 项 | 参数 | 值 | 含义与影响 | |---|---|---| | McuClockSettingId | 0 | 这套方案的逻辑编号即 Mcu_InitClock() 的入参全工程唯一 | | McuScgClkOutSelect | SCG_SLOW_CLK | SCG CLKOUT 引脚若使能输出输出的时钟选择慢时钟 | | McuSysClockUnderMcuControl | true | 系统时钟切换是否由 Mcu 驱动控制。true Mcu_InitClock 负责切换 SCS 系统时钟源false 留给用户/其他代码 | ### 5.2 四个时钟源的物理背景 S32K144 的 SCG 有 4 个时钟源**SOSC**外部晶振精度高、**SIRC**内部慢 RC8MHz低功耗可用、**FIRC**内部快 RC48MHz上电默认源、**SPLL**锁相环由 SOSC 倍频得到高频。启动流程典型为 FIRC → 配好 SOSC/SPLL → 切到 SPLL。 ### 5.3 McuSystemOSCClockConfig外部晶振12 项 | 参数 | 值 | 含义与影响 | |---|---|---| | McuSOSCEnable | true | 是否使能 SOSC。它是 SPLL 的输入参考**用 PLL 就必须开** | | McuSOSCFrequency | 8000000 | 晶振频率声明 8MHz生成器用它校验倍频/分频结果 | | McuSOSCRangeSelect | HIGH_FREQ_RANGE | 频率范围选择高/中/低频决定内部放大器配置**选错会不起振** | | McuSOSCExternalReferenceSelect | false | false用晶振/谐振器接 XTAL/EXTALtrue用外部方波时钟直接输入 | | McuSOSCHighGainOscillatorSelect | false | 是否选高增益振荡模式噪声环境/高负载电容用功耗更大 | | McuSOSCDiv1 / McuSOSCDiv1Frequency | 1 / 8000000 | SOSCDIV1 输出分频系数与结果频率给需要高稳定时钟的外设 | | McuSOSCDiv2 / McuSOSCDiv2Frequency | 2 / 4000000 | SOSCDIV2 分频 2 → 4MHz本工程 LPSPI1/SBC SPI 时钟引用它 | | McuSOSCClockMonitorEnable | false | 是否使能 SOSC 时钟监控CMU | | McuSOSCClockMonitorResetEnable | false | SOSC 失效时是否触发复位false仅中断/标志 | | McuSOSCUnderMcuControl | true | 该时钟源由 Mcu 驱动在初始化时配置false保持启动代码设置 | ### 5.4 McuSIRCClockConfig内部慢 RC10 项 | 参数 | 值 | 含义与影响 | |---|---|---| | McuSIRCEnable | true | 使能 SIRC。VLPR 模式唯一可用的高频系统源需进低功耗就必须开 | | McuSIRCFrequency | 8000000 | SIRC 频率声明 8MHz | | McuSIRCRangeSelect | HIGH_RANGE_CLOCK | 高量程8MHz/低量程2MHz选择 | | McuSIRCDiv1 / Frequency | 1 / 8MHz | SIRCDIV1 输出 | | McuSIRCDiv2 / Frequency | 2 / 4MHz | SIRCDIV2 输出本工程 SBC_SPI 的 CRP 引用它 | | McuSIRCLowPowerEnable | false | 低功耗模式下是否保持 SIRC | | McuSIRCStopEnable | false | STOP 模式下是否保持 SIRC | | McuSIRCUnderMcuControl | true | 由 Mcu 初始化 | ### 5.5 McuFIRCClockConfig内部快 RC9 项 | 参数 | 值 | 含义与影响 | |---|---|---| | McuFIRCEnable | true | 使能 FIRC 48MHz。上电默认系统时钟源HSRUN 模式用它 | | McuFIRCFrequency | 48000000 | 频率声明 | | McuFIRCRangeSelect | TRIMMED_TO_48MHZ | 量程/trim 选择48MHz 精修档另有 56MHz 档 | | McuFIRCDiv1 / Frequency | 1 / 48MHz | FIRCDIV1 输出 | | McuFIRCDiv2 / Frequency | 2 / 24MHz | FIRCDIV2 输出 | | McuFIRCRegulatorEnable | false | FIRC 内部稳压器使能高频精度相关按芯片手册要求配 | | McuFIRCUnderMcuControl | true | 由 Mcu 初始化 | ### 5.6 McuSystemPll系统锁相环12 项——频率性能的核心 | 参数 | 值 | 含义与影响 | |---|---|---| | McuSPLLEnable | true | 使能 SPLL | | McuSPLLInputFrequency | 8000000 | PLL 输入频率来自 SOSC | | McuSPLLInputClkPreDivider | 1 | 输入预分频 PREDIV。公式**f_SPLL f_in / PREDIV × MULT** | | McuSPLLMultiplier | 40 | 倍频系数。8MHz / 1 × 40 /内部固定 2 分频 160MHz按 SCG SPLL 公式VCO输入/PREDIV×MULTSPLL 输出VCO/2 | | McuSPLLFrequency | 160000000 | 倍频结果声明 **160MHz** | | McuSPLLDiv1 / Frequency | 4 / 40MHz | SPLLDIV1 输出可供部分外设 | | McuSPLLDiv2 / Frequency | 4 / 40MHz | SPLLDIV2 输出 | | McuSPLLClockMonitorEnable | false | PLL 锁定丢失监控LOL | | McuSPLLClockMonitorResetEnable | false | 失锁时是否复位false可中断 | | McuSystemPllUnderMcuControl | true | 由 Mcu 配置并执行锁定等待 | 切换顺序驱动自动完成使能 SOSC → 配 SPLL → 等 LOCK 位 → 才能把系统时钟切到 SPLL。McuTimeout 就是这一步的等待上限。 ### 5.7 三种电源模式下的时钟树10 项 ×3结构相同 三套容器参数名完全一致只是值不同。通用字段 | 字段 | 含义 | |---|---| | McuSystemClockSwitch | 该模式的系统时钟源SPLL / FIRC / SIRC… | | McuPreDivSystemClockFrequency | 时钟源进入系统分频器前的频率声明值 | | McuCoreClockDivider / McuCoreClockFrequency | 内核CORE_CLK分频系数与结果频率决定 CPU 执行速度 | | McuBusClockDivider / McuBusClockFrequency | 总线BUS_CLK外设/Flash 访问分频与频率 | | McuSlowClockDivider | 慢时钟分频SCG_SLOW_CLK | | McuFlashClockFrequency | Flash 控制器工作频率必须 ≤ 手册上限否则取指出错 | | McuScgClkOutFrequency | CLKOUT 观测频率声明值 | | McuSystemClockFrequency | 系统时钟频率声明值 | 三套方案实际值对照 | 项目 | RUNMcuRunClockConfig | HSRUN | VLPR | |---|---|---|---| | 时钟源 | **SPLL** | FIRC | SIRC | | 源频率 | 160 MHz | 48 MHz | 8 MHz | | CoreDiv / 内核频率 | 2 / **80 MHz** | 1 / 48 MHz | 2 / 4 MHz | | BusDiv / 总线频率 | 2 / **40 MHz** | 1 / 48 MHz | 1 / 4 MHz | | SlowDiv | 4 | 2 | 4 | | Flash 频率 | 20 MHz | 24 MHz | 1 MHz | **影响链**CORE 决定指令速度BUS 影响绝大多数外设寄存器访问与部分外设时序SLOW 供给看门狗/LPO 相关域。超频超出 S32K144 各模式频率上限RUN 48MHz/80MHz 需 HSRUN 等会触发硬件错误或行为异常DaVinci 一般会校验但仍需对照数据手册。 ### 5.8 McuClkMonitor_0 / McuClkMonitor_1CMU 时钟监控2 个实例 ×6 项 CMU 用一个参考时钟计数被测时钟频率越界即报警。本工程两个实例全部禁用默认边界值保留。 | 参数 | 本工程值 | 含义 | |---|---|---| | McuClkMonitorEn | false | 该 CMU 实例是否使能 | | McuFrequencyHigherInterrupt | false | 频率**高于**上限时是否产生中断 | | McuFrequencyLowerInterrupt | false | 频率**低于**下限时是否产生中断 | | McuHighFrequencyRef | 16777215 | 高频参考计数阈值0xFFFFFF禁用时的默认最大值 | | McuLowFrequencyRef | 0 | 低频参考计数阈值 | | McuReferenceCountConfiguration | 65535 | 参考计数窗口0xFFFF | 典型用途功能安全场景监控 SPLL 是否失锁/超频。报警后可配合 McuClockSrcFailureNotification 进中断或复位。 ### 5.9 McuClockReferencePointCRP时钟引用点3 个实例 ×2 项 CRP 是 Mcu **向其他 BSW 模块公布的可用时钟频率**。Can/Spi/Adc 等模块不自己算频率而是引用某个 CRP波特率/分频全部基于它计算。 | 字段 | 含义 | |---|---| | McuClockFrequencySelect | 引用 SCG 的哪一路物理时钟 | | McuClockReferencePointFrequency | 该路时钟的频率声明Hz被引用模块据此算波特率 | 本工程三个 CRP | CRP 实例 | 时钟选择 | 频率 | 被谁使用 | |---|---|---|---| | McuClockReferencePoint_CAN | RUN_SYS_CLK运行模式系统时钟 | 80 MHz | Can 驱动计算 FlexCAN 位时序 | | McuClockReferencePoint_LPSPI1 | SOSCDIV2_CLK | 4 MHz | LPSPI1 波特率 | | McuClockReferencePoint_SBC_SPI | SIRCDIV2_CLK | 4 MHz | SBC系统基础芯片SPI 通信用低速时钟低功耗下也可用 | **常见故障链**改了 PLL/分频使系统时钟变化但 CRP 频率没同步改 → CAN 波特率、SPI 速率全错且工具不报错。改时钟树后必须检查所有 CRP。 ### 5.10 McuPeripheralClockConfig32 个外设时钟实例PCC 配置 S32K144 每个外设的时钟在 PCCPeripheral Clock Control中有一个寄存器先选时钟源PCS、再整数/小数分频、再开时钟门控CGC。32 个实例的参数定义相同 | 字段 | 含义 / 影响 | |---|---| | McuPerName | 外设名PCC 通道标识决定写哪个 PCC 寄存器 | | McuPeripheralClockEnable | 时钟门控。true供电钟**false 时该外设寄存器都访问不了外设完全不工作** | | McuPeripheralClockSelect | 时钟源选择 PCSSOSC/SIRC/FIRC/SPLL/EXT_CLK_OR_CLK_OFF外部时钟或关闭 | | McuPeripheralClockDivider | 整数分频PCS 分频器 | | McuPeripheralFractionalDivider | 小数分频附加项需要非整数频率时用 | | McuPeripheralClockFrequency | 该外设最终时钟频率声明供依赖模块/校验 | 本工程 32 个外设实例全部 Enabletrue分频1 | 类别 | 外设 | 时钟源选择 | |---|---|---| | 存储/系统 | FTFCFlash、DMAMUX0、CRC、LPIT | OFF/默认 | | 定时/触发 | PDB0、PDB1、LPTMR0、FTM0、FTM1、FTM2、FTM3 | OFF/默认 | | 模拟 | **ADC0** | **SOSC当前 arxml 已改见第 10 章** | | | ADC1、CMP0 | OFF/默认 | | 通信 | FLEXCAN0、FLEXCAN1、FLEXCAN2、LPI2C0、LPUART0/1/2 | OFF/默认 | | | **LPSPI1** | **SPLL** | | | LPSPI0、LPSPI2、FLEXIO | OFF/默认 | | 端口/其他 | PORTA、PORTA~PORTE、RTC、EWM | OFF/默认 | 说明EXT_CLK_OR_CLK_OFF 不是说外设没时钟——部分外设PORT、FTFC 等的功能时钟来自固定的系统/总线时钟PCS 只在多路可选源的外设CAN/SPI/UART/ADC…上才有实际选择意义LPSPI1 明确选 SPLL 是为了高波特率ADC0 选 SOSC 是为了精确稳定的转换时钟。 ### 5.11 McuSIMClockConfigSIM 时钟杂项12 项 | 参数 | 值 | 含义与影响 | |---|---|---| | McuClockOutEnable | false | 是否在 CLKOUT 引脚输出观测时钟用示波器测内部频率时开平时关省电/省引脚 | | McuClockOutSelect | SCG_CLKOUT | CLKOUT 输出的时钟源选择 | | McuClockOutDivider | 1 | CLKOUT 分频 | | McuDebugTraceDividerEnable | true | 调试 Trace 时钟分频是否使能 | | McuTraceClockSelect | CORE_CLK | Trace 跟踪时钟源选内核时钟 | | McuTraceClockDivider | 1 | Trace 时钟整数分频 | | McuTraceClockFraction | 0 | Trace 时钟小数分频 | | McuDMAClockGatingEnable | true | DMA 控制器时钟门控用 DMA 必须开 | | McuMSCMClockGatingEnable | true | MSCM中断路由/总线控制时钟涉及中断/多核信息通常开 | | McuEIMClockGatingEnable | true | EIM错误注入模块安全调试用 | | McuERMClockGatingEnable | true | ERM外部/总线错误报告模块 | | McuGPIOClockGatingEnable | false | SIM 侧 GPIO 相关时钟门控PORT 时钟由 PCC 单独控制此项为 SIM 附加控制 | | McuMPUClockGatingEnable | false | MPU 内存保护单元时钟不用 MPU 时关 | --- ## 第 6 章 McuModeSettingConf_0电源模式配置2 项 | 参数 | 值 | 含义与影响 | |---|---|---| | McuMode | 0 | 模式逻辑编号应用调 Mcu_SetMode(0) 时用它全工程唯一 | | McuPowerMode | RUN | 实际进入的 SMC 模式RUN/HSRUN/WAIT/STOP/VLPR/VLPS…。切换目标还必须在 McuAllowedModes 中被允许 | 要新增低功耗模式新增一个 McuModeSettingConf 容器、改大 McuNumberOfMcuModes、并确保 AllowedModes 允许。 --- ## 第 7 章 McuInterruptEvents系统事件中断2 项 | 参数 | 值 | 含义 | |---|---|---| | McuAlternateResetEvent | false | 备用复位事件是否产生中断通知 | | McuVoltageErrorEvent | false | 电压错误事件是否产生中断通知与 PMC 配置联动 | 均为 false本工程异常事件不走 Mcu 中断回调。 --- ## 第 8 章 McuPowerControlPMC 电源管理7 项 | 参数 | 值 | 含义与影响 | |---|---|---| | McuLowVoltageDetectResetEnable | false | 低压检测LVD是否触发**复位**——防欠压乱跑的安全开关 | | McuLowVoltageDetectInterruptEnable | false | LVD 是否触发**中断**可在掉电瞬间紧急保存 | | McuLowVoltageWarningInterruptEnable | false | 低压告警LVW阈值更低的早期警告中断 | | McuLPODisable | false | 是否禁用 LPO 低功耗振荡器false使能配合 LPO1K/32K 选择 | | McuClockBiasDisable | false | 是否禁用时钟偏置电路 | | McuLowPowerBiasEnable | false | 是否使能低功耗偏置模式 | | McuLpoTrimming | 0 | LPO 频率 trim 值0默认需校准时按实测频率调整 | --- ## 第 9 章 McuResetConfigRCM 复位配置 ### 9.1 复位引脚滤波3 项 | 参数 | 值 | 含义 | |---|---|---| | McuResetPinFilterInRunAndWait | ALL_FILTERING_DISABLE | RUN/WAIT 模式下复位引脚滤波禁用也可选 LPO/总线时钟滤波抗毛刺但增加复位延迟 | | McuResetPinFilterInStopMode | ALL_FILTERING_DISABLE | STOP 模式下滤波禁用 | | McuResetPinFilterBusClockSelect | 0 | 滤波器用总线时钟时的参数选择 | ### 9.2 McuSystemInterruptEnable复位源中断使能12 项 每一项对应 RCM 中的一类复位/异常源true 事件先产生**中断**软件可挽救/记录false 按硬件默认直接复位。本工程全部 false。 | 参数 | 对应硬件事件 | |---|---| | McuGlobalInterrupt | 全局复位中断总开关 | | McuWatchdogInterrupt | 看门狗WDOG/EWM复位 | | McuCoreLockupInterrupt | 内核 LockupHardFault 死锁 | | McuExternalResetPinInterrupt | 外部 RESET 引脚 | | McuJTAGResetInterrupt | JTAG/调试口复位 | | McuSoftwareInterrupt | 软件复位SRSH/SRSL | | McuMDMAPSystemResetInterrupt | MDM-AP 调试器系统复位 | | McuLossOfClockInterrupt | 丢时钟CMU LOC | | McuLossOfLockInterrupt | PLL 失锁LOL | | McuCMULossOfClockResetInterrupt | CMU 丢时钟复位事件 | | McuStopAcknowledgeErrorInterrupt | 进 STOP 应答错误外设拒绝停止 | | McuResetDelayTime DELAY_10_LPO_CYCLES | 复位脉冲延时10 个 LPO 时钟周期保证复位可靠释放 | --- ## 第 10 章 McuSIMConfigSIM 芯片级功能路由 这部分不属时钟是与芯片集成相关的硬件选项集中在 Mcu 里配置。 ### 10.1 McuAdcOptionsConfigurationADC 触发路由7 项 | 参数 | 值 | 含义与影响 | |---|---|---| | McuADC0TrigeerSourceSelect | PDB | ADC0 转换触发源选 **PDB**可编程延时模块电机/采样节拍常用也可选 TRGMUX 等其他源 | | McuADC0PreTrigeerSourceSelect | PDB_PRE_TRIGGER | ADC0 预触发pretrigger来自 PDB 预触发通道 | | McuADC0SoftwarePreTrigeerSourceSelect | SW_PRE_TRIGGER_DISABLE | 禁用软件预触发硬件 PDB 自动触发 | | McuADC1TrigeerSourceSelect | PDB | ADC1 同上 | | McuADC1PreTrigeerSourceSelect | PDB_PRE_TRIGGER | ADC1 预触发 | | McuADC1SoftwarePreTrigeerSourceSelect | SW_PRE_TRIGGER_DISABLE | 禁用软件预触发 | | McuSoftwareTriggerToTRGMUX | false | 是否把软件触发送进 TRGMUX通用触发路由矩阵 | 参数名中的 Trigeer 是 NXP MCAL 模板里的原始拼写配置时按原名引用。 ### 10.2 McuChipControlConfiguration芯片控制7 项 | 参数 | 值 | 含义与影响 | |---|---|---| | McuAdcSupply | VDD | ADC 模拟供电选择VDD 主电源档 | | McuEnableAdcSupplyMonitoring | false | 是否使能 ADC 供电监控 | | McuPDBBackToBackSelect | false | PDB 背靠背ADC0/1 连续自动扫描模式开关 | | McuPTB0InterleaveChannelSelect | false | PTB0 引脚是否作为 ADC 交错interleave通道 | | McuPTB1 / PTB13 / PTB14 InterleaveChannelSelect | false | 同上对应 4 个可交错通道引脚影响 ADC 采样通道复用 | ### 10.3 McuFlexTimerConfigurationFTM 定时器全局路由约 60 项按字段族理解 FTM0~FTM7 的全局选项在 SIM 寄存器中逐 FTM 重复。本工程全部为默认/关闭状态。 **字段族说明** | 字段族 | 含义与影响 | |---|---| | McuFTMxCh0~7ModulationSelect仅 FTM0/FTM3各 8 项 | 对应 FTM 通道输出调制fault/刹车控制下的输出使能true该通道参与全局输出调制。电机驱动做硬件保护时使用 | | McuFTMxCh0InputSelect / Ch1InputSelectFTM1/FTM2 | FTM 通道的输入捕获源引脚选择如 FTM2_CH0_INPUT / FTM2_CHI1_INPUT | | McuFTMxExternalClockPinSelect | FTM 外部计数时钟引脚选择本工程全部 TCLK0_PIN。用外部脉冲计数/测频时才相关 | | McuFTMxFault0/1/2Select | FTM 故障刹车输入引脚选择本工程选各自 FTMx_FLTn_PIN。电机 PWM 紧急关断的硬件输入路由 | | McuFTMxOBEControl | FTM 输出缓冲使能OBE影响 PWM 占空比更新方式立即/缓冲同步更新 | | McuFTMxSyncBit | FTM 软件同步触发位选择 | | McuFTMGlobalLoadEnable | FTM 全局装载使能多个 FTM 的 MOD/CnV 寄存器是否由全局信号同步装载 | | McuFTM_GTBControl | FTM 全局时基Global Time Base控制多 FTM 共享时基 | | McuQspiClkSelect | QSPI外部 Flash 接口时钟选择S32K144 无 QSPI 外设保留项 | | McuRMII_ClkSelect / McuRMII_Clk_OBE | 以太网 RMII 时钟选择/输出缓冲无以太网型号上保留均 false | --- ## 第 11 章 McuPublishedInformation复位原因枚举字典只读 厂商预置的 Mcu_ResetType 枚举到 RCM SRS 寄存器语义的映射表。Mcu_GetResetReason() 返回这些值应用据此判断上次复位原因。**不可修改**否则与芯片 RCM 状态位错位。 | 枚举名 | 值 | 含义 | |---|---|---| | MCU_STOP_ACKNOWLEDGE_ERROR_RESET | 0 | STOP 模式应答错误复位 | | MCU_MDM_AP_SYSTEM_RESET | 1 | 调试器 MDM-AP 复位 | | MCU_SW_RESET | 2 | 软件复位 | | MCU_CORE_LOCKUP_RESET | 3 | 内核 Lockup 复位 | | MCU_JTAG_RESET | 4 | JTAG 复位 | | MCU_POWER_ON_RESET | 5 | 上电复位POR | | MCU_EXTERNAL_PIN_RESET | 6 | 外部复位脚 | | MCU_WATCHDOG_RESET | 7 | 看门狗复位 | | MCU_LOSS_OF_LOCK_RESET | 8 | PLL 失锁复位 | | MCU_LOSS_OF_CLOCK_RESET | 9 | 丢时钟复位 | | MCU_LOW_OR_HIGH_VOLTAGE_DETECT_RESET | 10 | 电压异常LVD/HVD复位 | | MCU_NO_RESET_REASON | 11 | 无复位原因 | | MCU_MULTIPLE_RESET_REASON | 12 | 多个复位源同时置位 | | MCU_RESET_UNDEFINED | 13 | 未定义 | | MCU_CMU_LOC_RESET | 14 | CMU 丢时钟复位 | --- ## 第 12 章 本工程时钟树计算实例把参数串起来 以 RUN 模式为例按 arxml 参数推演 SOSC 晶振 8MHzMcuSOSCFrequency, HIGH_FREQ_RANGE, Enabletrue │ ├─ SOSCDIV1 ÷1 8MHz ──→ 直接使用 ├─ SOSCDIV2 ÷2 4MHz ──→ CRP_LPSPI1SPI 波特率基准 └─ SPLL 输入McuSPLLInputClkPreDivider1 8MHz ÷1 × MULT(40) ÷2 160MHzMcuSPLLFrequency ├─ SPLLDIV1 ÷4 40MHz └─ SPLLDIV2 ÷4 40MHz 系统时钟源切换 McuSystemClockSwitch SPLL160MHz ├─ CORE 160 ÷ CoreDiv(2) 80MHz ← CPU 主频 ├─ BUS 160 ÷ BusDiv(2) 40MHz ← CRP_CAN 取 RUN_SYS_CLK 80MHz 供 CAN 算波特率 ├─ SLOW 160 ÷ SlowDiv(4) 40MHz慢时钟域 20MHz 观测 └─ Flash 时钟 20MHz HSRUN 切 FIRC 48MHz 不分频核 48/总线 48VLPR 切 SIRC 8MHz核 4/总线 4/Flash 1M。运行时由 Mcu_InitClock() SMC 模式切换协调完成。 --- ## 第 13 章 参数如何变成代码验证与排错方法 1. **开关类参数** → Mcu_Cfg.h 宏如 McuInitClocktrue → #define MCU_INIT_CLOCK (STD_ON) 2. **数值/枚举类参数** → Mcu_PBcfg.c 中 Mcu_ConfigType 常量表的字段SCG/PCC/SIM/RCM/PMC 的地址-值对 3. **验证步骤** - 改完参数在 DaVinci 中看 Validation 是否有 Error - 点 **Generate** - 打开 Mcu_PBcfg.c对照 S32K1xx RM 的寄存器位定义核对如 PCC_ADC0 项应出现 PCC_PCS_SOSC 之类位组合 - 必要时在调试器中直接查看 SCG/PCC 寄存器实测值。 4. **一致性检查**Config/ECUC/*.arxml当前配置vs GenData/output/*.epc上次生成副本——两者不一致说明改了没生成。 --- ## 第 14 章 本工程当前状态提示与实操练习 ### 14.1 待处理项 arxml 中 **ADC0 外设时钟源已被改为 SOSC**McuPeripheralClockConfig_17SelectSOSC、Enabletrue、Div1即 ADC0 时钟 8MHz但当前 Mcu_PBcfg.c 仍是旧值 PCC_PCS_EXT_CLK_OR_CLK_OFF——**需要重新 Generate 并编译**否则后续配置 Adc 模块转换会因无功能时钟而失败。 ### 14.2 建议练习由易到难 1. 找到 McuGeneralConfiguration临时打开 McuDevErrorDetectGenerate 后在 Mcu_Cfg.h 找到对应宏理解界面勾选→宏→条件编译 2. 把 RUN 内核频率改为 40MHzCoreDiv 4同步检查 CRP_CAN观察 Can 波特率配置的变化 3. 新增一个 McuModeSettingConf如 VLPR跟踪生成代码中模式表的变化 4. 打开 McuClkMonitor_0 监控 SPLL阅读 Mcu_CMU.c 中断处理 5. 写代码读 Mcu_GetResetReason() 并通过不同方式复位RESET 键/看门狗/软件验证第 11 章枚举。 --- ### 附参数统计 | 区域 | 参数项数量 | 性质 | |---|---|---| | CommonPublishedInformation | 8 | 只读身份信息 | | McuDebugConfiguration | 5 | 非标准 API 开关 | | McuGeneralConfiguration | 11 | 标准 API/行为开关 | | McuModuleConfiguration 顶层 AllowedModes | 10 | LPO/RTC/模式范围 | | 时钟方案含 4 时钟源、3 模式树、2 CMU、12 SIM 时钟、3 CRP | ~90 | SCG 硬件配置 | | 32 个 McuPeripheralClockConfig | 160 | PCC 门控/源/分频 | | 模式/中断/电源/复位 | ~25 | SMC/PMC/RCM | | McuSIMConfigADC/Chip/FTM 路由 | ~75 | SIM 硬件选项 | | McuPublishedInformation | 15 | 复位枚举字典 | 学习口诀**General 管编不编、查不查Module 管时钟怎么跑、电从哪里供、异常怎么处理、信号怎么路由改时钟必查 PLL→分频→CRP 三连改完必须 Generate 并对照 PBcfg.c 验证。**
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →