清和月二五 2023-04-04 14:39 采纳率: 0%
浏览 14

瑞萨RA6M4使用模拟SPI操控ENC28J69但ping 不通

1、背景描述:用瑞萨的E2 studio 编译器编写RA6M4通SPI协议操控enc28j60,能够实现ping功能(SPI用的是模拟SPI),我的电脑的IP地址为:192.168.2.57。开发板的IP地址为192.168.2.123 (使用Wireshark分析ping 192.168.2.123为一片空白)。
2、错误描述:代码能够运行,ping 192.168.2.123 -t(无法访问目标主机),一直卡在

        if(eth_type_is_ip_and_my_ip(buf,plen)==0)//过不去,
        {
            continue;
        }

这个函数作用是:检查ip数据包是否是给我们的:判断是否接收到目的地址为本机IP的合法的IP包
在这个函数内部:

unsigned char eth_type_is_ip_and_my_ip(unsigned char *buf,unsigned  int len)
{
    unsigned char i=0;
    //eth+ip+udp header is 42
    if (len<42)
    {
        return(0);
    }
    if(buf[ETH_TYPE_H_P]!=ETHTYPE_IP_H_V || buf[ETH_TYPE_L_P]!=ETHTYPE_IP_L_V)//在这里返回0
    {
        return(0);
    }
    if (buf[IP_HEADER_LEN_VER_P]!=0x45)
    {
        // must be IP V4 and 20 byte header
        return(0);
    }
    while(i<4)
    {
        if(buf[IP_DST_P+i]!=ipaddr[i])
        {
            return(0);
   }
        i++}
    return(1);}

在这里返回0:if(buf[ETH_TYPE_H_P]!=ETHTYPE_IP_H_V || buf[ETH_TYPE_L_P]!=ETHTYPE_IP_L_V)

3.1我的思考1:SPI读取有问题
但使用SPI读取ENC28J60的控制寄存器(ERDPTL,该寄存器在BANK0内,地址为0x00,复位返回值为:0xFA),再使用逻辑分析仪分析可以读出0xFA。
3.2我的思考2:接收到的数据包不对
这个我用逻辑分析仪分析时SPI时,SPI有写有读(但有多段接收全为0,接收到一些数据后又为0)。

  • 写回答

1条回答 默认 最新

  • 叶惠美晴天 2023-04-04 17:26
    关注

    不懂, 没办法

    评论

报告相同问题?

问题事件

  • 创建了问题 4月4日

悬赏问题

  • ¥20 Wpf Datarid单元格闪烁效果的实现
  • ¥15 图像分割、图像边缘提取
  • ¥15 sqlserver执行存储过程报错
  • ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
  • ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出
  • ¥100 matlab2009 32位一直初始化
  • ¥15 Expected type 'str | PathLike[str]…… bytes' instead
  • ¥15 三极管电路求解,已知电阻电压和三级关放大倍数
  • ¥15 ADS时域 连续相位观察方法
  • ¥15 Opencv配置出错