0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CKS32F4xx系列RNG功能设置

中科芯MCU 来源:中科芯MCU 2023-09-08 10:01 次阅读

MCU微课堂

CKS32F4xx列RNG功能

随机数发生器简介

CKS32F4xx系列自带了硬件随机数发生器(RNG),RNG处理器是一个以连续模拟噪声为基础的随机数发生器,在主机读数时提供一个32位的随机数。

CKS32F4xx系列的随机数发生器框图如图1所示:

b924921e-4d7a-11ee-a25d-92fbcf53809c.jpg

图1.RNG框图

CKS32F4xx系列的随机数发生器(RNG)采用模拟电路实现。此电路产生馈入线性反馈移位寄存器(RNG_LFSR)的种子,用于生成32位随机数。

该模拟电路由几个环形振荡器组成,振荡器的输出进行异或运算以产生种子。RNG_LFSR由专用时钟(PLL48CLK)按恒定频率提供时钟信息,因此随机数质量与HCLK频率无关。当将大量种子引入RNG_LFSR后,RNG_LFSR的内容会传入数据寄存器(RNG_DR)。

同时,系统会监视模拟种子和专用时钟PLL48CLK,当种子上出现异常序列,或PLL48CLK时钟频率过低时,可以由RNG_SR寄存器的对应位读取到,如果设置了中断,则在检测到错误时,还可以产生中断。

RNG寄存器

我们介绍下CKS32F4xx系列随机数发生器(RNG)的几个寄存器。

b9d4d84a-4d7a-11ee-a25d-92fbcf53809c.png

图2.RNG控制寄存器

图2为RNG的CR寄存器,其只有bit2和bit3有效,用于使能随机数发生器和中断。我们一般不用中断,所以只需要设置bit2为1,使能随机数发生器即可。

ba01b96e-4d7a-11ee-a25d-92fbcf53809c.jpg

图3.RNG状态寄存器

图3为RNG状态寄存器:RNG_SR。该寄存器我们仅关心最低位(DRDY位),该位用于表示RNG_DR寄存器包含的随机数数据是否有效,如果该位为1,则说明RNG_DR的数据是有效的,可以读取出来了。读RNG_DR后,该位自动清零。

ba14fc68-4d7a-11ee-a25d-92fbcf53809c.jpg

图4.RNG数据寄存器

图4为RNG数据寄存器:RNG_DR。在RNG_SR的DRDY位置位后,我们就可以读取该寄存器获得32位随机数值。此寄存器在最多40个PLL48CK时钟周期后,又可以提供新的随机数值。

至此,随机数发生器的寄存器,我们就介绍完了。接下来,我们看看要使用库函数操作随机数发生器,应该如何设置。

配置随机数发生器

1.使能随机数发生器时钟

要使用随机数发生器,必须先使能其时钟。随机数发生器时钟来自PLL48CK,通过AHB2ENR寄存器使能。所以我们调用使能AHB2总线外设时钟的函数使能RNG时钟即可:

RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_RNG, ENABLE);

2.使能随机数发生器

这个就是通过RNG_CR寄存器的最低位设置为1,使能随机数发生器。当然,如果需要用到中断,你快还可以使能RNG中断。本章我们不用中断。库函数中使能随机数发生器的方法为:

RNG_Cmd(ENABLE);

3.判断DRDY位,读取随机数值

经过前面两个步骤,我们就可以读取随机数值了,不过每次读取之前,必须先判断 RNG_SR寄存器的DRDY位,如果该位为1,则可以读取RNG_DR得到随机数值,如果不为1,则需要等待。

获取随机数发生器状态的函数为:

FlagStatus RNG_GetFlagStatus(uint8_t RNG_FLAG);

判断数据是否有效的入口参数为 RNG_FLAG_DRDY,所以等待就绪的方法为:

while(RNG_GetFlagStatus(RNG_FLAG_DRDY)==RESET);

判断数据有效后,然后我们读取随机数发生器产生的随机数即可,调用函数为:

uint32_t RNG_GetRandomNumber(void);

审核编辑:彭菁

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5032

    浏览量

    117741
  • 发生器
    +关注

    关注

    3

    文章

    1291

    浏览量

    60863
  • 硬件
    +关注

    关注

    11

    文章

    2922

    浏览量

    64800
  • 函数
    +关注

    关注

    3

    文章

    3882

    浏览量

    61310

