GD32F407系列
GD32F407系列是否TRNG硬件随机数外设 本帖最后由 tyw 于 2022-6-21 13:49 编辑STM32F407 - 随机数发生器
STM32F4 自带了硬件随机数发生器(RNG),RNG处理器是一个以连续模拟噪声为基础的随机数发生器,在主机读数时提供一个32位的随机数。
随机数发生器采用模拟电路实现。此电路产生馈入线性反馈移位寄存器(RNG_LFSR)的种子,用于生成32位随机数。
该模拟电路由几个环形振荡器组成,振荡器的输出进行异或运算以产生种子。
RNG_LFSR 由专用时钟(PLL48CLK)按恒定频率提供时钟信息,因此随机数质量与HCLK频率无关。
当将大量种子引入 RNG_LFSR后,RNG_LFSR的内容会传入数据寄存器(RNG_DR)。
同时,系统会监视模拟种子和专用时钟 PLL48CLK。状态位(RNG_SR寄存器中)指示何时在种子上出现异常序列,或指示何时PLL48CLK时钟频率过低。
检测到错误时生成中断。
寄存器
-- RNG_CR(控制寄存器) --
IE:中断使能(检测到错误时生成的中断)
RNGEN:随机数发生器使能
-- RNG_SR(状态寄存器) --
SEIS:种子错误中断状态
CEIS:时钟错误中断状态
SECS:种子错误当前状态
CECS:时钟错误当前状态
DRDY:数据就绪
-- RNG_DR(数据寄存器) --
RNDATA:随机数据
库函数配置(最简机能)
目的:时钟使能,模块使能, 产生随机数,不做错误判定和处理。
1)使能随机数发生器时钟。
使用随机数发生器,必须先使能其时钟。随机数发生器时钟来自PLL48CK,通过AHB2ENR寄存器使能。
这里通过调用 AHB2总线外设时钟的函数,使能 RNG时钟。
RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_RNG, ENABLE);
2)使能随机数发生器。
通过 RNG_CR 寄存器的 RNGEN 设置为 1 ,使能随机数发生器。
3)判断DRDY位,读取随机数值。
FlagStatus RNG_GetFlagStatus(uint8_t RNG_FLAG); //返回数据是否就绪
uint32_t RNG_GetRandomNumber(void); //返回随机数
页:
[1]