本次实验利用LM35DZ温度传感器模块采集环境温度,温度数据通过ADC1_IN14采集处理,并利用AT-Link的虚拟串口将数据传至PC端,利用串口调试助手软件进行显示。
一、实验资源
1、AT-START-F407开发板;
2、keil v5.31.0.0;
3、BSP等相关资源;
4、LM35模块;
5、SSCOM串口软件;
二、相关知识学习
AT32F407VGT7集成了12位逐次逼近型模拟数字转换器(ADC),支持16个外部通道、2个内部通道,可在单次、连续、扫描或间断模式下工作。使用中要注意的是ADC工作时钟不能大于28MHz。
三、硬件连接
硬件连接比较简单,将LM35的“OUTPUT”端口与开发板上的PC4(ADC1_CH14)端口相连:
四、程序实现
实验代码在“BSP”相关例程基础上修改而成。
void ADC_Config(void)
{
ADC_InitType ADC_InitStructure;
/* ADC1 configuration ------------------------------------------------------*/
ADC_StructInit(&ADC_InitStructure);
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanMode = DISABLE;
ADC_InitStructure.ADC_ContinuousMode = ENABLE;
ADC_InitStructure.ADC_ExternalTrig = ADC_ExternalTrig_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NumOfChannel = 1;
ADC_Init(ADC1, &ADC_InitStructure);
/* ADC1 regular channels configuration */
ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 1, ADC_SampleTime_28_5);
/* Enable ADC1 */
ADC_Ctrl(ADC1, ENABLE);
/* Enable ADC1 reset calibration register */
ADC_RstCalibration(ADC1);
int main(void)
{
RCC_Config();
GPIO_Config();
ADC_Config();
Delay_init();
UART_Print_Init(115200);
while (1)
{
ADCConvertedValue=ADC_GetConversionValue(ADC1);
printf("Temp = %d",ADCConvertedValue);
Delay_sec(1);
}
}
五、实验结果
六、总结
本次实验对AT32F407VGT7微控制器的ADC模块进行了简单尝试,为ADC模块更深入地学习创造了良好开端。
|