在线时间5 小时
UID94779
注册时间2007-8-7
NXP金币0
该用户从未签到
注册会员

- 积分
- 92
- 最后登录
- 1970-1-1
|

楼主 |
发表于 2014-7-29 16:05:37
|
显示全部楼层
回复:ADC_INIT_CHANNEL_STRUCT 疑问
adc_kadc.c中的_adc_hw_ioctl(MQX_FILE_PTR f, _mqx_uint cmd, pointer param_ptr)关于硬件平均还有个问题,应该进行修改。
case ADC_IOCTL_SET_HW_AVERAGING:
/* sets sample averaging by hardware; param_ptr = (uint_32) cycles - see AVGE bit in Reference Manual */
if (adc_ch_bundle != NULL)
return ADC_ERROR_ONLY_DEVICE; /* averaging must be set on device file, not on channel file */
adc_ptr = (ADC_MemMapPtr) _bsp_get_adc_base_address(adc_num);
if (*(uint_32*) param_ptr == 0)
adc_ptr->SC3 &= ~ADC_SC3_AVGE_MASK; /* if zero cycles, disable averaging */
else {
// qch 20140729
adc_ptr->SC3 &= ~ADC_SC3_AVGS_MASK;
if (*(uint_32*) param_ptr == 32)
adc_ptr->SC3 |= ADC_SC3_AVGS_32 | ADC_SC3_AVGE_MASK;
else if (*(uint_32*) param_ptr == 16)
adc_ptr->SC3 |= ADC_SC3_AVGS_16 | ADC_SC3_AVGE_MASK;
else if (*(uint_32*) param_ptr == 8)
adc_ptr->SC3 |= ADC_SC3_AVGS_8 | ADC_SC3_AVGE_MASK;
else if (*(uint_32*) param_ptr == 4)
adc_ptr->SC3 |= ADC_SC3_AVGS_4 | ADC_SC3_AVGE_MASK;
else
return ADC_ERROR_BAD_PARAM; /* invalid parameter for ioctl command */
//end
// adc_ptr->SC3 &= ~ADC_SC3_AVGS_MASK;
// if (*(uint_32*) param_ptr == 32)
// adc_ptr->SC3 |= ADC_SC3_AVGS_32 | ADC_SC3_AVGE_MASK | ADC_SC3_ADCO_MASK;
// else if (*(uint_32*) param_ptr == 16)
// adc_ptr->SC3 |= ADC_SC3_AVGS_16 | ADC_SC3_AVGE_MASK | ADC_SC3_ADCO_MASK;
// else if (*(uint_32*) param_ptr == 8)
// adc_ptr->SC3 |= ADC_SC3_AVGS_8 | ADC_SC3_AVGE_MASK | ADC_SC3_ADCO_MASK;
// else if (*(uint_32*) param_ptr == 4)
// adc_ptr->SC3 |= ADC_SC3_AVGS_4 | ADC_SC3_AVGE_MASK | ADC_SC3_ADCO_MASK;
// else
// return ADC_ERROR_BAD_PARAM; /* invalid parameter for ioctl command */
}
break; |
|