一起学nRF51xx 10 - rng
前言
????? 隨機(jī)數(shù)產(chǎn)生器(RNG)的結(jié)構(gòu):
????? 隨機(jī)數(shù)發(fā)生器(RNG)根據(jù)內(nèi)部熱產(chǎn)生真實(shí)的非確定性隨機(jī)數(shù)噪音。RNG通過觸發(fā)START任務(wù)啟動(dòng),并通過觸發(fā)STOP任務(wù)停止。當(dāng)隨機(jī)數(shù)已經(jīng)生成,它會(huì)產(chǎn)生一個(gè)VALRDY事件,同時(shí)把隨機(jī)數(shù)存入VALUE寄存器。用戶通過讀取VALUE寄存器,獲取這個(gè)隨機(jī)數(shù)。有一點(diǎn)需要注意,隨機(jī)數(shù)生成的時(shí)間不是固定不變的,時(shí)間有長有斷,特別是使能了數(shù)字校驗(yàn)算法以后,時(shí)間更無法預(yù)測(cè)。不過有一點(diǎn),當(dāng)VALRDY事件產(chǎn)生的時(shí)候我們?cè)偃プx取VALUE的值,這個(gè)是可靠的。RNG模塊被觸發(fā)START任務(wù)以后,會(huì)一直不斷的產(chǎn)生隨機(jī)數(shù),每產(chǎn)生出一個(gè)隨機(jī)數(shù),會(huì)置位一次事件,只有觸發(fā)STOP任務(wù)才能停止RNG模塊。
????? 本教程實(shí)現(xiàn)把產(chǎn)生的隨機(jī)數(shù)通過串口打印出來, 具體硬件連接請(qǐng)參考開發(fā)板電路圖
?
示例詳解
基于硬件平臺(tái):nrf51822ek_tm開發(fā)板。
?
本示例所用的最小系統(tǒng)板原理圖:
?
工程名為nrfxx-rng確認(rèn)后按下圖選擇芯片為nrf51822_xxAA->ok
在彈出的對(duì)話框中勾選CMSIS中的CORE;Device中的Startup(后面有nrf51Series字樣的);在nrf_device中勾選nrf_gpio, nrf_uart, nrf_delay,nrf_rng,nrf_err并在nrf_Libraries中勾選app_error,nrf_assert模塊。
?
OK之后工程自動(dòng)生成如下代碼:
新建一個(gè)空白文檔,保存為main.c,并加入工程中:
配置工程,選擇使用MicroLIB庫,可以減小程序體積:
加入NRF51定義,并選擇化等級(jí)3,可以減小程序體積,但仿真運(yùn)行時(shí)可能會(huì)出現(xiàn)與代碼順序不一致現(xiàn)象:
?
調(diào)試工具選擇J-LINK,并將接口設(shè)置為SW口勾選下載程序后自動(dòng)復(fù)位及運(yùn)行:
?
?
????? 本實(shí)驗(yàn)中大部分代碼來自于《一起學(xué)nRF51xx 6 -? uart》章節(jié)內(nèi)容,主函數(shù)依次執(zhí)行g(shù)pio,uart初始化操作然后就是死循環(huán),在死循環(huán)中實(shí)現(xiàn)對(duì)rng模塊和led的操作,每操作一次等500ms把程序編譯,下載到開發(fā)板上可以看到開發(fā)板上的藍(lán)燈實(shí)現(xiàn)了呼吸燈效果。對(duì)應(yīng)的PWM變化如下圖所示:
關(guān)于nrf51xx及rng的更詳細(xì)介紹可以參看《nRF51822_PS_v3.3.pdf》或https://infocenter.nordicsemi.com/index.jsp
。
?
OK,本期實(shí)驗(yàn)完成!下期見!同時(shí)如果大家有什么疑問或是有想了解的其它內(nèi)容,也歡迎大家留言!!最后喜歡這個(gè)公眾號(hào)的同學(xué)們記得加關(guān)注了,會(huì)有不定期技術(shù)干貨推出!!
文中源碼資料下載,在公眾號(hào)里給十三發(fā)消息:
下載|一起學(xué)nRF51xx 10
?
關(guān)注十三公眾號(hào)
?
總結(jié)
以上是生活随笔為你收集整理的一起学nRF51xx 10 - rng的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一起学nRF51xx 9 - pwm
- 下一篇: 一起学nRF51xx 11 - fic