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

如何设置唯一MAC地址基于stm32

[复制链接]
攻城狮Melo 发布时间:2023-3-14 17:01
stm32参考手册中指出,在地址为0x1FFFF7E8处,有一个唯一的身份标识寄存器。
- N7 f' X8 T8 W; S7 c$ d5 @3 w5 K/ `3 X5 M' l5 p! ~% ^
20190119203820971.jpg # I3 J+ [1 R6 ?

  n: ^) d8 _9 S2 A5 q$ W" c
20190119203834859.jpg 5 ^! y  Q5 P' @+ x8 ?
; F! p5 f  t% p: W
20190119203848435.jpg
1 {& _. Q9 A9 [. u) z' U& ?
& R2 `" Y8 n0 W' X$ d) b+ X
可以直接访问该值。
  1. printf( "\r\nChip ID: %x, %x, %x\r\n", *(vu32*)(0x1ffff7e8), *(vu32*)(0x1ffff7e8+4), *(vu32*)(0x1ffff7e8+8));
      i8 `$ T+ d$ _- \6 B$ c
复制代码
  1. Chip ID: 5d8ff39, 36364e4e, 431374035 ?3 {" U2 G+ j
复制代码
( [' t# u3 ^( f& a: ^1 E! Y5 r9 h
虽然这个96bit的ID是唯一的,但是MAC地址却只有48bit,因为量产有不同批次,而且采购的很随机的话这个ID号也是不唯一的,比较靠谱一点的还是自己在指定FLASH位置定义一个变量,这样程序就写死去读这个地方的值,而这个地方的值我们再用别的方式去修改,如自己写个上位机用串口通信设置等。
) G+ T5 a* v" R4 Z0 M
  1. uint32_t chipID __attribute__((at(0X800F000)))= 0x12345678;( L' a: b/ S+ X9 J
  2.         printf( "\r\nChip ID: %x\r\n", *(vu32*)(0X800F000));( L7 t3 D" R9 q5 T  P9 P) }
  3.         printf( "\r\nChip ID: %x\r\n", *(vu8*)(0X800F000));
    9 Q7 h4 y& I- E* b2 |
  4.         printf( "\r\nChip ID: %x\r\n", *(vu8*)(0X800F001));6 \, y! n/ H/ l( V( \. T' V
  5.         printf( "\r\nChip ID: %x\r\n", *(vu8*)(0X800F002));6 t- [4 t* Q- E0 k/ `6 @
  6.         printf( "\r\nChip ID: %x\r\n", *(vu8*)(0X800F003));
    " O8 [: n3 ^6 {  v! d* F& ]
复制代码

6 d. y& z9 H4 c7 s6 I2 ], w这里使用了正点原子的脱机下载器,注释掉该定义变量,并在该处设置滚码。
- l- B$ M4 P% c# u5 A+ ^% L1 |
20190119212540802.jpg
4 D* J" [) B5 P

1 f2 I# y  }6 r" l1 B4 o开始烧录
, d6 N1 }' m8 R+ L: T& a4 h) M) Y; a. D/ ]: X1 u" i2 {  |
20190119212553517.jpg 5 D7 |8 \1 g6 k

6 E% _! t* }4 h% ^串口显示如下:
1 P/ ^# p0 |* M' y& ?( B& F
  1. Chip ID: 55550002$ l) U/ h1 P: r6 g8 M1 X

  2. / [3 s& ^1 e  H
  3. Chip ID: 2
    ; x/ i' u. o: ~

  4. : w8 s6 w8 Z/ T' w+ J- t- I
  5. Chip ID: 0
    3 C' F5 @1 H8 O
  6. 6 R& h- D0 H( _9 n
  7. Chip ID: 55
    2 K+ c+ ?% j4 M- g+ `" `
  8. " ]( X1 w' B# u5 J. v. _
  9. Chip ID: 55$ A; W" ?$ N! Q1 M2 l3 D& m
复制代码
# y* K$ ?' v8 x
对应代码如下:) a" _2 ?# v" F: A% m
  1. printf( "\r\nChip ID: %x\r\n", *(vu32*)(0X800F000));
    * o) S( k( Q6 K) w8 C# f
  2.         printf( "\r\nChip ID: %x\r\n", *(vu8*)(0X800F000));
    3 b" |* n% ^" c2 C* ^
  3.         printf( "\r\nChip ID: %x\r\n", *(vu8*)(0X800F001));
    % j, P: M2 D, J
  4.         printf( "\r\nChip ID: %x\r\n", *(vu8*)(0X800F002));# E8 y/ T+ Q- m- [- f4 G/ m
  5.         printf( "\r\nChip ID: %x\r\n", *(vu8*)(0X800F003));
复制代码
MAC地址的前12bit固定,后面的便可以直接如此自定义设置。
' j7 E) D1 X% P2 ]3 ^) q% U————————————————3 Y2 g5 ]. g/ d5 ~. v' K4 o2 N
版权声明:小盼你最萌哒0 w9 I' v  i3 x0 M/ p! N) [
如有侵权请联系删除
, o/ x6 T0 K4 a3 v5 Z
7 j2 I" a; Y; C/ G" T% m
赞 收藏 评论0 发布时间:2023-3-14 17:01

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版