【RH850 MCAL】MCAL配置工程搭建


前言

文章主要用途是记录和分享,要是被设为VIP文章,请私我更改!
太懒了不想写,直接看正文吧 0.0

1. 下载和安装

REF:参考链接
Note:已经安装好的工程可以直接复制使用,以下记录的是从无到有的过程。

1.1. MCAL代码

  1. 登录瑞萨官网 (需要注册,很方便)

  2. 选择合适的型号,点击进行下载。
    在这里插入图片描述

  3. 下载后是一个压缩包,解压后得到3个压缩包。(C1M型号的)
    在这里插入图片描述

  4. 解压每个压缩包,里面有一个可运行的.exe程序文件,执行此程序提出其中的代码。
    在这里插入图片描述

  5. 可将.exe中的文件统一提取到.\CBD2100679_D00\ThirdParty路径下,便于代码生成脚本的调用。
    在这里插入图片描述

1.2. 配置工具Configurator

  1. 还是在瑞萨官网,下载Davinci Configurator(CFG)。
    • 瑞萨的MCAL是在CFG配置的,不是EB.
    • 也可以去vector官网下载最新版本的CFG.

在这里插入图片描述

  1. 解压DaVinci_related_files_R19-11.zip如下所示。
  • CBDxxx.exe是CFG的工具安装包。
  • LLWEBxxx.pdf是MCAL和CFG关联的说明文档。(以下是按照pdf中提到的内容进行设置。)
    在这里插入图片描述
  1. 安装CBDxxx.exe。(密码见LLWEBxxx.pdf)
  2. 将每个模块的arxml文件复制到.\CBD2100679_D00\Components\MSR_Vector_SLP4\BSWMD下
    每个模块有两个arxml,以adc为例。
    • \X1X\C1x\modules\adc\definition\4.2.2\C1MA\R422_ADC_C1MA_78.arxml (多个arxml只要一个,_78和_75留一个_78)
    • \X1X\modules\adc\generator\R422_ADC_C1x_BSWMDT.arxml

可以用这个脚本复制arxml:

import sys
import shutil
import os


def get_files_by_ex(path, ex):
    files = []
    for file in os.listdir(path):
        file = os.path.join(path, file)
        if os.path.isdir(file):
            files.extend(get_files_by_ex(file, ex))
        elif file.endswith(ex):
            files.append(file)
    return files


if __name__ == '__main__':
    path_s = r'.\AUTOSAR_RH850_C1M\AUTOSAR_RH850_C1M-Ax_MCAL_Ver42.02.00_SPAL_CAN_LIN\all\X1X\C1x\modules'
    path_d = r'.\AUTOSAR_RH850_C1M\CBD2100679_D00\Components\MSR_Vector_SLP4\BSWMD'
    file_ex = '.arxml'

    for file in get_files_by_ex(path_s, file_ex):
        shutil.copy(file, path_d)

2. CFG工程配置

2.1. 新建CFG工程

  1. 点击菜单栏中的File,选择 New ECU Project…在这里插入图片描述

  2. 配置工程名称和路径
    在这里插入图片描述

  3. 后面的配置默认即可
    在这里插入图片描述

2.2. 添加模块

  1. 在Project Settings中添加需要的模块。
    在这里插入图片描述
  2. 勾选需要的模块,点finish即可。
    在这里插入图片描述
  3. 如果有其他工程的模块,可以导入其他的arxml。
    • 点击菜单栏中的File,选择 Import
      在这里插入图片描述

    • 选择并添加arxml
      在这里插入图片描述

    • 勾选导入的模块,并选择导入方式是替换还是合并。
      在这里插入图片描述

2.3. 添加依赖模块

以ADC模块为例,需要用到DemEventParameter,则需要添加DEM模块,但DEM的错误不需要关心。
在这里插入图片描述
添加的方式和2.2中提到的类似,但要从"AUTOSAR Standard Definition"中选择。
在这里插入图片描述

3. 代码生成脚本

3.1. 瑞萨生成工具

CFG中并不能直接生成代码,调用的是瑞萨的生成工具。按照如下方式调用并传入参数。
在这里插入图片描述

3.2. 自定义脚本

以下是经过封装的脚本GenCode.bat,修改其中的一些参数路径即可直接使用。
使用方式:GenCode.bat + Module,比如 GenCode.bat Adc

@echo OFF
setlocal enabledelayedexpansion

REM this script calling by CFG, should be put in the *.dpa path.
set current_dir=%cd%

REM Davinci project name *.dpa
set project=rh850

REM output dir
set out_dir=%cd%\Appl\GenData

REM rh850 mcal project
set "ThirdParty_dir=%current_dir%\..\..\ThirdParty"

REM rh850 mcal generate tool
set "generater=%ThirdParty_dir%\X1X\common_platform\generic\generator\MCALConfGen.exe"

REM rh850 mcal module
set "valid_module=Adc Can Dio Fls Gpt Icu Lin Mcu Port Pwm Spi Wdg"

REM CFG generate flag. 0: OK, 1: NOK
set ret_CFG=0

