stm1024 发表于 2018-9-20 08:20:18

关于ENC28J60的控制寄存器访问问题?

本帖最后由 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协议等,需要预先约定确定的波特率。



select326 发表于 2018-9-20 10:08:11

F103 用这个不太合适吧??建议你换成W5500模块

stm1024 发表于 2018-9-20 20:48:45

select326 发表于 2018-9-20 10:08
F103 用这个不太合适吧??建议你换成W5500模块

ENC28J60是独立以太网控制器,和微处理器没多大关系。W5500只是多了硬件协议而已

maxtch 发表于 2018-9-21 11:35:53

select326 发表于 2018-9-20 10:08
F103 用这个不太合适吧??建议你换成W5500模块

ENC28J60 不带 TCP/IP,如果 F103 容量大一点自己带一个 lwip 也够。W5500 的硬件 TCP/IP 好像不支持 IPv6 或 FCoE 这类高级协议。

select326 发表于 2018-9-21 14:38:58

stm1024 发表于 2018-9-20 20:48
ENC28J60是独立以太网控制器,和微处理器没多大关系。W5500只是多了硬件协议而已 ...

没用过enc28j60 ,只用过W5500

stm1024 发表于 2018-9-21 14:50:55

select326 发表于 2018-9-21 14:38
没用过enc28j60 ,只用过W5500

我准备把ENC28J60弄清楚了以后,再搞搞W5500
页: [1]
查看完整版本: 关于ENC28J60的控制寄存器访问问题?