最近在搞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协议以太网应用求助
![](http://m.amcfsurvey.com/uphotos/Veiko/thumb/avatar.jpg)
结题了:这几天要完成一个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地址有关的代码改一下就好了,这个问题终于解除了……
回复
有奖活动 | |
---|---|
东芝TB6560AHQ步进电机驱动器芯片 | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
【有奖活动】智能可穿戴设备AR/VR如何引领科技新潮流! | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 |
打赏帖 | |
---|---|
【换取手持数字示波器】+AT89C2051串口接收数据显示到LCD1602上被打赏50分 | |
【分享评测,赢取加热台】+AT89C2051控制NRF24L01收发数据被打赏50分 | |
【分享评测,赢取加热台】迪文屏设计实战技巧被打赏40分 | |
“DFRobot盖革计数器模块评测”基础模型搭建被打赏50分 | |
【换取手持数字示波器】+角点检测----Harris被打赏40分 | |
【换取手持数字示波器】常见音频指标被打赏20分 | |
【分享评测,赢取加热台】从零配置MCX-N947——PWM(SCtimer)被打赏50分 | |
【分享评测,赢取加热台】实际测试MCX-N947——PWM(Ctimer)被打赏50分 | |
【换取手持数字示波器】红外触摸框及各类红外设备的工作原理被打赏20分 | |
【换取手持数字示波器】+精英板驱动两相四线步进电机被打赏10分 |