STM32L + ENC28J60(Olimex)

时间:2012-12-02 10:01:57

标签: stm32

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

1 个答案:

答案 0 :(得分:1)

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

延迟有效,因为您要完成传输(以及ENC28J60中的内部逻辑)时间。