打印
[PIC®/AVR®/dsPIC®产品]

【新手】关于PIC+ENC28J60的求助

[复制链接]
889|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
vkeilla|  楼主 | 2016-3-17 14:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
      用过enc28j60的大神希望能来给我一些帮助。

      第一次使用以太网模块ENC28J60,现在遇到了一些困惑的问题。我的主控芯片是PIC24FJ128GA010,外接ENC28J60的小模块,自己用杜邦线连接的,手动模拟SPI。
    spi.c是自己写的,代码如下,感觉应该没有什么问题。
#include <p24FJ128GA010.h>
#include "uipbuff.h"
#include "enc28j60.h"
#include "spi.h"
void WriteByte(u8_t temp){
  _TRISG3=0;
  _TRISG1=0;

  u8_t i;

  for(i=0;i<8;i++){
        SCKN=0;  delay_us(500);
        SI = temp & 0x80;
        SCKN=1;  delay_us(500);
        temp <<=1;
      }
  SCKN=0;
}

u8_t ReadByte(void){

  _TRISG3=0;
  _TRISF1=1;

  u8_t i,dat1;
  SCKN=0;dat1=0;

  for(i=0;i<8;i++){

        SCKN=1;  delay_us(500);
        dat1 <<=1;
        if(SO==1) dat1++;
        SCKN=0;         delay_us(500);
  }
  return dat1;
}
enc28j60的初始化读写寄存器缓冲区等等都是挪用网上通用的enc28j60.c 文件。部分预处理都自己根据自己的实际情况做了相应的修正了。编译也没有报错,程序也能下的进去,但是问题是这样的,

初始化完成后,用enc28j60Read(ECON1);读取ECON1寄存器数值再用LCD显示出来是0xFA。再尝试读取其他寄存器都是0xFA.我很不解,如果spi时序出问题应该读出0x00或者ff吧,为何会出现0xFA,我尝试不初始化,什么都不做直接读取,读出来就是0x00。
甚至我强制写入enc28j60Write(ECON1,0x11);后再读取还是读出来0xFA.

void main() {

    _TRISA14=0;     //Set CS I/O Mode
   
    lcd_init();

    enc28j60_init();

    u8_t test1;

    enc28j60Write(ECON1,0x11);
    test1=enc28j60Read(ECON1);
    write_u8lcd(test1);

    while(1);

}

沙发
forgot| | 2016-3-19 11:41 | 只看该作者
我都是用选PIC自带以太网的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