Herkese merhaba, enc28j60 entegresini stm32 ile kullanıyorum.
Cihaz için MAC adresine ihtiyacım var. Cihaz MAC adresimi nasıl bulabilirim ?
ENC28J60'ın MAC adresini sen kendin belirlemiyormusun?
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);
}