smilingfrog 发表于 2022-2-11 12:08:50

初始化的MAC地址问题

EMAC_STM32H7xx.c中的初始化代码里,
static const uint8_t mac_def = { 2, 0, 0, 0, 0, 0 };

heth.Instance = ETH;
heth.Init.TxDesc         = DMATxDscrTab;
heth.Init.RxDesc         = DMARxDscrTab;
heth.Init.RxBuffLen      = ETH_MAX_PACKET_SIZE;
heth.Init.MACAddr      = (void *)mac_def;初始化MAC地址为{ 2, 0, 0, 0, 0, 0 }
Net_Config_ETH_0.h中的配置里,MAC地址设置为
#define ETH0_MAC_ADDR         "1E-30-6C-A2-45-5E"代码跑起来后,实际通过电脑查询,MAC地址也是"1E-30-6C-A2-45-5E"。
这里就有个疑问,EMAC_STM32H7xx.c里配置的初始化MAC地址是什么,有什么作用?


eric2013 发表于 2022-2-11 16:57:26

被覆盖掉了。

smilingfrog 发表于 2022-2-15 11:45:47

eric2013 发表于 2022-2-11 16:57
被覆盖掉了。

进仿真运行后,查看heth.Init.MACAddr,他是一个指针,指向的地址是0x080xxxxx,就是flash中的一个固定地址。这个地址里的值就是02000000,并没有覆盖新的MAC地址。

eric2013 发表于 2022-2-15 12:04:19

smilingfrog 发表于 2022-2-15 11:45
进仿真运行后,查看heth.Init.MACAddr,他是一个指针,指向的地址是0x080xxxxx,就是flash中的一个固定地 ...

这个是因为你这个 static const uint8_t mac_def = { 2, 0, 0, 0, 0, 0 };定义是固定在Flash里面的。

启动后,系统没有再使用这个了。

gallop020142 发表于 2022-2-15 13:42:40

eric2013 发表于 2022-2-15 12:04
这个是因为你这个 static const uint8_t mac_def = { 2, 0, 0, 0, 0, 0 };定义是固定在Flash里面的。
...

如果不修改mac地址,两个h7接同一个路由器,就会出现H7互联通讯时,需要很长时间才能获取IP地址,通讯也不稳定。
而每个H7自己设定不同MAC时,就没有这些问题,这应该说明MAC修改成功了吧?

eric2013 发表于 2022-2-16 10:59:19

gallop020142 发表于 2022-2-15 13:42
如果不修改mac地址,两个h7接同一个路由器,就会出现H7互联通讯时,需要很长时间才能获取IP地址,通讯也 ...

大概率是可以的。
页: [1]
查看完整版本: 初始化的MAC地址问题