基于STM32H750的RTC自動喚醒設(shè)計方案


STM32H750介紹
STM32H750超值系列微控制器包含Arm? Cortex?-M7內(nèi)核(具有雙精度浮點單元),工作頻率高達480 MHz。內(nèi)嵌的128 KB閃存使意法半導(dǎo)體能夠為開發(fā)人員提供一種經(jīng)濟劃算的解決方案。
性能
在480 MHz的CPU頻率下,從Flash執(zhí)行程序時,STM32H742系列能夠提供2424 CoreMark /1027 DMIPS的性能,利用其L1緩存并實現(xiàn)了零等待執(zhí)行。
內(nèi)嵌的128 KB閃存,面向用戶可信根服務(wù)、關(guān)鍵實時程序執(zhí)行和外部存儲器的簡單配置
L1緩存(16 KB的I-緩存 +16 KB的D-緩存)提高外部存儲器的執(zhí)行性能。
安全性
STM32H750集成了:
加密/哈希硬件加速
STM32H757還支持安全固件安裝(SFI)嵌入式安全服務(wù),可在執(zhí)行初始程序時執(zhí)行安全驗證并保護軟件IP。
安全啟動和安全固件升級(SBSFU)
高能效
多電源域架構(gòu)可實現(xiàn)將不同的電源域配置為低功耗模式,進而優(yōu)化功耗效率。
USB調(diào)節(jié)器提供嵌入式物理接口層(PHY)。
在內(nèi)核運行模式(關(guān)閉外設(shè))下,功耗典型值為275 μA/MHz @VDD = 3.3 V和25 °C
圖形
LCD-TFT控制器接口支持雙層圖形
Chrom-ART Accelerator?提高了圖形內(nèi)容創(chuàng)建速度,并為其他應(yīng)用節(jié)省了MCU內(nèi)核處理帶寬
JPEG硬件加速器,可進行快速JPEG編碼和解碼,從而減輕CPU編解碼負荷。
片內(nèi)外設(shè)
多達35個通信接口包括FD-CAN、USB 2.0高速/全速、以太網(wǎng)MAC、攝像頭接口。
可利用帶有32位并行接口(支持SRAM、PSRAM、NOR、NAND和SDRAM存儲器)或雙模Quad-SPI串行閃存接口的靈活存儲控制器輕松擴展外部存儲器。
模擬外設(shè):12位DAC,快速16位ADC
16位高精度定時器上的多個16位和32位定時器運行頻率高達480 MHz。
STM32H750超值系列提供128 KB的Flash存儲器,具有以下結(jié)構(gòu)的1 MB SRAM:192 KB的TCM RAM(包括64 KB的ITCM RAM和128 KB的DTCM RAM,用于時間關(guān)鍵型程序和數(shù)據(jù)),高達512 KB的用戶SRAM,以及備份域中4 KB的SRAM,可將數(shù)據(jù)保持在最低功耗模式,提供LQFP100、LQFP144、LQFP176、UFBGA176和TFBGA240封裝。
STM32H750 的實時時鐘是一個獨立的 BCD 定時器/計數(shù)器,且?guī)Я巳諝v功能,它提供一個日歷時鐘、兩個可編程鬧鐘中斷,以及一個具有中斷功能的周期性可編程喚醒標志。
此外RTC 還有自動喚醒單元,RTC還可以補償閏年閏月等等,還有備份區(qū)域(BKP)寫保護,這些這里不細說了。
RTC 的簡化框圖

時鐘和分頻
STM32H750 的 RTC 時鐘源(RTCCLK)通過時鐘控制器,可以從 LSE、LSI、HSE 時鐘三選一,如圖所示,有兩個預(yù)分頻器RTC_PRER
ck_spre 的時鐘可由如下計算公式計算:
Fck_spre = Frtcclk/[(PREDIV_S+1)*( PREDIV_A+1)]
圖中,ck_apre 也可作為 RTC 亞秒遞減計數(shù)器(RTC_SSR)的時鐘。
Fck_apre的計算公式如下:
Fck_apre=Frtcclk/( PREDIV_A+1)
當 RTC_SSR 寄存器遞減到 0 的時候,會使用 PREDIV_S 的值重新裝載 PREDIV_S,得到亞秒時間的精度是:1/256 秒,可以得到更加精確的時間數(shù)據(jù)。
STM32CubeIDE 配置
默認情況下是如圖

