在线时间54 小时
UID3448572
注册时间2017-12-21
NXP金币0
TA的每日心情 | 开心 2018-11-23 14:51 |
---|
签到天数: 2 天 连续签到: 1 天 [LV.1]初来乍到
中级会员
 
- 积分
- 299
- 最后登录
- 2019-1-2
|
本帖最后由 chanyim 于 2018-7-24 19:13 编辑
ADC1SE2,ADC1SE3,ADC1SE6三个数据采集量,需要连续循环不断采集
若是一个采集量可以设置软件触发,设置连续采集
adConv1_ChnConfig0.channel = 2U;
ADC_DRV_ConfigChan(FSL_ADCONV1, 0U, &adConv1_ChnConfig0);
while(1)
{
ADC_DRV_GetChanResult(FSL_ADCONV1, 0U, (uint16_t *)&key_1);
}
可以在循环里面不断得到key_1值;
但是有3个量,很想这么做:
adConv1_ChnConfig0.channel = 2U;
ADC_DRV_ConfigChan(FSL_ADCONV1, 0U, &adConv1_ChnConfig0);
adConv1_ChnConfig1.channel = 3U;
ADC_DRV_ConfigChan(FSL_ADCONV1, 1U, &adConv1_ChnConfig1);
adConv1_ChnConfig2.channel = 6U;
ADC_DRV_ConfigChan(FSL_ADCONV1, 2U, &adConv1_ChnConfig2);
while(1)
{
ADC_DRV_GetChanResult(FSL_ADCONV1, 0U, (uint16_t *)&key_1);
ADC_DRV_GetChanResult(FSL_ADCONV1, 1U, (uint16_t *)&key_2);
ADC_DRV_GetChanResult(FSL_ADCONV1, 2U, (uint16_t *)&key_3);
}
在循环里面不断得到key_1,2,3值,但是行不通,只有key_1值正确,貌似是因为只有0U支持软触发,其它不支持;
无奈之举:
while(1)
{
adConv1_ChnConfig0.channel = 2U;
ADC_DRV_ConfigChan(FSL_ADCONV1, 0U, &adConv1_ChnConfig0);
ADC_DRV_WaitConvDone(FSL_ADCONV1);
ADC_DRV_GetChanResult(FSL_ADCONV1, 0U, (uint16_t *)&key_1);
adConv1_ChnConfig0.channel = 3U;
ADC_DRV_ConfigChan(FSL_ADCONV1, 0U, &adConv1_ChnConfig0);
ADC_DRV_WaitConvDone(FSL_ADCONV1);
ADC_DRV_GetChanResult(FSL_ADCONV1, 0U, (uint16_t *)&key_2);
adConv1_ChnConfig0.channel = 6U;
ADC_DRV_ConfigChan(FSL_ADCONV1, 0U, &adConv1_ChnConfig0);
ADC_DRV_WaitConvDone(FSL_ADCONV1);
ADC_DRV_GetChanResult(FSL_ADCONV1, 0U, (uint16_t *)&key_3);
}
3行wait有点耗时(不加wait容易出错),放到定时器里也感觉不合适,求指点。
最佳答案
chanyim 发表于 2018-7-25 11:56
以pit为例,每次中断都要转换(X为1,2,6)
adConv1_ChnConfig0.channel = XU;
ADC_DRV_ConfigChan(FSL_AD ...
楼主你好
请尝试使用PDB0 Channel0 的pretrigger去硬件触发预先在SC1A ...
|
|