一、 前言
在车规 MCU 领域,大部分用户都会采用 AUTOSAR 标准的软件包。芯驰提供满足 AUTOSAR 标准的 MCAL,实现微控制器、存储、通信和 I/O 等硬件的驱动程序,可以支持 Vector、EB、普华、ETAS、恒润(排名不分先后)等国内外主流 AUTOSAR 厂商的软件平台。为便于客户评估这些基本驱动模块,芯驰提供了 AUTOSAR Demo 程序,在设定的应用场景中展示这些基本模块的调用。
本文介绍 CAN 的配置与应用测试。
硬件平台:芯驰 E3640 SD103_E3_GATEWAY_A02_043 开发板
软件平台:SemiDrive_E3_MCAL_V2.0
二、 PORT 模块配置
1. 分析原理图
从原理图可以看出引脚使用情况,本次实验使用 J2304 连接器 1-5 引脚,可以看出对应关系如下图中表格所示
2. 设置 GPIO 组及 GOIO 属性
根据原理图可以看出使用的是 GPIO_C,在 PortPin 标签栏下设置 Pin 脚,重点 Mux 栏位配置成 ADC 模式,PinSetting 配置成 ANALOG_3V3
三、 ADC 模块配置
1. AdcChannel 配置
查看 E3640 数据手册,以 GPIO_C12 为例,可以看出 GPIO_C12 可以使用 ADC2/ADC3 控制器,这里使用 ADC2,对应的通道为 CH5_N_MUX_6,此处的 6 对应到 AdcChannelMux 的数值,此处的 5 对应AdcPhysicalChannelId,计算方法为 5*2=10,如果为 CH5_P,则为 5*2+1=11
2. 设置 AdcGroupDefinition
如下图:设置AdcGroupId 为 0,triggSrc 为 ADC_TRIGG_SRC_SW,然后在配置 AdcGroupDefinition,添加 3.1 步骤中的 AdcChannel
3. MCU 模块配置
勾选 ADC2。
4. 保存与代码生成
四、 测试
1. 运行测试程序
开发板 debug 接口连接电脑,打开串口助手,开启开发板后在串口助手中输入测试命令 adc init, adc test,其中第一次 test ,J2304_1-J2304_5 都是悬空状态,可以看出采样值接近于 0,第二次 test,将 J2304_5 引脚接至 3.3V 电源,因为前端有分压电阻 16.9K,32.4K,经计算 3.3*32.4/(32.4+16.9K) = 2.168,测试结果为 2.157
2. 程序分析
程序中 Adc_SetupResultBuffer(0, adc0_group1_buffer); 第一个参数 0,对应的 MCAL 配置 3.2 节中 AdcGroupId,此处 AdcGroup 中的信息会以数组的形式存放在 Adc_PbCfg.c 中,因此第一个参数需要对应到数组的元素,在不同 AdcHwUnit 中设置的 Group 都统一顺序存放在数组中,此处调试不通或采样值错乱时须关注此数组。
Adc_SetupResultBuffer(0, adc0_group1_buffer);函数会把采样值存放在 adc0_group1_buffer 中,根据设置的采样次数,各个通道顺序存放。
Adc_ReadGroup(0, adc0_group1_result_buffer); 函数会把采样值存放在 adc0_group1_result_buffer 中,根据观察存放的是 adc0_group1_buffer 中每个通道的最后一次采样值,所以如果需要滤波等操作要处理 adc0_group1_buffer 中的数据。
五、 参考文档
- 《Semidrive_PORT_Module_User_Manual.pdf》
- 《Semidrive_ADC_User_Manual.pdf》
- 《Semidrive_E3_Mcal_Release_Note.pdf》
评论