Ecu Spectrum是KPIT开发的AutoSAR配置工具. 具有导入、输出arxml; 校验配置合理性; 提示错误; 生成代码的功能. 本系列文章将以该工具为依托给大家介绍MCAL各模块的主要功能和配置参数, 帮助理解Auto SAR. 对于开发类似配置工具也具有借鉴意义. 该工具版权归属KPIT, 本系列文章仅用于教育传授知识, 不用于商业用途. 想使用该工具的可以向KPIT公司购买.
本文以SPI模块的配置为例介绍Ecu Spectrum的使用.
创建工程
1. 打开该软件,菜单了“File-->New”打开创建工程窗口。选择存放工程的路径。然后到了比较重要的一步,导入包含配置信息的文件(每个模块都不同),Spi模块在\Devices\Fx3\SPAL\Spi\Software_Source_Code\ssc\gce_input路径下。
【注意】在这一步可以导入多个模块,用于解决模块之间有依赖关系的情况。这里又添加了一个MCU模块。
2. 单击OK,创建完成后的工程如下图示。
配置SPI
1. /ECU Configuration Modules/SPI/Spi0 ShortName值可以任意设置,只是一个标识;
2. /ECU Configuration Modules/SPI/Spi0/CommonPublishedInformation 下为一些版本信息;
3. /ECUConfigurationModules/SPI/Spi0/SpiDriver0包括SpiMaxChannel、SpiMaxJob、SpiMaxSequence,这三个值限制下面配置的Channel、Job、Sequence的个数;
4. /ECU Configuration Modules/SPI/Spi0/SpiChannel 是Channel的一些信息没很大问题;
5. /ECU Configuration Modules/SPI/Spi0/SpiExternalDevice是SPI的一些具体信息,需要注意的有:
SpiBaudrate可以不用设置(填0)这种情况下它的配置被SpiInputClockSelect代替,这里配置成500KHz,CTL1的CBnKS[2:0]=100,SpiInputClockSelect选择FXP1_DIVBY_32;
SpiCsIdentifier:这个是片选脚的标识Fx3中不可用;
SpiPortPinselect:选择某个Pin脚作为片选脚,生成的代码中对应的是ucPortGrpRegAddress=所选Pin脚所在组地址、ucPortPinMask=选中某一个Pin脚;
SpiDataShiftEdge:该参数定义了SPI数据移位边缘即相位,LEADING=1,TRAILING=0;
SpiEnableCs:Fx3中未用到;
SpiShiftClockIdleLevel:这个参数定义了SPI移位时钟空闲时是高还是低(看波形能看出来);
SpiTimeClk2Cs:这个参数提供时钟和片选之间的时间选择,范围从0到100微妙。这个参数被SpiClk2CsCount参数代替。
SpiClk2CsCount:这个参数定义了时钟和片选之间的最小时间,允许的范围是0到100计数值;
SpiInputClockSelect:设置了SPI的预分频因子;
SpiClockFrequencyRef:定义了Mcu工作频率格式为/My_Configuration/Mcu0/McuModuleConfiguration0/McuClockSettingConfig0。
6. /ECU Configuration Modules/SPI/Spi0/SpiJob:Job的相关信息
SpiHwUint:选择某个SPI模块,CSIB0-CSIB3,跟配置文件中的ucHwUnitIndex(0-3)、ucHWUnitDetails(1-4)相关;
ChannelAssignment:跟某个Channel关联起来,这个Job跟某个Channel关联;
DeviceAssignment:跟某个SPIExternalDevice模块关联。
7. /ECU Configuration Modules/SPI/Spi0/SpiSequence:
JobAssignment:跟某个Job关联。
生成配置文件&代码
1. 校验。配置完成后单击工具栏上的校验一下配置是否正确。如果有错误,根据错误提示信息修改。
2. 若没错误,则单击菜单栏中产生带有配置信息的配置文件。
选择配置文件保存路径,选中要产生配置文件的模块,单击“Generate”,即可产生(后缀为.arxml)。
3. 生成代码。打开Windows Dos工具,进入配置文件所在路径(配置文件放到“产生代码的工具”路径中),输入命令“spi_fx3 Description.arxml”如下图所示(多个模块时要分别执行)。根据提示信息有错误改错误,有提醒改提醒直至正确。
Mcu配置中有一个错误,根据错误提示修改。
代码在Spi_Output、Mcu_Output中。
这里不再赘述MCU的配置过程,只介绍MCU模块的一些配置结果:
McuSubOsciEnable=false;//SubOsci暂时未用到,所以关闭这个时钟源
McuMainOsciFrequency=8000000;//外部晶振频率
McuClkModeSelect=MCU_CLK_SETTING_PLL_PLL;//选择产生CPU时钟的方式,选择这种方式时McuMainSysClkEnable和McuPllClkEnable必须配置为ON
McuCpuMainSysClk=32000000;//配置Cpu时钟为32MHz
McuPreScalerThree和McuProgramClk可配置为true/false,根据个人应用情况
McuFxpOneFrequency=fxx、fxmpll或fxx/2、fxmpll/2 //因为OB_7B中McuPeripheralClkDiv=FXX_DIVBY_2所以此处为fxp1=fxx/2=16MHz
【注意】在MCU的配置中
/My_Configuration/Mcu0/McuGeneralConfiguration0/McuOptionsByte1BConfig0这一项的配置不会产生对应的代码,需要手动修改启动文件Startup_DF3385_OB_0085.850。必须跟这个配置一致。在PORT模块“创建工作空间&工程”一节中有详细介绍。