原文标题:MCU微课堂|CKS32F4xx系列RNG功能

文章出处:【微信号:中科芯MCU,微信公众号:中科芯MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    MCU微课堂|CKS32F4xx系列产品时钟配置

    作为MCU运行的基础,时钟是单片机各个模块工作时序的最小时间单位,推动单片机的各指令执行,是MCU选型的一个重要指标。CKS32F4xx系列产品具有众多的外设,但并非所有的外设均需要系统时钟的高频率
    发表于 12-12 10:17 568次阅读

    CKS32F4xx系列ETH通信详解

    CKS32F4xx系列芯片自带以太网模块,该模块包括带专用DMA控制器的MAC 802.3(介质访问控制)控制器
    的头像 发表于 11-10 11:13 617次阅读
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>ETH通信详解

    CKS32F4xx系列DSP功能介绍

    CKS32F4xx系列使用高性能的32位内核,支持浮点运算单元(FPU),同时还支持DSP指令以及存储保护(MPU)用来加强应用的安全性。
    的头像 发表于 03-04 13:43 879次阅读
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>DSP<b class='flag-5'>功能</b>介绍

    CKS32F4xx系列I2S功能介绍

    CKS32F4xx系列使用高性能的32位内核,支持浮点运算单元(FPU),同时还支持DSP指令以及存储保护(MPU)用来加强应用的安全性。
    的头像 发表于 03-17 09:40 501次阅读
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>I2S<b class='flag-5'>功能</b>介绍

    CKS32F4xx系列mcu的GPIO口配置方法

    GPIO(General-purpose input/output)是通用输入输出端口的简称,CKS32F4xx系列产品通过GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能
    发表于 12-26 11:32 934次阅读

    CKS32F4xx系列产品串口DMA传输

    在上一讲,我们讲过CKS32F4xx系列的6个串口都支持DMA传输。因此本节我们对CKS32F4xx系列的DMA进行介绍,同时利用DMA对串口数据进行传输。
    的头像 发表于 04-10 11:18 707次阅读

    CKS32F4xx系列DAC功能

    CKS32F4xx系列DAC功能
    的头像 发表于 11-06 16:56 601次阅读
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>DAC<b class='flag-5'>功能</b>

    CKS32F4xx系列ADC多通道DMA电压采集

    CKS32F4xx系列ADC多通道DMA电压采集
    的头像 发表于 11-06 16:53 411次阅读

    CKS32F4xx系列ADC单通道电压采集

    CKS32F4xx系列ADC单通道电压采集
    的头像 发表于 11-06 16:54 561次阅读
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>ADC单通道电压采集

    CKS32F4xx系列低功耗模式STANDBY模式

    CKS32F4xx系列低功耗模式STANDBY模式
    的头像 发表于 11-06 16:57 243次阅读
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>低功耗模式STANDBY模式

    CKS32F4xx系列低功耗模式SLEEP模式

    CKS32F4xx系列低功耗模式SLEEP模式
    的头像 发表于 11-06 16:59 439次阅读
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>低功耗模式SLEEP模式

    CKS32F4xx系列低功耗模式STOP模式

    CKS32F4xx系列低功耗模式STOP模式
    的头像 发表于 11-06 17:08 361次阅读
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>低功耗模式STOP模式

    MCU微课堂 | CKS32F4xx系列产品SPI通信

    MCU微课堂 | CKS32F4xx系列产品SPI通信
    的头像 发表于 10-24 17:12 422次阅读
    MCU微课堂 | <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>产品SPI通信

    MCU微课堂 | CKS32F4xx系列产品GPIO口配置

    MCU微课堂 | CKS32F4xx系列产品GPIO口配置
    的头像 发表于 10-24 15:14 481次阅读
    MCU微课堂 | <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>产品GPIO口配置

    CKS32F4xx系列FSMC功能简介

    本课讲为大家讲解CKS32F4xx系列产品的FSMC应用实例,FSMC全称是Flexible Static Memory Controller,读作灵活的静态存储控制器,顾名思义,MCU可以通过FSMC扩展静态内存
    的头像 发表于 04-14 15:06 260次阅读
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>FSMC<b class='flag-5'>功能</b>简介