REM validate input module.
for %%a in (%valid_module%) do (
    if /i "%%a"=="%1" (
        goto :gen_process
    )
)

REM invalid module
echo Error: Unknown module %1
set ret_CFG=1
goto :end

:gen_process
REM Adc, Can, Dio, Fls, Gpt, Icu, Lin, Mcu, Port, Pwm, Spi, wdg
set p1="%ThirdParty_dir%\X1X\C1x\modules\%1\sample_application"
set p2="%current_dir%\Config\ECUC\%project%_%1_%1_ecuc.arxml"
set p3="%ThirdParty_dir%\X1X\C1x\common_family\generator\Sample_Application_C1x.trxml"
set p4="%ThirdParty_dir%\X1X\C1x\modules\%1\generator\R422_%1_C1x_BSWMDT.arxml"
set p5="%current_dir%\Config\ECUC\%project%_Mcu_Mcu_ecuc.arxml"
set p6="%current_dir%\Config\ECUC\%project%_Dem_Dem_ecuc.arxml"
set p7="%current_dir%\Config\ECUC\%project%_Os_Os_ecuc.arxml"
set p8="%current_dir%\Config\ECUC\%project%_EcuM_EcuM_ecuc.arxml"
if /i "%1"=="mcu" (
    set p4="%ThirdParty_dir%\X1X\C1x\modules\%1\generator\R422_MCU_C1MA_BSWMDT.arxml"
    set p5=""
)
REM due to %generater% limited, should working in the module dir.
cd %p1%

REM call %generater%. Redundant parameters don't matter for each module.
%generater% -m %1 -o %p1% %p2% %p3% %p4% %p5% %p6% %p7% %p8%

REM copy code to the out_dir
if "%errorlevel%"=="0" (
    xcopy /Y include %out_dir%\include\
    xcopy /Y src %out_dir%\src\
) else (
    set ret_CFG=1
    echo Error: %1 generate failed.
)
copy %1.log %out_dir%\%1.log
goto :end


:end
cd %current_dir%
exit /b %ret_CFG%

3.3. CFG生成代码

CFG可以调用自定义的脚本,调用上述脚本即可生成代码。

  1. 在Project Setting中,按以下方式配置Generation Steps。
    在这里插入图片描述

  2. 点击Generate按钮,即可出现需要生成的模块。
    在这里插入图片描述

  3. 点击菜单栏中的View,选择 Generation Result,出现生成模块的结果。
    在这里插入图片描述

  4. 右键模块,并选择"Open …",即可在Console窗口看到输出信息。
    在这里插入图片描述

总结

RH850 MCAL配置工程主要是生成代码的脚本比较麻烦,传入参数没有说明,好在每个模块可以传入相同的arxml,多余的参数也不会产生错误。另外,如果想要传入参数方便,可以尝试在新建CFG工程时,将ECUC Files设置为一个。
欢迎批评指正和探讨交流。

