STMCU小助手
发布时间:2022-6-14 14:09
|
01. 随机数发生器简介 RNG 处理器是一个以连续模拟噪声为基础的随机数发生器,在主机读数时提供一个 32 位的随机数。+ z1 l# u5 h' w. y& ` RNG 已通过 FIPS PUB 140-2(2001 年 10 月 10 日)测试,成功率达 99%。 02. 随机数发生器主要特性1 n3 n6 f# v1 I2 P+ R8 E ● 提供由模拟量发生器产生的 32 位随机数 ● 两个连续随机数的间隔为 40 个 PLL48CLK 时钟信号周期1 l) N9 S, d, ~8 } ● 通过监视 RNG 熵来标识异常行为(产生稳定值,或产生稳定的值序列)* a+ j Y' y; K4 O! V# X, m7 c( u ● 可被禁止以降低功耗 03. 随机数发生器功能说明 2 y, I" ?, A9 x9 M
; T+ A- Y( W, c! S1 O2 q 04. 随机数发生器操作 要运行 RNG,请按以下步骤操作: 1.如果需要,使能中断(为此,将 RNG_CR 寄存器中的 IE 位置 1)。准备好随机数时或出现错误时生成中断。3 R2 F7 o: t, F8 V6 S 2 ^/ F# d+ |* \1 y7 I s0 ~) t 2.通过将 RNG_CR 寄存器中的 RNGEN 位置 1 使能随机数产生。这会激活模拟部分、RNG_LFSR 和错误检测器。 0 k8 Y& E# f; R7 W 3.每次中断时,检查确认未出现错误(RNG_SR 寄存器中的 SEIS 和 CEIS 位应为 0),并且随机数已准备就绪(RNG_SR 寄存器中的 DRDY 位为 1)。然后即可读取 RNG_DR寄存器中的内容。5 [; c& z6 F7 \% B4 Q 5 y4 C0 ]; V# N" o! [# p0 ^* k 按照 FIPS PUB(联邦信息处理标准出版物)140-2 的要求,将 RNGEN 位置 1 后产生的第一个随机数不应使用,但应保存起来,与产生的下一个随机数进行比较。随后产生的每个随机数都需要与产生的上一个随机数进行比较。如果任何一对进行比较的数字相等,则测试失败(连续随机数发生器测试)。3 u5 J6 V5 g/ K- @+ S/ O; J / Y" E6 E& C- F, O) g 05. 随机数发生器寄存器 5.1 RNG 控制寄存器 (RNG_CR)" u9 O, \ P+ `; ~. Z; H RNG control register 偏移地址:0x00; u2 X5 z$ P; z& h( H3 Y' b' G 复位值:0x0000 0000% z2 z1 l4 U, s) M0 c! z8 M ( r; v4 A0 G; p" u
位 31:4 保留,必须保持复位值 位 3 IE :中断使能 (Interrupt enable) 0:禁止 RNG 中断。 1:使能 RNG 中断。只要 RNG_SR 寄存器中 DRDY=1 或 SEIS=1 或 CEIS=1,就会挂起中断。, X+ n; Y( a/ d# }( ? ]" X! ]8 M 位 2 RNGEN :随机数发生器使能 (Random number generator enable) 0:禁止随机数发生器。 1:使能随机数发生器。 位 1:0 保留,必须保持复位值 9 Q f' h5 Z" \, r 5.2 RNG 状态寄存器 (RNG_SR) RNG status register 偏移地址:0x04 复位值:0x0000 0000/ s4 R3 L' N& U4 i9 r & j" Z) N$ p. |( M" @# O/ h! U% J1 G
位 31:3 保留,必须保持复位值) m. p& e! X) p0 j' b( F8 y 位 6 SEIS :种子错误中断状态 (Seed error interrupt status) 此位与 SECS 同时设置,通过向其写入 0 来清零。 0:未检测到错误序列8 l( {$ ]# _6 F+ Y0 | 1:检测到以下错误序列之一: — 超过 64 个连续位具有相同值(0 或 1)3 w8 L, }. W$ r1 X' H — 超过 32 个连续交替的 0 和 1 (0101010101…01)& n$ `, f+ {$ z" I9 b+ t' T 如果 RNG_CR 寄存器中 IE = 1,则会挂起中断。2 A/ S' g% g O6 i, E- a! K 位 5 CEIS :时钟错误中断状态 (Clock error interrupt status) 此位与 CECS 同时设置,通过向其写入 0 来清零。 0:正确检测到 PLL48CLK 时钟0 p. C0 L( Q$ d* j7 h# ]; M! } 1:未正确检测到 PLL48CLK 时钟 (f PLL48CLK < f HCLK /16) 如果 RNG_CR 寄存器中 IE = 1,则会挂起中断。* T2 L3 s$ y7 g4 m 位 4:3 保留,必须保持复位值( E$ U" N' u0 T) E F$ _$ s$ O 位 2 SECS :种子错误当前状态 (Seed error current status)- c0 E( C- s( S/ U% q 0:目前未检测到错误序列。如果 SEIS 位置 1,则意味着已检测到错误序列并已恢复正常。 1:检测到以下错误序列之一: — 超过 64 个连续位具有相同值(0 或 1) — 超过 32 个连续交替的 0 和 1 (0101010101…01)9 V$ h7 j1 o6 K, k( n 位 1 CECS :时钟错误当前状态 (Clock error current status)# T% `1 a! G; X, }8 z4 z+ G: p3 B 0:正确检测到 PLL48CLK 时钟。如果 CEIS 位置 1,则意味着已检测到时钟错误并已恢复 正常。 1:未正确检测到 PLL48CLK 时钟 (f PLL48CLK < f HCLK /16)。3 V# S+ E9 {" c! _! N 位 0 DRDY :数据就绪 (Data ready) 0:RNG_DR 寄存器尚未有效,无可用随机数据# P3 [- T3 |1 G 1:RNG_DR 寄存器包含有效随机数据 注意:如果 RNG_CR 寄存器中 IE = 1 ,则会挂起中断。 读取 RNG_DR 寄存器后,此位恢复到 0 ,直到计算出新的有效值/ T" b6 N9 X% t8 J0 l 5.3 RNG 数据寄存器 (RNG_DR) RNG data register+ M% N( x' `$ f. [: c" n- d 偏移地址:0x08 复位值:0x0000 0000 RNG_DR 寄存器是只读寄存器,在读取时提供 32 位随机数值。读取后,此寄存器在最多40 个 PLL48CLK 时钟周期后,提供新的随机数值。在读取 RNDATA 值之前,软件必须检查DRDY 位是否已置 1。
3 {3 M: K$ o# E! d- G9 o0 x2 o 5.4 RNG寄存器映射
% `9 E! i; f# F( P; q* d" H5 b7 K |
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
Keil-MDK 在线调试设置断点的高级用法
请教下STM32N6570 怎么把分辨率改成320x240并可以全屏显示
【福利三:逢7发帖赢大礼】想要充分利用STM32H743VI片内的RAM空间(但并不顺利)
基于stm32平台上的IC-MU磁绝对值编码器SPI通讯和码盘数据处理
使用STM32 MCU和MPU连接PDM数字麦克风
分享STM32资料-采用 STM32U031R8 MCU 的 STM32 Nucleo-64 开发板,官方资料,数据手册等资料
HRTIM 指南
使用 STM32 的 DWT 单元监控内存
DAC,COMP,HRTIM Fault 功能的使用
微信公众号
手机版