1、STM32的内部温度传感器
STM32内部温度传感器与ADC的通道16相连,与ADC配 合使用实现温度测量。测量范围–40~125℃,精度 ± 1.5℃
操作流程:
1)、设置ADC相关参数
// ADC1 configuration -----------------------------
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = ENABLE;
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);
2)、选中ADC1的通道16作为输入,设置采样时间17.1us ( Ncycle × tADC = 17.1靤 )。
// ADC1 regular channel16 Temp Sensor configuration
ADC_RegularChannelConfig(ADC1, ADC_Channel_16, 1, ADC_SampleTime_55Cycles5);
3)、设置寄存器ADC_CR2中的TSVREFE位激活温度传感器
// Enable the temperature sensor and vref internal channel
ADC_TempSensorVrefintCmd(ENABLE);
4)、转换采样值为温度
ADC转换结束以后,读取ADC_DR寄存器中的结果,转换温度值计算公式如下:
V25 - VSENSE
T(℃) = ------------ + 25
Avg_Slope
V25: 温度传感器在25℃时 的输出电压,典型值1.43 V。
VSENSE:温度传感器的当前输出电压,与ADC_DR 寄存器中的结果ADC_ConvertedValue之间的转换关系为:
ADC_ConvertedValue * Vdd
VSENSE = --------------------------
Vdd_convert_value(0xFFF)
Avg_Slope:温度传感器输出电压和温度的关联参数,典型值4.3 mV/℃。
//Converted Temperature
Vtemp_sensor = ADC_ConvertedValue * Vdd / Vdd_convert_value;
Current_Temp = (V25 - Vtemp_sensor)/Avg_Slope + 25;
2、VDDA的电压范围
STM32的数据手册规定,VDD与VDDA之间的压差不能大于300mV。ADC的工作电压范围在2.4V~3.6V,供电电压VDD范围在2.0V~3.6V.
上一篇:STM32 上使用 USB Host 读写 U 盘
下一篇:玩转STM32CubeMX | 内部温度传感器
推荐阅读
史海拾趣
FETek Technology(东沅)于XXXX年在台湾台北市成立,由一群志同道合的半导体行业专家组成。他们看到了当时电子行业对高质量、高效率半导体测试解决方案的迫切需求,于是决定创立东沅,专注于提供这一领域的创新产品。初期,公司面临资金紧张、人才匮乏等挑战,但他们凭借坚定的信念和不懈的努力,逐渐吸引了更多的投资者和优秀人才加入。
CyOptics Inc公司自创立以来,一直专注于磷化铟(InP)光学芯片及组件的研发和生产。凭借其在光学领域的深厚积累和技术创新,CyOptics逐渐在数据通讯及电信市场上树立了技术领先的形象。公司的850nm多模VCSEL和PIN器件等产品,因其高性能和可靠性,被广泛应用于短距离数据通信网络中,获得了市场的广泛认可。
博流公司的卓越表现引起了业界的广泛关注。2019年,公司荣获了Red Herring Top 100 Asia大奖,这是对其在AIoT/边缘计算SOC芯片研发领域的快速成长和技术实力的高度认可。此外,博流还获得了多项国内外专利和荣誉,证明了公司在行业内的领先地位。
随着公司业务的蓬勃发展,Crane Co.在1880年代经营着四家制造工厂,员工人数超过1500名。公司的业务足迹也逐渐延伸到美国西部地区。为了进一步提升产品质量和技术水平,Crane Co.在1890年代成立了旗下第一家冶金实验室,专注于材料研究和开发。这一举措为公司在电子行业的后续发展提供了强大的技术支持。
小弟在嵌入式目标板上使用time函数发现时间错误啊,和GMT时间相差了8个小时. time_t now; (void) time(&now); printf("%s\\n",ctime(&now)); ================================= 假如现在本地时间是 Apr 12 12:00:00 2007 ...… 查看全部问答∨ |
|