今天使用芯片内部ADC的功能读取一下CPU的温度;
一:AT32 ADC的知识分享:
ADC是一个将模拟输入信号转换为 12位、10位、8位或6位的数字信号的外设。采样率最高可达2.5MSPS。
多达 26 个通道源(包括内部及外部通道)可进行采样及转换。
二:特征如下:
模拟方面有以下特征:
支持分辨率 12位、10位、8位或6位的转换自校准时间:205个ADC 时钟周期
ADC 转换时间ADC时钟在最大频率35MHz时转换时间为0.4usADC供电要求:参考DatasheetADC 输入范围:VssA≤ VIN ≤ VDDA
数字控制方面有以下特征:
通道管理区分优先权不同的普通通道与抢占通道普通通道与抢占通道具备各自独立的触发侦测电路
各通道均可独立配置采样时间转换顺序管理支持多种不同的多通道转换过采样器
可选择的数据对齐方式
可配置的电压监测边界,支持ADC VM 输出
支持 DMA 传输的普通通道数据联动多 ADC 的主从模式
可设定以下事件发生时响应中断
普通通道转换数据溢出
抢占通道组转换结束
普通通道转换结束
电压监测超出范围
触发转换失败
可配置多 ADC之间时序位移长度的主从位移模式-高效能需求可使用主从模式搭配DMA
三:AT32 work bench 软件配置:
四:软件代码如下:
at32_led_toggle(LED2);
delay_sec(1);
/* adc1 software trigger start conversion */
adc_ordinary_software_trigger_enable(ADC1, TRUE);
while(dma_flag_get(DMA1_FDT1_FLAG) == RESET);
dma_flag_clear(DMA1_FDT1_FLAG);
printf("internal_temperature = %f deg C\r\n",(ADC_TEMP_BASE-(double)adc1_ordinary_value*ADC_VREF/4095)/ADC_TEMP_SLOPE+25);
五:实物测试如下:
|