MCU微課堂
CKS32F4xx系列RNG功能
隨機數(shù)發(fā)生器簡介
CKS32F4xx系列自帶了硬件隨機數(shù)發(fā)生器(RNG),RNG處理器是一個以連續(xù)模擬噪聲為基礎(chǔ)的隨機數(shù)發(fā)生器,在主機讀數(shù)時提供一個32位的隨機數(shù)。
CKS32F4xx系列的隨機數(shù)發(fā)生器框圖如圖1所示:
圖1.RNG框圖
CKS32F4xx系列的隨機數(shù)發(fā)生器(RNG)采用模擬電路實現(xiàn)。此電路產(chǎn)生饋入線性反饋移位寄存器(RNG_LFSR)的種子,用于生成32位隨機數(shù)。
該模擬電路由幾個環(huán)形振蕩器組成,振蕩器的輸出進(jìn)行異或運算以產(chǎn)生種子。RNG_LFSR由專用時鐘(PLL48CLK)按恒定頻率提供時鐘信息,因此隨機數(shù)質(zhì)量與HCLK頻率無關(guān)。當(dāng)將大量種子引入RNG_LFSR后,RNG_LFSR的內(nèi)容會傳入數(shù)據(jù)寄存器(RNG_DR)。
同時,系統(tǒng)會監(jiān)視模擬種子和專用時鐘PLL48CLK,當(dāng)種子上出現(xiàn)異常序列,或PLL48CLK時鐘頻率過低時,可以由RNG_SR寄存器的對應(yīng)位讀取到,如果設(shè)置了中斷,則在檢測到錯誤時,還可以產(chǎn)生中斷。
RNG寄存器
我們介紹下CKS32F4xx系列隨機數(shù)發(fā)生器(RNG)的幾個寄存器。
圖2.RNG控制寄存器
圖2為RNG的CR寄存器,其只有bit2和bit3有效,用于使能隨機數(shù)發(fā)生器和中斷。我們一般不用中斷,所以只需要設(shè)置bit2為1,使能隨機數(shù)發(fā)生器即可。
圖3.RNG狀態(tài)寄存器
圖3為RNG狀態(tài)寄存器:RNG_SR。該寄存器我們僅關(guān)心最低位(DRDY位),該位用于表示RNG_DR寄存器包含的隨機數(shù)數(shù)據(jù)是否有效,如果該位為1,則說明RNG_DR的數(shù)據(jù)是有效的,可以讀取出來了。讀RNG_DR后,該位自動清零。
圖4.RNG數(shù)據(jù)寄存器
圖4為RNG數(shù)據(jù)寄存器:RNG_DR。在RNG_SR的DRDY位置位后,我們就可以讀取該寄存器獲得32位隨機數(shù)值。此寄存器在最多40個PLL48CK時鐘周期后,又可以提供新的隨機數(shù)值。
至此,隨機數(shù)發(fā)生器的寄存器,我們就介紹完了。接下來,我們看看要使用庫函數(shù)操作隨機數(shù)發(fā)生器,應(yīng)該如何設(shè)置。
配置隨機數(shù)發(fā)生器
1.使能隨機數(shù)發(fā)生器時鐘
要使用隨機數(shù)發(fā)生器,必須先使能其時鐘。隨機數(shù)發(fā)生器時鐘來自PLL48CK,通過AHB2ENR寄存器使能。所以我們調(diào)用使能AHB2總線外設(shè)時鐘的函數(shù)使能RNG時鐘即可:
RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_RNG, ENABLE);
2.使能隨機數(shù)發(fā)生器
這個就是通過RNG_CR寄存器的最低位設(shè)置為1,使能隨機數(shù)發(fā)生器。當(dāng)然,如果需要用到中斷,你快還可以使能RNG中斷。本章我們不用中斷。庫函數(shù)中使能隨機數(shù)發(fā)生器的方法為:
RNG_Cmd(ENABLE);
3.判斷DRDY位,讀取隨機數(shù)值
經(jīng)過前面兩個步驟,我們就可以讀取隨機數(shù)值了,不過每次讀取之前,必須先判斷 RNG_SR寄存器的DRDY位,如果該位為1,則可以讀取RNG_DR得到隨機數(shù)值,如果不為1,則需要等待。
獲取隨機數(shù)發(fā)生器狀態(tài)的函數(shù)為:
FlagStatus RNG_GetFlagStatus(uint8_t RNG_FLAG);
判斷數(shù)據(jù)是否有效的入口參數(shù)為 RNG_FLAG_DRDY,所以等待就緒的方法為:
while(RNG_GetFlagStatus(RNG_FLAG_DRDY)==RESET);
判斷數(shù)據(jù)有效后,然后我們讀取隨機數(shù)發(fā)生器產(chǎn)生的隨機數(shù)即可,調(diào)用函數(shù)為:
uint32_t RNG_GetRandomNumber(void);
審核編輯:彭菁
-
寄存器
+關(guān)注
關(guān)注
31文章
5325瀏覽量
120048 -
發(fā)生器
+關(guān)注
關(guān)注
4文章
1363瀏覽量
61627 -
硬件
+關(guān)注
關(guān)注
11文章
3260瀏覽量
66130 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4308瀏覽量
62444
原文標(biāo)題:MCU微課堂|CKS32F4xx系列RNG功能
文章出處:【微信號:中科芯MCU,微信公眾號:中科芯MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論