CN / EN
文档反馈
感谢关注汇顶文档,期待您的宝贵建议!
感谢您的反馈,祝您愉快!
无匹配项 共计114个匹配页面

示例代码

RNG

采用用户提供的种子和开关振荡器提供的种子生成随机数,工程路径:SDK_Folder\projects\peripheral\rng\app_rng

示例工程流程图

示例工程采用了两种种子,且通过中断和轮询两种方式生成随机数。下面只以轮询方式进行说明,中断方式查看示例工程。

图 30 RNG生成随机数流程

使用用户提供的种子生成随机数

app_rng_params_t rng_polling_params = {
   .use_type = APP_RNG_TYPE_POLLING,
   .init = {
       .seed_mode = RNG_SEED_USER,
       .lfsr_mode = RNG_LFSR_MODE_59BIT,
       .out_mode  = RNG_OUTPUT_LFSR,
       .post_mode = RNG_POST_PRO_NOT,
   },
};
  • use_type:传输方式选择APP_RNG_TYPE_POLLING(轮询)
  • init.seed_mode:种子源选择RNG_SEED_USER(用户提供)
  • init.lfsr_mode:LFSR模式选择RNG_LFSR_MODE_59BIT
  • init.out_mode:输出模式选择RNG_OUTPUT_LFSR(LFSR直接输出)
  • init.post_mode:后处理选择RNG_POST_PRO_NOT(不进行后处理)

使用开关振荡器提供的种子生成随机数

rng_polling_params.init.seed_mode = RNG_SEED_FR0_S0;
rng_polling_params.init.out_mode = RNG_OUTPUT_FR0_S0;
  • init.seed_mode:种子源选择RNG_SEED_FR0_S0(开关振荡器S0提供的种子)
  • init.out_mode:输出模式选择RNG_OUTPUT_FR0_S0(开关振荡器直接输出)

重要函数

  • 初始化RNG
    app_rng_init (&rng_polling_params, NULL)
  • 同步生成随机数
    app_rng_gen_sync(g_random_seed, &random_number)
    • g_random_seed:随机种子(使用开关振荡器产生的种子,此参数可传入NULL)。
    • random_number:生成的随机数。
  • 异步生成随机数
    app_rng_gen_async(g_random_seed)

    g_random_seed:随机种子(使用开关振荡器产生的种子,此参数可传入NULL)。

测试验证

连接开发板到PC端,打开串口,串口将打印生成的随机数。

扫描关注

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