00. 目录

文章目录

  • 00. 目录
  • 01. 随机数发生器简介
  • 02. 随机数发生器主要特性
  • 03. 随机数发生器功能说明
  • 04. 随机数发生器操作
  • 05. 随机数发生器寄存器
    • 5.1 RNG 控制寄存器 (RNG_CR)
    • 5.2 RNG 状态寄存器 (RNG_SR)
    • 5.3 RNG 数据寄存器 (RNG_DR)
    • 5.4 RNG寄存器映射
  • 06. 附录
  • 07. 声明

01. 随机数发生器简介

RNG 处理器是一个以连续模拟噪声为基础的随机数发生器,在主机读数时提供一个 32 位的随机数。

RNG 已通过 FIPS PUB 140-2(2001 年 10 月 10 日)测试,成功率达 99%。

02. 随机数发生器主要特性

● 提供由模拟量发生器产生的 32 位随机数
● 两个连续随机数的间隔为 40 个 PLL48CLK 时钟信号周期
● 通过监视 RNG 熵来标识异常行为(产生稳定值,或产生稳定的值序列)
● 可被禁止以降低功耗

03. 随机数发生器功能说明

04. 随机数发生器操作

要运行 RNG,请按以下步骤操作:

  1. 如果需要,使能中断(为此,将 RNG_CR 寄存器中的 IE 位置 1)。准备好随机数时或出现错误时生成中断。

  2. 通过将 RNG_CR 寄存器中的 RNGEN 位置 1 使能随机数产生。这会激活模拟部分、RNG_LFSR 和错误检测器。

  3. 每次中断时,检查确认未出现错误(RNG_SR 寄存器中的 SEIS 和 CEIS 位应为 0),并且随机数已准备就绪(RNG_SR 寄存器中的 DRDY 位为 1)。然后即可读取 RNG_DR寄存器中的内容。

按照 FIPS PUB(联邦信息处理标准出版物)140-2 的要求,将 RNGEN 位置 1 后产生的第一个随机数不应使用,但应保存起来,与产生的下一个随机数进行比较。随后产生的每个随机数都需要与产生的上一个随机数进行比较。如果任何一对进行比较的数字相等,则测试失败(连续随机数发生器测试)。

05. 随机数发生器寄存器

5.1 RNG 控制寄存器 (RNG_CR)

RNG control register
偏移地址:0x00
复位值:0x0000 0000

位 31:4 保留,必须保持复位值
位 3 IE :中断使能 (Interrupt enable)
0:禁止 RNG 中断。
1:使能 RNG 中断。只要 RNG_SR 寄存器中 DRDY=1 或 SEIS=1 或 CEIS=1,就会挂起中断。
位 2 RNGEN :随机数发生器使能 (Random number generator enable)
0:禁止随机数发生器。
1:使能随机数发生器。
位 1:0 保留,必须保持复位值

5.2 RNG 状态寄存器 (RNG_SR)

RNG status register
偏移地址:0x04
复位值:0x0000 0000

位 31:3 保留,必须保持复位值

位 6 SEIS :种子错误中断状态 (Seed error interrupt status)
此位与 SECS 同时设置,通过向其写入 0 来清零。
0:未检测到错误序列
1:检测到以下错误序列之一:
— 超过 64 个连续位具有相同值(0 或 1)
— 超过 32 个连续交替的 0 和 1 (0101010101…01)
如果 RNG_CR 寄存器中 IE = 1,则会挂起中断。

位 5 CEIS :时钟错误中断状态 (Clock error interrupt status)
此位与 CECS 同时设置,通过向其写入 0 来清零。
0:正确检测到 PLL48CLK 时钟
1:未正确检测到 PLL48CLK 时钟 (f PLL48CLK < f HCLK /16)
如果 RNG_CR 寄存器中 IE = 1,则会挂起中断。

位 4:3 保留,必须保持复位值

位 2 SECS :种子错误当前状态 (Seed error current status)
0:目前未检测到错误序列。如果 SEIS 位置 1,则意味着已检测到错误序列并已恢复正常。
1:检测到以下错误序列之一:
— 超过 64 个连续位具有相同值(0 或 1)
— 超过 32 个连续交替的 0 和 1 (0101010101…01)

位 1 CECS :时钟错误当前状态 (Clock error current status)
0:正确检测到 PLL48CLK 时钟。如果 CEIS 位置 1,则意味着已检测到时钟错误并已恢复
正常。
1:未正确检测到 PLL48CLK 时钟 (f PLL48CLK < f HCLK /16)。

位 0 DRDY :数据就绪 (Data ready)
0:RNG_DR 寄存器尚未有效,无可用随机数据
1:RNG_DR 寄存器包含有效随机数据
注意:如果 RNG_CR 寄存器中 IE = 1 ,则会挂起中断。
读取 RNG_DR 寄存器后,此位恢复到 0 ,直到计算出新的有效值

5.3 RNG 数据寄存器 (RNG_DR)

