最近在搞STM32F207+DP83848物理层芯片的LWIP,在TCP应用下,遇到一个问题,就是如何修改MAC地址,目前我认为与两个相关的函数有关:
void ETH_MACAddressConfig(uint32_t MacAddr, uint8_t *Addr);
void ETH_GetMACAddress(uint32_t MacAddr, uint8_t *Addr);
前一个是配置对应的MAC地址(STM32的以太网控制外设支持0-3共4个MAC地址寄存器),第二个函数是读取对应的MAC地址寄存器的内容。经测试,读取到的内容和当前网络中的实际物理地址相同,即读取函数是对的,同时用配置函数修改MAC地址后立即读取其内容则为想要修改的内容,但是网络连接中的物理地址仍然没有改变,不知道是什么原因,不知道哪位大侠对STM32的网络应用较熟悉的,指点一下,万分感谢!
【讨论交流】STM32F107或207或407的LWIP协议以太网应用求助
结题了:这几天要完成一个CAD表格的制作,因此提出的问题就没有来得及去研究,刚刚把CAD的任务完成了,拿出开发板(以前调直接用的产品的板子)拿出以前调过的程序,突然一下子发现main.h文件里面有一个关于MAC地址的宏定义:
#define MAC_ADDR0 2
#define MAC_ADDR1 0
#define MAC_ADDR2 0
#define MAC_ADDR3 0
#define MAC_ADDR4 0
#define MAC_ADDR5 0
难怪每次改了之后复位结果却没发生任何改变,把这些预定义代码注释了后,通过编译器找到使用这些代码的地方:ethernetif.c里面有个函数:
static void low_level_init(struct netif *netif)
将这个函数里面与MAC地址有关的代码改一下就好了,这个问题终于解除了……
#define MAC_ADDR0 2
#define MAC_ADDR1 0
#define MAC_ADDR2 0
#define MAC_ADDR3 0
#define MAC_ADDR4 0
#define MAC_ADDR5 0
难怪每次改了之后复位结果却没发生任何改变,把这些预定义代码注释了后,通过编译器找到使用这些代码的地方:ethernetif.c里面有个函数:
static void low_level_init(struct netif *netif)
将这个函数里面与MAC地址有关的代码改一下就好了,这个问题终于解除了……
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
vscode+cmake搭建雅特力AT32L021开发环境被打赏30分 | |
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 |