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