1.內部溫度傳感器簡介
STM32F1有一個內部的溫度傳感器,可以用來測量CPU及周圍的溫度。該溫度傳感器在內部和ADCx_IN16輸入通道相連接,此通道把傳感器輸出的電壓轉換成數字值,溫度傳感器模擬輸入推薦采樣時間是17.1us,內部溫度傳感器支持的溫度范圍為:-40~125℃,精度為±1.5℃左右
通過讀取ADC通道16的值,通過如下計算公式即可算出當前溫度:
T = { (V25 - Vsense) / Avg_Slope } + 25
上式中:
V25 = Vsense在25℃時的數值(典型值為:1.43)
Avg_Slope = 溫度與Vsense曲線的平均斜率(典型值為:4.3 mV/℃)
以上典型值請參考數據手冊的電氣特性章節中的介紹
2.硬件設計
本實驗通過ADC1通道16采集內部溫度,將采樣的AD值和轉換后的溫度值通過USART1串口打印出來,同時D1指示燈閃爍,提示系統正常運行
*指示燈D1
*USART1串口
*ADC1_INT1
3.軟件設計
3.1 STM32CubeMX設置
?? RCC設置外接HSE,時鐘設置為72M,ADC預分頻因子設置為6,ADC_CLK為12MHz
?? PC0設置為GPIO推挽輸出模式、上拉、高速、默認輸出電平為高電平
?? USART1選擇為異步通訊方式,波特率設置為115200Bits/s,傳輸數據長度為8Bit,無奇偶校驗,1位停止位
?? 激活ADC1溫度傳感器通道,設置右對齊,關閉掃描、連續及間斷模式,使能regular conversion,設置軟件觸發、設置采樣時間239.5個周期(19.96us)
??輸入工程名,選擇路徑(不要有中文),選擇MDK-ARM V5;勾選Generated periphera initialization as a pair of ‘.c/.h’ files per IP ;點擊GENERATE CODE,生成工程代碼
3.2 MDK-ARM軟件編程
?? 在adc.c文件中可以看到ADC初始化函數
void MX_ADC1_Init(void){
ADC_ChannelConfTypeDef sConfig = {0};
/** Common config */
hadc1.Instance = ADC1;
hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
hadc1.Init.ContinuousConvMode = DISABLE;
hadc1.Init.DiscontinuousConvMode = DISABLE;
hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
hadc1.Init.NbrOfConversion = 1;
if (HAL_ADC_Init(&hadc1) != HAL_OK){
Error_Handler();
}
/** Configure Regular Channel*/
sConfig.Channel = ADC_CHANNEL_TEMPSENSOR;
sConfig.Rank = ADC_REGULAR_RANK_1;
sConfig.SamplingTime = ADC_SAMPLETIME_239CYCLES_5;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK){
Error_Handler();
}
}
void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle){
if(adcHandle->Instance==ADC1) {
/* ADC1 clock enable */
__HAL_RCC_ADC1_CLK_ENABLE();
}
}
?? 在主函數while循環中添加如下測試程序
while (1){
HAL_ADC_Start(&hadc1); //啟動ADC轉換
//等待轉換完成,10ms表示超時時間
HAL_ADC_PollForConversion(&hadc1,10);
//讀取ADC轉換數據(12位數據)
AD_Value = HAL_ADC_GetValue(&hadc1);
printf("ADC1_IN16 ADC value: %drn",AD_Value);
//AD值乘以分辨率即為電壓值
Vol_Value = AD_Value*(3.3/4096);
printf("ADC1_IN16 VOL value: %.2fVrn",Vol_Value);
//根據公式算出溫度值
Temperature = (1.43 - Vol_Value)/0.0043 + 25;
printf("MCU Internal Temperature: %.2f??rn",Temperature);
printf("rn");
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_0);
HAL_Delay(1000);
}
4.下載驗證
編譯無誤后下載到開發板,可以看到系統運行時D1指示燈不斷閃爍,串口不斷的打印讀取的溫度數據
上一篇:STM32的內部溫度傳感器
下一篇:意法半導體的STM32U5通用MCU取得PSA 3級和SESIP3安全認證
推薦閱讀
史海拾趣
隨著國內市場的飽和,Cressall開始將目光投向國際市場。公司積極參與國際電子行業的展會和交流活動,與國際同行建立了廣泛的聯系。通過與國外企業的合作,Cressall不僅引進了先進的技術和管理經驗,還成功打開了多個海外市場。同時,公司還加強了與國際知名企業的戰略合作,共同開發新產品,進一步提升了公司的國際競爭力。
在21世紀初,隨著電子行業的飛速發展,對于高性能磁性元件的需求也日益增長。Ferroxcube公司,作為世界第二大磁性元件生產商,憑借其卓越的技術和產品質量,迅速在市場上占據了一席之地。公司不斷投入研發,推出了一系列創新的磁芯和磁環產品,深受客戶好評。
在一次重要的行業展會上,Ferroxcube展示了一款新型的高性能磁芯,其優越的性能和穩定性吸引了眾多行業內人士的關注。一家知名的電源制造商對這款產品表現出了濃厚的興趣,并表達了合作的意愿。經過幾輪深入的洽談,雙方達成了戰略合作協議,Ferroxcube的磁芯成為了這家電源制造商的首選元件。
這一合作不僅為Ferroxcube帶來了大量的訂單,還提升了公司在行業內的知名度和影響力。公司借此機會加大了研發投入,進一步鞏固了其在磁性元件領域的領先地位。
背景:在電子產品市場競爭日益激烈的背景下,Galaxy深知技術創新和品質提升的重要性。為了進一步提升產品性能,公司決定尋求與行業頂尖廠商的合作。
行動:Galaxy與瑞士著名散熱器廠商“Arctic Cooling”建立了戰略合作伙伴關系,共同推出了備受矚目的影馳GeForce6系列產品。這款產品在散熱性能上實現了重大突破,為用戶帶來了更加穩定、高效的使用體驗。
成果:憑借出色的性能和口碑,影馳GeForce6系列產品迅速在市場上走紅,不僅鞏固了Galaxy在顯卡市場的領先地位,還極大地提升了公司在行業內的影響力。
隨著電子技術的快速發展,ELM意識到只有不斷創新才能保持市場競爭力。因此,公司加大了研發投入,專注于新技術的研發和應用。經過數年的努力,ELM成功推出了一系列具有創新性和領先性的電子產品,如高性能的集成電路、先進的傳感器等。這些產品的推出不僅豐富了ELM的產品線,也進一步提升了公司的市場地位。
品質管理一直是Elprotronic Inc.非常重視的一項工作。公司建立了一套完善的品質管理體系,從原材料采購到產品生產、檢測、包裝等各個環節都進行嚴格把關。同時,公司還引入了先進的生產設備和技術手段,提高了產品的生產效率和質量水平。此外,公司還定期組織員工進行品質管理培訓和學習交流活動,不斷提升員工的品質意識和技能水平。這些措施的實施使得Elprotronic Inc.的產品質量得到了進一步提升和保障。
Caliber公司自創立之初,便以技術創新為核心競爭力。在電子行業的早期,該公司敏銳地捕捉到市場對高性能計算芯片的需求,投入大量資源進行研發。經過數年的努力,Caliber成功推出了一款具有劃時代意義的芯片產品,以其出色的性能和穩定性贏得了市場的廣泛認可。這一創新不僅為Caliber帶來了巨大的商業成功,也為整個電子行業的發展注入了新的活力。
自己制作電路板時劃好線總想把多余的銅去掉,如果你用刀子在上面劃沒有什么用處,只好是將制作好的板子放在三氯化鐵中這樣多余的銅才會去掉,用覆蓋劑劃好圖<油漆當覆蓋劑也可以>然后放在三氯化鐵中溶解掉銅,業余制作印刷板有很多方法,用什 ...… 查看全部問答∨ |
|
我們公司要招一名Linux下的藍牙開發工程師。公司地址在上海中山公園附近。薪資待遇1萬/月。 職位要求: 1、精通LINUX系統以及C/C++編程(必須)。 2、熟悉嵌入式系統、單片機的開發。 3、精通藍牙協議、藍牙應用開發(必須)。 4、至少三年以 ...… 查看全部問答∨ |
無線傳輸數據,發射端移動的時候,對傳輸質量影響很大,請問有沒有什么好的解決方法? 現在有一個無線的項目(不采用跳頻),我對無線接觸不多,碰到這樣的問題,發射端在移動的時候,對發射質量影響特別大,請教一下這方面的知識,和解決這個問題的方法。謝謝!… 查看全部問答∨ |
在脈沖RD的上升沿將內存的數據讀到芯片的數據端口DOUT,怎樣實現? 可以讓這個脈沖信號直接做clock使用嗎?? 例如下面這樣寫:always @(posedge RD ) DOUT_EN==1\'b1;產生一個enable 信號,綜合時要對這個RD create clock 嗎??… 查看全部問答∨ |
|
MSP430驅動步進電機,使用DRV8814芯片原理圖和參考源代碼 TI DRV8814 步進電機驅動芯片:具有浪涌電流保護功能的 2.5A 雙路刷式直流電機驅動器 DRV8814原理設計,MSP430與其接口電路原理圖參見附件。 … 查看全部問答∨ |
|
1.Found clock-sensitive change during active clock edge at time on register "" 原因:vector source file中時鐘敏感信號(如:數據,允許端,清零,同步加 載等)在時鐘的邊緣同時變化.而時鐘敏感信號是不能在時鐘邊沿變化的.其后 果為導致 ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 【EEWORLD第三十三屆】2011年12月社區明星人物揭曉!
- 【瓜分2500元紅包】 票選DigiKey\"智造萬物,快樂不停\"創意大賽人氣作品TOP3!
- 搶先體驗!世界首款LoRa Soc單片機STM32WL
- 【有獎分享】MPS帶您快速探究電源設計秘密
- 實戰分享|從零開始,設計一款靠譜的開關電源
- 物聯網、汽車、AI全覆蓋——世平集團恩智浦解決方案大秀場
- ADI有獎下載活動之25:ADI汽車傳感器和傳感器接口解決方案
- 邀你參加:EEWORLD&ST 智能產品線下研討會(12月6日-深圳)
- 有獎直播:英飛凌工業半導體在電機驅動行業中的應用 2020年4月21日 上午10:00-11:30 準時開啟!