ZHDU116G January 2018 – June 2024 CC1312PSIP , CC1312R , CC1352P , CC1352R , CC2642R , CC2642R-Q1 , CC2652P , CC2652PSIP , CC2652R , CC2652RB , CC2652RSIP , CC2662R-Q1
TRNG 可以通过多种方式关闭,但并非所有方式都能保存熵。下文讨论不同的模式。
最好的方法是不读取最后生成的随机数。在 TRNG:CFG0 寄存器中定义的 MAX_REFILL 时间(最多 224 个周期)之后,TRNG 进入空闲模式,此时所有 FRO 都将关闭。读取生成的值时,TRNG 会再次启动并生成一个新的随机种子,该种子在 TRNG:CFG0.MIN_REFILL_CYCLES 寄存器设定的时间后准备就绪。当 TRNG 处于空闲模式时,可以关闭模块时钟。熵在两次随机数创建之间得以保留,因此无需对模块进行复位 (SW)。
关闭 TRNG 的另一种方法是仅停止模块时钟。通过停止模块时钟来关闭 TRNG,熵也会被保留(即不影响随机性),但 FRO 可能仍在运行。时钟可以随时启用,随机种子的生成会继续。无需对模块进行软复位。
如果时钟停止,则无法访问 TRNG,并且会(在互连结构内)生成总线故障。
如果一个不再需要 TRNG 的应用程序必须进入深度睡眠模式而无法等待,则应用程序可以在 TRNG:CTL.TRNG_EN 寄存器位中写入 0,并且可以关闭输入的系统时钟。以该方式关闭后,在生成新的随机数之前,应执行 TRNG 模块的软复位(请参阅节 19.7.1中的寄存器说明),因为无法保证随机性。这种关闭方法的缺点是在下一个随机数准备就绪之前需要熵累积时间。