CN / EN
文档反馈
感谢关注汇顶文档,期待您的宝贵建议!
感谢您的反馈,祝您愉快!

RNG Query

RNG Query示例实现了通过阻塞方式获取RNG随机数。示例工程中采用用户提供的种子以及开关振荡器S0提供的种子两种方式产生随机数。

RNG Query示例的源代码和工程文件位于SDK_Folder\projects\peripheral\rng\rng_query,其中工程文件在文件夹Keil_5下。

代码理解

示例工程流程图如图 25所示:

图 25 RNG Query示例流程图
  1. 使用用户提供的种子生成随机数的初始化。
    uint16_t g_random_seed[8] = {0x1234, 0x5678, 0x90AB, 0xCDEF, 0x1468, 
      0x2345, 0x5329, 0x2411};
    
    g_rng_handle.init.seed_mode  = RNG_SEED_USER;
    g_rng_handle.init.lfsr_mode  = RNG_LFSR_MODE_59BIT;
    g_rng_handle.init.out_mode   = RNG_OUTPUT_LFSR;
    g_rng_handle.init.post_mode  = RNG_POST_PRO_NOT;
    
    hal_rng_deinit(&g_rng_handle);
    hal_rng_init(&g_rng_handle);
    

    RNG详细配置参数请参考RNG Interrupt

  2. 开关振荡器S0的种子生成随机数的初始化。
    g_rng_handle.init.seed_mode  = RNG_SEED_FR0_S0;
    g_rng_handle.init.lfsr_mode  = RNG_LFSR_MODE_128BIT;
    g_rng_handle.init.out_mode   = RNG_OUTPUT_FR0_S0;
    
    hal_rng_deinit(&g_rng_handle);
    hal_rng_init(&g_rng_handle);
    

    RNG详细配置参数请参考RNG Interrupt

  3. 阻塞方式接口生成随机数。
    hal_rng_generate_random_number(&g_rng_handle, g_random_seed, &data);

测试验证

  1. 用GProgrammer下载rng_query.bin至开发板。
  2. 将开发板串口连接至PC端,打开并配置GRUart。
  3. 在GRUart的Receive Data窗口中将会显示获取到的随机数。

扫描关注

打开微信,使用“扫一扫”即可关注。