RNG data register
偏移地址:0x08
复位值:0x0000 0000
RNG_DR 寄存器是只读寄存器,在读取时提供 32 位随机数值。读取后,此寄存器在最多40 个 PLL48CLK 时钟周期后,提供新的随机数值。在读取 RNDATA 值之前,软件必须检查DRDY 位是否已置 1。

5.4 RNG寄存器映射

06. 附录

6.1 【STM32】STM32系列教程汇总

网址:【STM32】STM32系列教程汇总

07. 声明

STM32F4xx英文参考手册

【STM32】随机数发生器详解相关推荐

  1. STM32 HAL库详解 及 手动移植

    源: STM32 HAL库详解 及 手动移植

  2. stm32 DMA使用详解

    转自:http://www.cnblogs.com/121792730applllo/p/3154447.html STM32 DMA使用详解 DMA部分我用到的相对简单,当然,可能这是新东西,我暂时 ...

  3. STM32启动文件详解-比较清晰的一篇

    STM32启动文件详解 启动文件使用的 ARM 汇编指令汇总 启动程序源码注释(点此下载) 1. Stack-栈 Stack_Size EQU 0x00000400AREA STACK, NOINIT ...

  4. STM32 CAN通信协议详解—小白入门(二)

    文章目录 (一)CAN通信协议简介 (二)CAN物理层 2.1.闭环总线网络2.2.开环总线网络2.3.通信节点2.4.差分信号2.5.CAN协议的差分信号 (三)协议层 3.1.CAN的波特率及位同 ...

  5. STM32串口通信详解以及通信异常或者卡死常见问题分析

    STM32串口通信详解以及通信异常或者卡死常见问题分析 目录 STM32串口通信详解以及通信异常或者卡死常见问题分析 一.常见的异常问题 二.STM32的串口简介 1.串口的通讯方式 ①按数据传输方向 ...

  6. STM32最小系统详解

    STM32最小系统详解 1. 电源电路 2. 晶振电路 3. 复位电路 4. 下载电路(串口下载) 本文章将以普中的STM32F103系列的开发板为载体,任何一款STM32开发板都是在其最小系统基础上 ...

  7. STM32的定时器详解(嵌入式学习)

    STM32的定时器详解 0. 前言 1. Systick定时器 概念 工作原理 时钟基准 Systick练习 2. HAL_Delay函数分析 3. 定时器 基本概念 定时器分类 定时器组成 计数器 ...

  8. php真随机数,php 的伪随机数与真随机数实例详解

    这篇文章主要介绍了PHP的伪随机数与真随机数详解,本文首先讲解了真随机数和伪随机数的相关概念,并给出了比用mt_rand()函数产生更好的伪随机数的一段例子代码,需要的朋友可以参考下 首先需要声明的是 ...

  9. STM32开发 -- base64详解

    base64之前有讲过: 参看:H.264再学习 – 详解 H.264 NALU语法结构 STM32上怎么使用呢? 参看:STM32F103C8T6_AES-128-CTR_base64密文解密.ra ...

最新文章

  1. centos6 mysql 导出sql_centos环境下如何导出数据库
  2. [css] 使用css3做一个魔方旋转的效果
  3. SQL中基于代价的优化
  4. remote API和regular API 的区别
  5. js获取单选按钮选项
  6. 摄像头(WebCam)在Linux操作系统中的驱动方法
  7. DevExpress ChartControl 实现多轴
  8. IE6——png图片的修复
  9. linux 用livego+obs推流视频并用yolov5检测
  10. 基于统计的开源翻译系统介绍
  11. 抖音头像有钩什么意思,抖音上有黄勾和蓝勾什么意思
  12. 【CityHunter】游戏进度总控,及需求设计
  13. win10亮度调节消失的解决方法
  14. Instrument 之 time Profiler
  15. 【knex】 knex.js中 orderBy多个字段排序
  16. 瓷砖铺贴方法_正确的瓷砖铺贴步骤!(全图标示)
  17. 百度网盘外链采集分析 爬取百度网盘用户分享 问题记录
  18. 四个小诀窍 告诉你雪景怎么拍才能更好看
  19. 输入输出电阻的个人理解
  20. 06_平台总线匹配规则,自己搭建总线xbus

热门文章

  1. [转]详细介绍java中的数据结构
  2. 将excel用VBA生成指定格式的TXT文件
  3. java 马士兵 io 代码分析_学习笔记-马士兵java- (IO初步)流
  4. php数组第二位,PHP将二位数组按照第二维的某个元素的值进行排序
  5. mysql 创建用户 create user_mysql创建用户并赋予用户权限详细操作教程
  6. 取整 除法_Python学习教程:Python3除法之真除法、截断除法和下取整对比
  7. idea导包都报错_IDEA+Springboot 导出jar包,war包
  8. Java黑皮书课后题第8章:*8.21(中心城市)给定一组城市,中心城市是和其它所有城市具有最短距离的城市。编写一个程序,提示用户输入城市数目以及位置(坐标),找到中心城市以及与其他城市总距离
  9. C语言学习之通过指针变量输出整型数组a的10个元素
  10. 课堂派派典型用户和场景