View previous topic :: View next topic |
Author |
Message |
loop_51
Joined: 13 Jul 2011 Posts: 2
|
Trouble interfacing ENC28J60 with PIC18F2550 |
Posted: Wed Jul 13, 2011 12:47 pm |
|
|
Hi,
I tried a code with ATmega88 which worked perfectly to implement arp, ICMP and UDP with ENC28J60... then I wanted to do the same thing with a PIC.
But the ENC28J60 doesn't seem to respond to any of my spi commands.
I ran the ATmega88 with 3.3V but I was running the PIC at 48MHz using PLL with a 4MHz crystal. So I had to use a logic level conversion. I used 74HC4050 to do that. I converted the SCK, SDO, SS to 3.3V (even though the data sheet of ENC28J60 suggested that it would tolerate voltages up to 6V..) and converted the SO pin of ENC28J60 to 5V... but the ENC28J60 is not responding to any of my SPI commands.
I am using the following code to configure the SPI of the PIC:
Code: |
SETUP_SPI(SPI_MASTER | SPI_L_TO_H | SPI_CLK_DIV_4 | SPI_SS_DISABLED);
|
Even though I'm giving SPI_CLK_DIV_4 -- when I used PIC KIT3 to debug I found the value of SSPCON1 to be 33 which sets the PICs SPI clock to Fosc/16.
But I don't think this is the problem that is making the ENC28J60 act dead.
I have given weeks to troubleshoot.... the datasheet suggest 74HCT08. I know HCT chips can interface with TTL logic and CMOS logic... but PIC18F2550 and ENC28J60 both are CMOS.... why would there be a problem.
I tried sending the SPI command to modify the clock out to see if it changes. (I used an oscilloscope to observe) The ENC28J60 doesn't accept any commands from the PIC. _________________ loop_51 |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Wed Jul 13, 2011 1:45 pm |
|
|
Quote: |
SETUP_SPI(SPI_MASTER | SPI_L_TO_H | SPI_CLK_DIV_4 | SPI_SS_DISABLED); |
You are using the wrong SPI mode for the ENC28J60. See this thread:
http://www.ccsinfo.com/forum/viewtopic.php?t=43241&start=5
Also, the last parameter is only used if the PIC is an SPI slave.
Your PIC is the SPI Master. Remove the last parameter.
Quote: | The ENC28J60 doesn't accept any commands from the PIC.
|
Also make sure you have the \CS signal connected, and that you are
setting it low before doing any SPI transactions with the ENC28J60,
and setting it high again when done. |
|
|
loop_51
Joined: 13 Jul 2011 Posts: 2
|
|
Posted: Thu Jul 14, 2011 12:03 pm |
|
|
Yes tried taking out SPI_SS_DISABLED-- now I'm getting some data from the SO pin of ENC28J60.
However the ENC28J60 isn't behaving like I commanded with the SPI... I set the clock out to zero... so it should give me logic low. _________________ loop_51 |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Thu Jul 14, 2011 2:04 pm |
|
|
CCS has a driver for the ENC28J60 here, in the compiler directory:
Quote: |
c:\program files\picc\drivers\enc28j60.c
|
It supports either software or hardware SPI. |
|
|
giacomine
Joined: 20 May 2012 Posts: 1
|
Código Fonte |
Posted: Sun May 20, 2012 6:09 pm |
|
|
I need to connect the module to a PIC18F4550 ENC28J60 to light the leds PORTD, over the internet, but I have no idea how to begin. Could anyone help me? I would use the PIC C. Thank you! |
|
|
|