2012-12-02 16 views
2

我在通过Olimex连接ENC28J60-H到我的STM32L-Discovery时遇到问题。 因此,我编写代码,读取ECON1寄存器,写入一些值并再次读取它。这是一个问题:当我在代码中使用调试器的每一行(F10)时,一切都很顺利。但是当我在这行后面设置断点时,寄存器返回0x00。 我决定,ENC只是没有足够的时间将值写入寄存器。但手册说,它有自己的晶体振荡器,频率为20或25 MHz(不记得准确)。我的频率大约是150 kHz。 无论如何,在每次SPI发送或接收之后,我都设置了一个Delay(循环中的简单计数器)。这有帮助。 然后我继续前进。我写一个Init函数(软复位,比将所需值写入寄存器),在主函数中使用它。调用它之后,我再次读取一个ECON1寄存器。而我所有得到的是0x00,即使有延迟。 有没有人知道在这种情况下该做什么?STM32L + ENC28J60(Olimex)

回答

1

通过SPDR发送一个字节后,测试SPSR寄存器中的SPIF位(0x80)。当SPIF == 1时,数据已发送。

因为您正在给传输(和ENC28J60中的内部逻辑)时间完成,所以延迟会起作用。

相关问题