本帖最后由 二十八 于 2016-8-29 21:33 编辑
C6657的以太网学习。“用户也可以使用自有的MAC地址,而不使用TI提供的MAC地址。在这种情况下,用户将自有的MAC地址填入mac_srcAddress,不再调用GE_get_macaddr(mac_srcAddress),同时需要在EMAC_init()函数中,将自有MAC地址加入到接收地址列表,以保证正常收包“(具体文件在附件中)下面是加入MAC地址到接收地址列表的范例代码:
- /* Setup MAC Address for Channel 0 */
- EMAC_REGS->MACINDEX = 0;
- EMAC_REGS->MACADDRHI = ((mac_addr1 & 0x00ff0000) << 8)
- | ((mac_addr1 & 0xff000000) >> 8)
- | ((mac_addr2 & 0x000000ff) << 8)
- | ((mac_addr2 & 0x0000ff00) >> 8);
- EMAC_REGS->MACADDRLO = CSL_FMK(EMAC_MACADDRLO_VALID, 1)
- | CSL_FMK(EMAC_MACADDRLO_MATCHFILT, 1)
- | ((mac_addr1 & 0x000000ff) << 8)
- | ((mac_addr1 & 0x0000ff00) >> 8);
- printf("macaddress: %02X:%02X:%02X:%02X:%02X:%02X
",
- ((mac_addr2 & 0x0000ff00) >> 8),
- (mac_addr2 & 0x000000ff),
- ((mac_addr1 & 0xff000000) >> 24),
- ((mac_addr1 & 0x00ff0000) >> 16),
- ((mac_addr1 & 0x0000ff00) >> 8),
- (mac_addr1 & 0x000000ff));
复制代码这个例子看得不是太懂,这里的这些与或运算要表达什么意思,怎样将自有的MAC地址通过改这段代码写入呢?
04. | ((mac_addr1 & 0xff000000) >> 8)
05. | ((mac_addr2 & 0x000000ff) << 8)
06. | ((mac_addr2 & 0x0000ff00) >> 8);
这个很明显是4个字节
EMAC_REGS->MACADDRLO = CSL_FMK(EMAC_MACADDRLO_VALID, 1)
09. | CSL_FMK(EMAC_MACADDRLO_MATCHFILT, 1)
10. | ((mac_addr1 & 0x000000ff) << 8)
11. | ((mac_addr1 & 0x0000ff00) >> 8);
这个是2个字节
共六个字节 你的这6个字节 40:15:7e:ab:91:ab 写入这两个地址啊
一周热门 更多>