1.獲取MCU唯一ID號
static u32 CpuID[3];
static u32 mac_Code;
u8 ID0,ID1,ID2,ID3;
void GetCPI_ID(void)
{
CpuID[0]=*(u32*)(0x1fff7a10);
CpuID[1]=*(u32*)(0x1fff7a14);
CpuID[2]=*(u32*)(0x1fff7a18);
mac_Code = (CpuID[0]>>1)+(CpuID[1]>>2)+(CpuID[2]>>3);
ID0=mac_Code&0x000000FF;
ID1=(mac_Code&0x0000FF00)>>8;
ID2=(mac_Code&0x00FF0000)>>16;
ID3=(mac_Code&0xFF000000)>>24;
}
2.固定W5500的MAC后兩位為00:02
3.將ID0-ID3依次作為MAC的前四位。
假設ID0=0x01;ID1=0x02;ID2=0x03;ID3=0x04;
最終的MAC地址就是01:02:03:04:00:02;
其實MCU的唯一ID地址有96位,完全可以使用這96位進行組合的,我為了方便就固定了MAC的后兩節。
然后按照該MAC地址初始化W5500就保證了MAC地址的唯一性,一旦MCU更換,則MAC也發生變化,不會出現MAC沖突的問題。
各位不好意思,由于金幣不夠,因此這只是一個分享的貼子,僅供參考。
|