TI中文支持网
TI专业的中文技术问题搜集分享网站

关于CC2541ADC采集的问题

先看看程序

osal_pwrmgr_device(PWRMGR_ALWAYS_ON);
APCFG = 0xFF; P1 = 0x01;//设置P1_0口为高电平
P1DIR |= (1<<0);//设置端口输出状态
P1INP |= (1<<0);//while P1 in input mode,the port state is 3-state HalAdcSetReference(HAL_ADC_REF_AVDD);
// // SimpleProfile_SetParameter(SIMPLEPROFILE_CHAR_SENSOR_12, SIMPLEPROFILE_CHAR_SENSOR_LEN, SENSOR_SendData12);
// // SimpleProfile_SetParameter(SIMPLEPROFILE_CHAR_SENSOR_34, SIMPLEPROFILE_CHAR_SENSOR_LEN, SENSOR_SendData34);
// // SimpleProfile_SetParameter(SIMPLEPROFILE_CHAR_SENSOR_56, SIMPLEPROFILE_CHAR_SENSOR_LEN, SENSOR_SendData56);
SENSOR_SendData[0]=(0xFFFF-(HalAdcRead(HAL_ADC_CHANNEL_7, HAL_ADC_RESOLUTION_14)<<3)); //将14bit数据统一转换为16bit,方便以后扩展,<<3是因为其输出最高位为符号位,恒为0,。sunming
SENSOR_SendData[1]=(0xFFFF-(HalAdcRead(HAL_ADC_CHANNEL_6, HAL_ADC_RESOLUTION_14)<<3));
SENSOR_SendData[2]=(0xFFFF-(HalAdcRead(HAL_ADC_CHANNEL_5, HAL_ADC_RESOLUTION_14)<<3));
SENSOR_SendData[3]=(0xFFFF-(HalAdcRead(HAL_ADC_CHANNEL_4, HAL_ADC_RESOLUTION_14)<<3));
SENSOR_SendData[4]=(0xFFFF-(HalAdcRead(HAL_ADC_CHANNEL_3, HAL_ADC_RESOLUTION_14)<<3));
SENSOR_SendData[5]=(0xFFFF-(HalAdcRead(HAL_ADC_CHANNEL_2, HAL_ADC_RESOLUTION_14)<<3));
SENSOR_SendData[6]=(0xFFFF-(HalAdcRead(HAL_ADC_CHANNEL_1, HAL_ADC_RESOLUTION_14)<<3));
SENSOR_SendData[7]=(0xFFFF-(HalAdcRead(HAL_ADC_CHANNEL_0, HAL_ADC_RESOLUTION_14)<<3));

osal_pwrmgr_device(PWRMGR_BATTERY);

只要加了

osal_pwrmgr_device(PWRMGR_BATTERY);这一句,AD采集就不准确了,P1_0配置高电平无效。但是想控制功耗必须要运行此句。

有什么办法可以保证ADC采集的准确吗?

gs Fong:

采集AD的话,必须要是要再高功耗模式下,才能采集吗??

da qin zheng sheng:

进入PM3,PM2,PM1后ADC应该停止工作的!

gs Fong:

回复 da qin zheng sheng:

不是你说这个问题

我采集ADC前先关闭电源省电管理osal_pwrmgr_device(PWRMGR_ALWAYS_ON);

采集完后再打开。但是这么做会发现ADC采集会有问题。

测试得功耗一直保持在0-2mA,而且测试模拟I/O引脚的电压也不正确。

正常来说如果正确的话,能看到电流表从12mA到0-2mA一个转变。

我的P1_0脚是作为模拟I/O口的电源电压。

gs Fong:

回复 da qin zheng sheng:

主要是我先配置P1_0 为高电平后,测它电压正确来说应该是约3.3V的。

但是我发现只要调用 osal_pwrmgr_device(PWRMGR_BATTERY); 这个语句后。

这个引脚就会变为低电平了。导致会采集不准确。这个是什么原因呢?

有TI员工帮忙解答下吗???

赞(0)
未经允许不得转载:TI中文支持网 » 关于CC2541ADC采集的问题
分享到: 更多 (0)