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

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

[复制链接]
攻城狮Melo 发布时间:2023-3-14 17:01
stm32参考手册中指出,在地址为0x1FFFF7E8处,有一个唯一的身份标识寄存器。

20190119203820971.jpg

20190119203834859.jpg

20190119203848435.jpg

可以直接访问该值。
  1. printf( "\r\nChip ID: %x, %x, %x\r\n", *(vu32*)(0x1ffff7e8), *(vu32*)(0x1ffff7e8+4), *(vu32*)(0x1ffff7e8+8));
复制代码
  1. Chip ID: 5d8ff39, 36364e4e, 43137403
复制代码

虽然这个96bit的ID是唯一的,但是MAC地址却只有48bit,因为量产有不同批次,而且采购的很随机的话这个ID号也是不唯一的,比较靠谱一点的还是自己在指定FLASH位置定义一个变量,这样程序就写死去读这个地方的值,而这个地方的值我们再用别的方式去修改,如自己写个上位机用串口通信设置等。
  1. uint32_t chipID __attribute__((at(0X800F000)))= 0x12345678;
  2.         printf( "\r\nChip ID: %x\r\n", *(vu32*)(0X800F000));
  3.         printf( "\r\nChip ID: %x\r\n", *(vu8*)(0X800F000));
  4.         printf( "\r\nChip ID: %x\r\n", *(vu8*)(0X800F001));
  5.         printf( "\r\nChip ID: %x\r\n", *(vu8*)(0X800F002));
  6.         printf( "\r\nChip ID: %x\r\n", *(vu8*)(0X800F003));
复制代码

这里使用了正点原子的脱机下载器,注释掉该定义变量,并在该处设置滚码。

20190119212540802.jpg

开始烧录

20190119212553517.jpg

串口显示如下:
  1. Chip ID: 55550002

  2. Chip ID: 2

  3. Chip ID: 0

  4. Chip ID: 55

  5. Chip ID: 55
复制代码

对应代码如下:
  1. printf( "\r\nChip ID: %x\r\n", *(vu32*)(0X800F000));
  2.         printf( "\r\nChip ID: %x\r\n", *(vu8*)(0X800F000));
  3.         printf( "\r\nChip ID: %x\r\n", *(vu8*)(0X800F001));
  4.         printf( "\r\nChip ID: %x\r\n", *(vu8*)(0X800F002));
  5.         printf( "\r\nChip ID: %x\r\n", *(vu8*)(0X800F003));
复制代码
MAC地址的前12bit固定,后面的便可以直接如此自定义设置。
————————————————
版权声明:小盼你最萌哒
如有侵权请联系删除

收藏 评论0 发布时间:2023-3-14 17:01

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版