|
请教STEVAL-IDB007V1用BLE_SensorDemo修改的读ADC没成功的问题
[复制链接]
本帖最后由 viphotman 于 2018-1-26 19:13 编辑
刚有在keil 下用BLE_SensorDemo 加入读ADC的功能,但是读出的值为0;
app用iOS :lightblue android:nRF Connect
程序是在BLE_SensorDemo基础上,参看工程 Project\BlueNRG1_Periph_Examples\ADC\Polling 里的ADC的使用;
1 在文件BlueNRG1_conf.h 里加入
#include "BlueNRG1_adc.h" // RK ADD
2 定义函数与数据
- ADC_InitType xADC_InitType;
- void ADC_Configuration(void)
- {
- SysCtrl_PeripheralClockCmd(CLOCK_PERIPH_ADC, ENABLE);
-
- /* Configure ADC */
- /* ADC_Input_AdcPin1 == ADC1 */
- /* ADC_Input_AdcPin2 == ADC2 */
- /* ADC_Input_AdcPin12 == ADC1 - ADC2 */
- xADC_InitType.ADC_OSR = ADC_OSR_200;
- //ADC_Input_BattSensor; //ADC_Input_TempSensor;// ADC_Input_AdcPin1 // ADC_Input_AdcPin12 // ADC_Input_AdcPin2
- xADC_InitType.ADC_Input = ADC_Input_AdcPin12; //ADC_Input_AdcPin12;
- xADC_InitType.ADC_ConversionMode = ADC_ConversionMode_Single;
- xADC_InitType.ADC_ReferenceVoltage = ADC_ReferenceVoltage_0V6;
- xADC_InitType.ADC_Attenuation = ADC_Attenuation_9dB54;
-
- ADC_Init(&xADC_InitType);
-
- /* Enable auto offset correction */
- ADC_Calibration(ENABLE);
- ADC_AutoOffsetUpdate(ENABLE);
- }
复制代码
3 在main()函数中调用ADC相关的设置函数
- /* ADC Initialization */
- ADC_Configuration();
- /* Start new conversion */
- ADC_Cmd(ENABLE);
复制代码
4 在 main()中的while(1)里读取ADC值;
if( ADC_GetFlagStatus(ADC_FLAG_EOC)) {
/* Read converted data */
adc_value = ADC_GetConvertedData(xADC_InitType.ADC_Input, xADC_InitType.ADC_ReferenceVoltage);
//SdkDelayMs(100);
adc_value = adc_value/1000;
Clock_Wait(100);
//adc_value = 0x2345; //用这个直接可传到App上;
ADC_Cmd(ENABLE);
}
5 将adc_value的值传到App里,这里,我将3D sensor 的传数据的函数修改为传adc_value的值,再用App去读值;
- extern float adc_value;
- tBleStatus Acc_Update(AxesRaw_t *data)
- {
- uint8_t buff[6];
-
- tBleStatus ret;
- HOST_TO_LE_16(buff,-data->AXIS_Y);
- HOST_TO_LE_16(buff+2,data->AXIS_X);
- HOST_TO_LE_16(buff+4,-data->AXIS_Z);
-
- //adc_value
- buff[0]= 0xfe;
- buff[1]= 0xff;
- buff[2]= 0xff;
- buff[3]= 0xfe;
- buff[4]= adc_value/256;
- buff[5]= adc_value;
- ret = aci_gatt_update_char_value(accServHandle, accCharHandle, 0, 6, buff);
- if (ret != BLE_STATUS_SUCCESS){
- PRINTF("Error while updating Acceleration characteristic: 0x%02X\n",ret) ;
- return BLE_STATUS_ERROR ;
- }
- return BLE_STATUS_SUCCESS;
-
- }
复制代码
6 结果显示,ADC的值一直为0,现在还没有找出问题所在,来网上请教下;
|
|