12
返回列表 发新帖
楼主: qchwu

[其他] ADC_INIT_CHANNEL_STRUCT 疑问

[复制链接]

该用户从未签到

11

主题

44

帖子

0

注册会员

Rank: 2

积分
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;
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-21 06:39 , Processed in 0.084353 second(s), 19 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表