本帖最后由 stm1024 于 2018-9-21 08:58 编辑 由于我是使用的STM32F103,不像互联型的107等有以太网接口,我就在某宝上淘了一个ENC28J60的模块,PHY等一应俱全,看上去很美好。 然后抄起datasheet,美滋滋开始编程,结果发现,写PHY寄存器(通过MII接口)有问题。 后来设置MAC地址,就是控制寄存器MAADR0-MAADR5,结果写进去之后立马读出来,发现读取值不对,每次只有MAADDR1的值是对的,其他的都是错00。如果我直接读EREVID这个只读寄存器,结果是6,符合预期(根据官方errata文档,这个值表明是REV B7)。 怀疑SPI写数据有问题,但是我使用SPI写命令,修改CLKOUT相关的寄存器(ECOCON),用逻辑分析仪测频率,又都符合要求。 大家有没有碰到类似的问题,是否对SPI频率有要求? 注:SPI的模式、BANK我是严格按手册写的。 /*问题解决了,把SPI的预分频反复修改,最后测试改改成128分频就OK了,WTF: SPI_itd.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_128; */ SPI也真是的,不像CAN协议等,需要预先约定确定的波特率。 |
ENC28J60是独立以太网控制器,和微处理器没多大关系。W5500只是多了硬件协议而已
ENC28J60 不带 TCP/IP,如果 F103 容量大一点自己带一个 lwip 也够。W5500 的硬件 TCP/IP 好像不支持 IPv6 或 FCoE 这类高级协议。
没用过enc28j60 ,只用过W5500
我准备把ENC28J60弄清楚了以后,再搞搞W5500