打印

6657例程GE的自有MAC地址设置问题

[复制链接]
908|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
二十八|  楼主 | 2016-8-29 19:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 二十八 于 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\n",
                        ((mac_addr2 & 0x0000ff00) >> 8),
                        (mac_addr2 & 0x000000ff),
                        ((mac_addr1 & 0xff000000) >> 24),
                        ((mac_addr1 & 0x00ff0000) >> 16),
                        ((mac_addr1 & 0x0000ff00) >> 8),
                        (mac_addr1 & 0x000000ff));
这个例子看得不是太懂,这里的这些与或运算要表达什么意思,怎样将自有的MAC地址通过改这段代码写入呢?

3-TMS320C6657以太网使用手册.rar

1002.85 KB

相关帖子

沙发
zhangmangui| | 2016-8-29 22:52 | 只看该作者
与或运算是将你的MAC地址写到程序的相关寄存器或变量里面了
而你只需将mac_addr1和mac_addr2根据实际情况写入就可以了

使用特权

评论回复
板凳
二十八|  楼主 | 2016-8-30 09:45 | 只看该作者
zhangmangui 发表于 2016-8-29 22:52
与或运算是将你的MAC地址写到程序的相关寄存器或变量里面了
而你只需将mac_addr1和mac_addr2根据实际情况写 ...

比如我要写入的MAC地址是40:15:7e:ab:91:ab,我该怎样对mac_addr1和mac_addr2赋值呢?

使用特权

评论回复
地板
zhangmangui| | 2016-8-30 21:53 | 只看该作者
EMAC_REGS->MACADDRHI = ((mac_addr1 & 0x00ff0000) << 8)

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   写入这两个地址啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