<think>好的,我现在需要回答用户关于使用EB软件配置MCAL的ADC的问题。首先,我需要回忆一下MCAL和EB工具的相关知识。MCAL是微控制器抽象层,属于AUTOSAR标准的一部分,负责直接访问微控制器的硬件资源,比如ADC、GPIO、PWM等。而EB Tresos是Elektrobit公司开发的一款配置MCAL的工具,用户可以通过图形界面配置微控制器的各个模块,生成代码,集成到AUTOSAR架构中。 用户的问题是“EB软件配置MCAL的ADC”,所以我需要先明确用户可能的背景。用户可能是汽车电子领域的工程师,正在使用AUTOSAR架构开发ECU,需要配置ADC模块来读取传感器信号。用户可能对AUTOSAR和MCAL有一定了解,但具体操作步骤可能不太熟悉,需要指导。 接下来,我需要组织回答的结构。按照用户的要求,结构要清晰,逐步解决问题。通常配置MCAL模块的步骤包括创建工程配置MCAL模块、生成代码、集成验证等。对于ADC配置,可能需要具体到参数设置,比如通道、采样时间、触发方式等。 首先,要介绍EB Tresos的基本操作,比如如何创建或打开一个工程,这可能涉及到选择正确的MCAL版本和微控制器型号。然后进入ADC模块的配置,需要说明如何添加ADC模块,配置组、通道、转换模式等参数。此外,可能还需要配置ADC的时钟、中断、DMA等相关设置。 需要注意用户提到的所有数学表达式要用$...$格式,比如在提到采样时间计算公式时,可能需要用LaTeX表达。例如,采样时间计算可能涉及到时钟分频和周期数,公式如$T_{sample} = (分频系数 \times 周期数) / 时钟频率$,需要用正确的格式。 还要考虑用户可能遇到的常见问题,比如配置后代码无法编译,或者ADC读数不正确,这时候需要检查配置参数是否正确,时钟配置是否匹配,引脚映射是否正确等。需要给出一些检查建议,比如使用调试工具查看寄存器值,或者检查生成的代码是否符合预期。 另外,需要确保回答中的技术细节准确,比如EB Tresos中的具体菜单选项名称,配置参数的命名等。这些可能需要参考EB的官方文档或用户手册,但可能手头没有这些资料,需要依靠记忆或一般经验。如果有不确定的地方,应该建议用户查阅官方文档或联系支持。 最后,总结整个配置流程,并提醒用户测试和验证的重要性,确保ADC功能正常。可能还需要提到后续步骤,比如如何将生成的代码集成到应用层,或者如何与RTE交互等,但用户的问题可能集中在配置步骤,所以这部分可以简要带过。 现在需要检查是否有遗漏的步骤,或者是否有技术错误。例如,配置ADC时是否需要考虑硬件引脚分配,是否要配置DMA或中断处理函数,是否需要设置触发源(如定时器触发或软件触发)。这些细节都需要在回答中涵盖,但不要过于深入,以免让用户感到困惑。 另外,用户可能想知道如何验证配置是否正确,比如通过读取ADC值并输出调试信息,或者使用示波器检查信号。这些验证方法可以简要提及,帮助用户确认配置是否成功。 最后,确保语言简洁,用中文表达,符合用户的要求,并且遵循系统级指令中的格式要求,特别是数学表达式和独立公式的格式。</think>以下为分步介绍EB Tresos配置MCAL中ADC模块的流程,包含关键公式和硬件参数计算示例: $$ \text{ADC采样时间计算公式: } T_{sample} = \frac{(N_{cycles} + 12.5)}{f_{ADC\_CLK}} \quad (\text{其中} N_{cycles} \geq 1.5) $$ ### 一、环境准备 1. 安装EB Tresos Studio(版本需匹配MCAL包) 2. 获取对应芯片的MCAL包(如TC3xx MCAL 4.0.2) 3. 新建/打开工程时选择正确的Device Derivative(如TC397) ### 二、ADC模块配置 1. **添加ADC模块** - 在"Modules"窗口右键 → Add Module → Adc - 设置基础参数: - `AdcClockFrequency`:输入$f_{ADC\_CLK}$(需与系统时钟分频一致) - `AdcMaxGroupPriority`:定义转换组优先级 2. **配置转换组(Group)** ```xml <AdcGroup> <AdcGroupName>GROUP_SENSOR</AdcGroupName> <AdcGroupAccessMode>ADC_ACCESS_MODE_SINGLE</AdcGroupAccessMode> <AdcGroupConversionMode>ADC_CONV_MODE_CONTINUOUS</AdcGroupConversionMode> <AdcGroupTriggerSource>ADC_TRIGG_SRC_SW</AdcTriggerSource> </AdcGroup> ``` 3. **通道参数设置** - 采样时间计算示例: - 当$f_{ADC\_CLK} = 80MHz$时,选择$N_{cycles}=20$ $$ T_{sample} = \frac{(20 + 12.5)}{80 \times 10^6} = 0.40625\mu s $$ - 配置项包含: - `AdcChannelUnit`:选择模拟输入单元(如AN0) - `AdcChannelResolution`:设置12-bit或10-bit - `AdcChannelSamplingTime`:填入计算值$0.40625\mu s$ ### 三、硬件接口映射 1. 在"Port"模块中: - 使能对应引脚为模拟输入模式 ```c /* 示例:配置P14.0为ADC输入 */ Port_SetPinDirection(PORT_P14, 0, PORT_PIN_IN); Port_SetPinMode(PORT_P14, 0, PORT_PIN_ANALOG); ``` ### 四、中断配置(如需要) 1. 在"Interrupt"模块: - 启用ADC转换完成中断 - 设置中断优先级和ISR名称 ```c /* 中断服务例程声明 */ ISR(Adc_Group0_ConversionComplete) { Adc_GetGroupResult(ADC_GROUP_0, &rawValue); } ``` ### 五、代码生成与集成 1. 点击"Generate Code"生成: - `Adc_Cfg.c`:包含所有配置参数的结构体 - `Adc_PBcfg.c`:初始化配置数据 2. 在应用层调用API: ```c Adc_Init(&Adc_Config); // 初始化 Adc_SetupResultBuffer(ADC_GROUP_0, &resultBuffer); Adc_StartGroupConversion(ADC_GROUP_0); // 启动转换 ``` ### 六、验证与调试 1. 常见问题排查表: | 现象 | 检查点 | 工具方法 | |---------------------|--------------------------------|----------------------------| | 无转换结果 | 1. 时钟使能位<br>2. 触发信号 | 读取ADC_STMx寄存器 | | 数值跳变异常 | 1. 参考电压稳定度<br>2. 滤波参数 | 示波器观察AVDD/VREF | | 转换时间不符预期 | 1. 分频系数计算<br>2. STM周期数 | 逻辑分析仪捕获CONVST信号 | > **提示**:对于汽车电子应用,需特别注意: > - ISO26262相关配置(如安全库版本选择) > - 多核系统中ADC资源分配 > - 窗口看门狗与ADC超时检测的协同配置 建议通过A2L文件生成工具验证ECU_Description.arxml中的ADC信号映射是否符合ASAM标准。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kook 1995

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值