一般情況下使用LSE,這里我們需要在RCC使能

然后在RTC中使能時鐘源,如果需要日歷鬧鐘功能的可以在這里也使能上。

公式如下:
RTC時鐘頻率 = RTC時鐘源 / ((Asynchronous Predivider value + 1) * (Synchronous Predivider value + 1))= 1Hz,也就是1秒
之后到時鐘配置里面可以看到已經(jīng)使能了

初始化
static void MX_RTC_Init(void)
{
/* USER CODE BEGIN RTC_Init 0 */
/* USER CODE END RTC_Init 0 */
/* USER CODE BEGIN RTC_Init 1 */
/* USER CODE END RTC_Init 1 */
/** Initialize RTC Only
*/
hrtc.Instance = RTC;
hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
hrtc.Init.AsynchPrediv = 127;
hrtc.Init.SynchPrediv = 255;
hrtc.Init.OutPut = RTC_OUTPUT_DISABLE;
hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
hrtc.Init.OutPutRemap = RTC_OUTPUT_REMAP_NONE;
if (HAL_RTC_Init(&hrtc) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN RTC_Init 2 */
/* USER CODE END RTC_Init 2 */
}
可以看到outline里面有很多我們需要的函數(shù),那么自己擴展就可以使用了

This function configures the hardware resources used in this example
void HAL_RTC_MspInit(RTC_HandleTypeDef* hrtc)
{
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
if(hrtc->Instance==RTC)
{
/* USER CODE BEGIN RTC_MspInit 0 */
/* USER CODE END RTC_MspInit 0 */
/** Initializes the peripherals clock
*/
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC;
PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
{
Error_Handler();
}
/* Peripheral clock enable */
__HAL_RCC_RTC_ENABLE();
/* USER CODE BEGIN RTC_MspInit 1 */
/* USER CODE END RTC_MspInit 1 */
}
}
可以按需定制自己的實現(xiàn)方式,RTC是特別實用的一個模塊了。
Sigmastar SSD201芯片可替代STM32H750
先給大家介紹一下SigmaStar SSD201芯片。它是基于ARM Cortex-A7雙核1.2GHz,集成了硬件H.264/H.265視頻解碼器、內(nèi)置了DDR,內(nèi)置2D圖形引擎、支持TTL/mipi屏顯示驅(qū)動接口內(nèi)置了以太網(wǎng)mac和PHY等,主要應(yīng)用于:智能樓宇室內(nèi)對講機,智能家居中控,86盒家庭中控,電梯樓層顯示器,IP網(wǎng)絡(luò)廣播設(shè)備,語音識別設(shè)備,指紋機,工業(yè)控制器等。
啟明云端提供的Sigmastar SSD201芯片可以替代STM32H750點320*240的16位并口屏,用于指紋機。
用戶可以在8ms嵌入式開發(fā)工具平臺上進行UI界面開發(fā),屏幕適配這塊如果你有l(wèi)inux開發(fā)的經(jīng)驗可以在啟明云端提供的的github地址上下載sigmastar的openwrt工程,然后把所用到的屏幕驅(qū)動集成進去即可,8ms(直接搜索8ms.xyz)平臺應(yīng)用層可以直接對接的linux的fb。這樣可以進一步提升您的產(chǎn)品開發(fā)周期。
當然,8ms平臺并不是唯一的編譯途徑,還可以下載下來在本地編譯。(通過我們提供的編譯鏈,openwrt相當于操作系統(tǒng),你把系統(tǒng)和你的板子適配好后就能運行應(yīng)用層的應(yīng)用);平臺還提供了不少DEMO,你可以一鍵克隆平臺上已經(jīng)提供的UI素材,再自己編譯,也可以自己重頭開始。
STM32H750驅(qū)動ADC的一些知識與經(jīng)驗
1、ClockPrescaler:
*ADC 預(yù)分頻系數(shù)選擇。
*可選的分頻系數(shù)為 1、2、4、6、8、10、12、16、32、64、128、256。
*但是請記住,ADC的最大時鐘為 36MHZ不管是定時器觸發(fā)還是軟件觸發(fā)!!
2、Resolution:
*ADC 的分辨率。
*可選的分辨率有 16 位、12 位、10 位和 8 位文章來源地址:https://www.yii666.com/blog/598323.html
*16位時需要消耗8.5個ADC時鐘周期
*14位時需要消耗7.5個ADC時鐘周期
*12位時需要消耗6.5個ADC時鐘周期
*10位時需要消耗5.5個ADC時鐘周期
* 8位時需要消耗4.5個ADC時鐘周期
3、ScanConvMode:
*配置是否使用掃描。
*如果是單通道轉(zhuǎn)換使用 ADC_SCAN_DISABLE,如果是多通道轉(zhuǎn)換使用 ADC_SCAN_ENABLE。
4、EOCSelection:
*可選參數(shù)為 ADC_EOC_SINGLE_CONV 和 ADC_EOC_SEQ_CONV,指定轉(zhuǎn)換結(jié)束時是否產(chǎn)生 EOS 中斷或事件標志
5、LowPowerAutoWait:配置是否使用低功耗自動延遲等待模式,
*可選參數(shù)為 ENABLE 和DISABLE,當使能時,僅當一組內(nèi)所有之前的數(shù)據(jù)已處理完畢時,才開始新的轉(zhuǎn)換,適用于
低頻應(yīng)用。該模式僅用于 ADC 的輪詢模式,不可用于 DMA 以及中斷
6、ContinuousConvMode:
*可選參數(shù)為 ENABLE 和 DISABLE,配置自動連續(xù)轉(zhuǎn)換還是單次轉(zhuǎn)換。
使用 ENABLE 配置為使能自動連續(xù)轉(zhuǎn)換;使用 DISABLE 配置為單次轉(zhuǎn)換,轉(zhuǎn)換一次后停止需要手動控制才重新啟動轉(zhuǎn)換
7、NbrOfConversion:設(shè)置常規(guī)轉(zhuǎn)換通道數(shù)目。
*范圍是:1~16
8、DiscontinuousConvMode:配置是否使用不連續(xù)的采樣模式,文章地址https://www.yii666.com/blog/598323.html
*比如要轉(zhuǎn)換的通道有 1、2、5、7、8、9,那么第一次觸發(fā)會進行通道 1 與通道 2,下次觸發(fā)就是轉(zhuǎn)換通道 5 與通道7,這樣不連續(xù)的轉(zhuǎn)換,依次類推。此參數(shù)只有將 ScanConvMode 使能,還有ContinuousConvMode 失能的情況下才有效,不可同時使能
9、NbrOfDiscConversion:不連續(xù)采樣通道數(shù)。文章來源地址https://www.yii666.com/blog/598323.html
10、ExternalTrigConv:外部觸發(fā)方式的選擇,如果使用軟件觸發(fā),那么外部觸發(fā)會關(guān)閉。
11、ExternalTrigConvEdge:外部觸發(fā)極性選擇。
*如果使用外部觸發(fā),可以選擇觸發(fā)的極性,可選有禁止觸發(fā)檢測、上升沿觸發(fā)檢測、下降沿觸發(fā)檢測以及上升沿和下降沿均可觸發(fā)檢測。
12、ConversionDataManagement: 指定 ADC 轉(zhuǎn)換后的數(shù)據(jù)處理方式。
*可以選擇 DMA 管理傳輸數(shù)據(jù)、數(shù)據(jù)存儲在數(shù)據(jù)寄存器中或者是傳輸?shù)?DFSDM 寄存器中
13、Overrun:當有新的數(shù)據(jù)溢出時,可以選擇覆蓋寫入或者是丟棄新的數(shù)據(jù)
14、LeftBitShift:數(shù)據(jù)左移位數(shù),最多可支持左移 15 位
15、OversamplingMode:是否使用過采樣模式。網(wǎng)址:yii666.com
16、ADC時鐘頻率最大不超過36M
17、ADC采樣率= ADC時鐘頻率/(采樣周期+轉(zhuǎn)換周期) 其中ADC時鐘頻率來自系統(tǒng)主頻( PLL2、 PLL3) 以及Per_ck(Per_ck時鐘源就是來自頻率為 64MHz 的高速內(nèi)部 RC 振蕩器(HSI))的分頻 得到!!
關(guān)于定時器觸發(fā),定時器的頻率要小于或等于ADC的采樣率,換句話說就是定時器的溢出時間要大 于或等于ADC完成一轉(zhuǎn)換所需的時間!!!
STM32H750驅(qū)動ADC的一些知識與經(jīng)驗
19、Channel:ADC 轉(zhuǎn)換通道,范圍:0~19。
20、Rank:在常規(guī)轉(zhuǎn)換中的常規(guī)組的轉(zhuǎn)換順序,可以選擇 1~16。
21、SamplingTime:ADC 的采樣周期,最大 810.5 個 ADC 時鐘周期,要求盡量大以減少誤差。
22、 SingleDiff:選擇通道單端輸入還是差分輸入。
23、 OffsetNumber:選擇使用偏移量的通道。
24、 Offset:定義要從原始數(shù)據(jù)減去的偏移量。根據(jù) ADC 的分辨率不同,支持的最大偏移量也不同,例如分辨率是 16bit,,最大的偏移量為 0xFFFF。
25、OffsetRightShift:采樣值進行右移的位數(shù)。
26、OffsetSignedSaturation:是否使能 ADC 采樣值的最高位為符號位。
*赫茲轉(zhuǎn)換:1MHZ=1000KHZ=1000000HZ
*時間換算:1s(秒)=1000ms(毫秒),1s=10^3ms(毫秒)=10^6us(微秒)=10^9ns(納秒)=10^12ps(皮秒)
*周期與頻率的關(guān)系:T=1/f,f=1/T(其中f為頻率,T為周期)
*TCONV(轉(zhuǎn)換時間) = 采樣周期 + 轉(zhuǎn)換周期
*采樣周期越大,采樣越精確
*轉(zhuǎn)換周期受分辨率影響,精度越高,轉(zhuǎn)換周期越大,花費時間越長!!!
責任編輯:David
【免責聲明】
1、本文內(nèi)容、數(shù)據(jù)、圖表等來源于網(wǎng)絡(luò)引用或其他公開資料,版權(quán)歸屬原作者、原發(fā)表出處。若版權(quán)所有方對本文的引用持有異議,請聯(lián)系拍明芯城(marketing@iczoom.com),本方將及時處理。
2、本文的引用僅供讀者交流學(xué)習使用,不涉及商業(yè)目的。
3、本文內(nèi)容僅代表作者觀點,拍明芯城不對內(nèi)容的準確性、可靠性或完整性提供明示或暗示的保證。讀者閱讀本文后做出的決定或行為,是基于自主意愿和獨立判斷做出的,請讀者明確相關(guān)結(jié)果。
4、如需轉(zhuǎn)載本方擁有版權(quán)的文章,請聯(lián)系拍明芯城(marketing@iczoom.com)注明“轉(zhuǎn)載原因”。未經(jīng)允許私自轉(zhuǎn)載拍明芯城將保留追究其法律責任的權(quán)利。
拍明芯城擁有對此聲明的最終解釋權(quán)。