думал просто включить 16й канал ацп и всё к которому подключен датчик.. но данные близки к 0.. может както еще гдето нужно его включить.. а когда получу данные как то их в цельсии пересчитать..
CODE
void ADC16_Configuration(void){//in16 temp sensor in stm32f107
ADC_InitTypeDef ADC_InitStructure;
// Конфигурация АЦП1
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel = 1;
ADC_Init(ADC1, &ADC_InitStructure);
// Измеряем канал №16 при помощи АЦП1
ADC_RegularChannelConfig(ADC1, ADC_Channel_16, 1, ADC_SampleTime_13Cycles5);
// Разрешаем АЦП1
ADC_Cmd(ADC1, ENABLE);
// Сбрасываем калибровку АЦП1
ADC_ResetCalibration(ADC1);
// Ждём окончания процедуры сброса калибровки АЦП1
while(ADC_GetResetCalibrationStatus(ADC1));
// Калибруем АЦП1
ADC_StartCalibration(ADC1);
// Ждём окончания калибровки
while(ADC_GetCalibrationStatus(ADC1));
// Запускаем АЦП1
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
}
u32 adc_get(void){// получить данные ADC
if (ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)) { return ADC_GetConversionValue(ADC1);}
else { return 0xFFFF;} // значит данных нет
}
нашел хороший пример!
http://www.embedds.com/introducing-to-stm3...gramming-part2/сенсор включается строчкой:
Код
//wake up temperature sensor
ADC_TempSensorVrefintCmd(ENABLE);
Сообщение отредактировал IgorKossak - May 7 2013, 07:26
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!