I found the MAC address from the label on the bottom of the L137 EVM board. Is below the correct procedure for configuring EMAC frame? Thank you!
//MAC Addr, from EVM Board Label 00-03-99-02-55-57
// Fixed Priority Queue, Ch7 highest priority, copy Addr across unused Channels 0-6
EMAC_MACINDEX = 0x00; EMAC_MACADDRHI = 0x000e9902; // Needs to be written only the first time EMAC_MACADDRLO = 0xff57; EMAC_MACINDEX = 0x01; EMAC_MACADDRLO = 0xff57; EMAC_MACINDEX = 0x02; EMAC_MACADDRLO = 0xff57; EMAC_MACINDEX = 0x03; EMAC_MACADDRLO = 0xff57; EMAC_MACINDEX = 0x04; EMAC_MACADDRLO = 0xff57; EMAC_MACINDEX = 0x05; EMAC_MACADDRLO = 0xff57; EMAC_MACINDEX = 0x06; EMAC_MACADDRLO = 0xff57; EMAC_MACINDEX = 0x07; EMAC_MACADDRLO = 0xff57;
// MAC Source Addr, should be same as the EMAC Addr
EMAC_MACSRCADDRHI = 0x000e9902; /* bytes 2-5 */ EMAC_MACSRCADDRLO = 0xff57; /* bytes 0,1 */
You should try:
for MAC address = a.b.c.d.e.f = 00.03.99.02.55.57:
MACSRCADDRHI = f.e.d.c = 0x57550299; /* bytes 5..2 */
MACSRCADDRLO = b.a = 0x0300; /* bytes 1..0 */
By convention, MAC addresses (like IPv4 ones) are written in the transmitting order, but unfortunatly MAC addresses are little endian (bit level) and IPv4 ones are big endian (byte level); perhaps TI guys could have recalled this in the EMAC docs.
With MACSRCADDRLO odd (ie first byte of MAC address odd, or first bit transmitted set to 1) you specify an Ethernet group address, therefore explaining the loopback multicast receive problem in your precedent post.
Jakez, thank you for your response. In above example, are you saying the sequence from MSB to LSB is a.b.c.d.e.f?
Also, do you know where the Destination Address is defined in Transmitting Packet？ According to Transmit Buffer Descriptor Format, it is only related with payload (e.g. the Buffer Pointer points to the pure data packet). But I don't know where the Destination Address is defined.
Trying to be more clear:
a.b.c.d.e.f standed for the 6-byte Ethernet address (also noted a-b-c-d-e-f), from least to most significant byte (a is byte 0, the first byte transmitted).
The header of an Ethernet packet contains at byte level (see IEEE802 or p17 of EMAC UG sprufl5b.pdf):
- 6-byte destination address (ie as,bs,cs,ds,es,fs starting with as)
- 6-byte source adress (ad,bd,cd,dd,ed,fd)
- 2-byte length or type packet tag for higher level protocols (if greather than 0x600, for example 0x0806 for ARP packet; 0x0800 for IP packet; ...), most significant byte first
My code works. Thanks a lot!
All content and materials on this site are provided "as is". TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with regard to these materials, including but not limited to all implied warranties and conditions of merchantability, fitness for a particular purpose, title and non-infringement of any third party intellectual property right. TI and its respective suppliers and providers of content make no representations about the suitability of these materials for any purpose and disclaim all warranties and conditions with respect to these materials. No license, either express or implied, by estoppel or otherwise, is granted by TI. Use of the information on this site may require a license from a third party, or a license from TI.
TI is a global semiconductor design and manufacturing company. Innovate with 100,000+ analog ICs andembedded processors, along with software, tools and the industry’s largest sales/support staff.