软件包 |
使用工具 |
使用软件 |
拨码 |
例程 |
示例板子 |
二、 测试过程
1、代码分析
函数调用流程:main->adc_sync_demo-> print_adc_data-> adc_sample_data_check。
图 (1)
图 (2)
adc_sample_data_check:求平均值,与 log 中显示的信息一致。
print_adc_data:打印转换得知的电压,与 log 中显示的信息一致;
图 (3)
图 (4)
adc_sync_demo 函数:
ana_param 参数配置:采样时间,参考电压(测量得到板子的 ADC REF 值,并设置 BOARD_ADC_REF_VOLT 为测得的 ADC REF 的值),输入模式;
rc0_entry_cfg 请求通道配置:采集的通道,采集所使用的参数->触发模式(软件触发还是硬件触发),触发次数(必须在 1-16 次之间);
rc0_cfg RC 配置:定时器计数结束值,定时器比较值,当前 RC entry,起始 RC entry,结束 RC entry,定时器模式,RC 触发模式等,这里是软件触发,倒数第二个参数
SDRV_ADC_RC_TRG_MODE_HW;
sync_cfg:配置同步模式 slot 间隔最大值为 50clock ,其中根据 ADC 最大采样时间 34.5clock,ADC 固定转化时间 13.5clock,再预留 2clock 时间间隔,将 RC entry 变量依次添加至 cid_buf 数组中,ADC 同步开启后将按照 cid_buf 数组的顺序存放 ADC 转化结果。
sdrv_adc_init:初始化 ADC 模块;
将 ana_param 依次配置到 0~2 位置上;
将 rc0_entry_cfg 依次配置到 rc0 的 0 位置上;
先启动触发再启动同步模式。以免 slot 启动后收不到触发信号,导致 slot 空转;
…
adc_sample_data_check:见注释;
清空FIFO残余数据;
图 (5)
main 函数:
初始化相应的时钟->复位相关模块->初始化中断向量->初始化引脚->初始化调试串口->将实际引脚连接到 ADC 的输入通道->函数 adc_sync_demo;
这段解释一下:
#ifdef TEST_WITH_ADC1
printf("ADC1 actual clock rate %d Hz\n", sdrv_ckgen_get_rate(CLK_NODE(g_ckgen_ip_adc1)));
#elif defined ( TEST_WITH_ADC2 )
printf("ADC2 actual clock rate %d Hz\n", sdrv_ckgen_get_rate(CLK_NODE(g_ckgen_ip_adc2)));
#endif
本 demo 默认定义了 TEST_WITH_ADC2,如果定义 TEST_WITH_ADC1,则打印 ADC1 actual clock rate %d Hz\n:
图(6)
图 (7)
2、测试结果
运行 adc_sync_poll.eww,上电,log 打印:
图 (8)
图 (9)
本 Demo 执行完成后,ADC 转换完成 A12、A14、A15 这些管脚上的电压信号,并输出相应的电压数据。
三、 参考资料:
《E3400_E3600_MCU_TRM_Rev01.00.pdf》
《E3400_E3600_MCU_Datasheet_Rev00.19.pdf》
《SD103_E3_GATEWAY_ePOWERTRAIN_A02_丝印图.pdf》
《SD103_E3_REF_GATEWAY_ePOWERTRAIN_A02_SCH》
https://www.wpgdadatong.com.cn/blog/detail/72125
https://www.wpgdadatong.com.cn/blog/detail/72867
https://www.wpgdadatong.com.cn/blog/detail/70469
例程下《readme.txt》
欢迎在博文下方留言评论,我们会及时回复您的问题。如有更多需求,欢迎联系大联大世平集团 ATU 部门:atu.sh@wpi-group.com
作者:Rita Liu / 刘倩
评论