Enc28j60 için MAC adresi

Başlatan robikod, 22 Ocak 2019, 11:04:48

robikod

Herkese merhaba, enc28j60 entegresini stm32 ile kullanıyorum.
Cihaz için MAC adresine ihtiyacım var. Cihaz MAC adresimi nasıl bulabilirim ?

Mucit23

ENC28J60'ın MAC adresini sen kendin belirlemiyormusun?

robikod

Alıntı yapılan: Mucit23 - 22 Ocak 2019, 13:48:42ENC28J60'ın MAC adresini sen kendin belirlemiyormusun?

Belirlediğimi düşünüyorum ancak initilaze edemiyorum sanıyorum. Aşağıdaki şekilde init yapıyorum. Nerede hatam olabilir ? SPI'yı osiloskop ile kontrol ettim düzgün çalışıyor. Bir yerde hata yapıyorum ancak bulamadım bir türlü.


void ENC28_Init(unsigned char *mac_addr)
{

    // SystemInit();
    // SysTick_Config(SystemCoreClock / 1000);
    // init_pin(GPIOE, GPIO_Pin_9, GPIO_Mode_OUT, GPIO_Speed_50MHz, GPIO_OType_PP, GPIO_PuPd_UP);
    GPIO_ResetBits(GPIOA, GPIO_Pin_4);

    GPIO_SetBits(GPIOA, GPIO_Pin_4);

   enc28_writeOp(ENC28J60_SOFT_RESET, 0, ENC28J60_SOFT_RESET);
    // Delay(500);

    // GPIO_SetBits(GPIOE, GPIO_Pin_9);

    while (!(enc28_read(ESTAT) & ESTAT_CLKRDY))

        ;

    next_pack_ptr = RXSTART_INIT;

    enc28_write(ERXSTL, RXSTART_INIT & 0XFF);

    enc28_write(ERXSTH, RXSTART_INIT >> 8);

    enc28_write(ERXRDPTL, RXSTART_INIT & 0xFF);
    enc28_write(ERXRDPTH, RXSTART_INIT >> 8);

    enc28_write(ERXNDL, RXSTOP_INIT & 0xFF);
    enc28_write(ERXNDH, RXSTOP_INIT >> 8);

    enc28_write(ETXSTL, TXSTART_INIT & 0xFF);
    enc28_write(ETXSTH, TXSTART_INIT >> 8);

    enc28_write(ETXNDL, TXSTOP_INIT & 0xFF);
    enc28_write(ETXNDH, TXSTOP_INIT >> 8);

    enc28_write(ERXFCON, ERXFCON_UCEN | ERXFCON_CRCEN | ERXFCON_PMEN | ERXFCON_BCEN);

    enc28_write(EPMM0, 0x3f);
    enc28_write(EPMM1, 0x30);
    enc28_write(EPMCSL, 0xf9);
    enc28_write(EPMCSH, 0xf7);

    enc28_write(MACON1, MACON1_MARXEN | MACON1_TXPAUS | MACON1_RXPAUS);
    enc28_writeOp(ENC28J60_BIT_FIELD_SET, MACON3, MACON3_PADCFG0 | MACON3_TXCRCEN | MACON3_FRMLNEN | MACON3_FULDPX);

    enc28_write(MAIPGL, 0x12);
    enc28_write(MAIPGH, 0x0C);
    enc28_write(MABBIPG, 0x15);

    enc28_write(MAMXFLL, MAX_FRAMELEN & 0xFF);
    enc28_write(MAMXFLH, MAX_FRAMELEN >> 8);

    enc28_write(MAADR5, mac_addr[0]);
    enc28_write(MAADR4, mac_addr[1]);
    enc28_write(MAADR3, mac_addr[2]);
    enc28_write(MAADR2, mac_addr[3]);
    enc28_write(MAADR1, mac_addr[4]);
    enc28_write(MAADR0, mac_addr[5]);

    enc28_writePhy(PHCON1, PHCON1_PDPXMD);

    enc28_writePhy(PHLCON, 0x0476);

    enc28_writePhy(PHCON2, PHCON2_HDLDIS);

    enc28_setBank(ECON1);

    // enc28_writeOp(ENC28J60_BIT_FIELD_SET, EIE, EIE_INTIE | EIE_PKTIE);

    enc28_writeOp(ENC28J60_BIT_FIELD_SET, ECON1, ECON1_RXEN);


}