你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【NUCLEO-U083RC评测】MSI校准和真随机数功能

[复制链接]
BinWin 发布时间:2024-5-3 22:54
        STM32U083RC的MSI时钟不仅可以直接设置为不同的频率,而且支持自校准,在程序内也可以写入校准参数。手册中有如下描述: Z$ Z' E* F$ z, B+ M) \- J' S
          1.png ; h1 R2 {) N! M! ]- l9 `
         前提是要有LSE并且正常起振。HSI标称的频率是16MHz,但频偏范围在15.88MHz-16.08MHz,虽然能到1%的精度,但MSI通过LSE校准后能到0.25%的精度,确实提高很多。实际可以通过测试写入用于校准的数值。$ f. M5 a6 o4 p0 i
          5.png
( {$ H0 V! s0 H8 F        看下可能用的多一些的随机数生成器。说真随机数,是因为该功能由模拟电路实现,振荡器输出进行异或运算产生种子。并且具有错误中断。可以避免数据无效时的读取。使用方法也方便快捷,CubeMX中直接使能即可。
( N8 q8 e+ |2 D2 `- T2 b7 J          2.png - N& a0 v  \; \% B9 G) u
         生成的程序添加库函数直接读出。) Z+ M( j; _/ a% _! x4 o: t. A
4 Q+ N" e# h: V, ^% W/ `
  1.   for (int counter = 0; counter < 8; counter++)
    : I* W3 `9 i, [  z$ u( H
  2.     {' R( Q8 ~& S! p8 Y
  3.       if (HAL_RNG_GenerateRandomNumber(&hrng, &aRandom32bit[counter]) != HAL_OK)5 D$ \* ^$ ?( W0 k0 O4 G
  4.       {
    6 s6 o# F9 S: ~( K
  5.         /* Random number generation error */
    5 f. G1 U" s) P' o& l0 A
  6.         Error_Handler();3 H( _2 K$ m% R# L
  7.       }6 I, v! T; J2 m+ w$ `9 A
  8.           printf("RandomNUmber %d = %d\r\n",counter,aRandom32bit[counter]);
    & n  J0 O& |) N6 F( y0 G
  9.     }
复制代码
        打印出来,可以看到确实无序的随机数列          3.png
, q4 X  g. L& B" t7 |3 F
4 c$ d0 ?4 p. G' \5 e6 n7 _          不使用库函数也不复杂,看下函数内部,只是有很多的状态判断,关键句还是读寄存器值0 P5 P2 O+ @" {$ D

( S$ N, K' h9 r2 u& h            6.png
+ c+ L% c$ b7 M; f4 a4 V           这些之前高端些的芯片才有的功能如今慢慢下沉到了新的较低端的产品上,对用户来说是很好的事情,老的M3芯片就没有这个福利。RNG的成功率能达到99%,一般使用是够的。
( {9 l7 b$ ]5 o$ J2 r4 B
1 收藏 评论0 发布时间:2024-5-3 22:54

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版