【问题标题】:STM32L + ENC28J60 (Olimex)STM32L + ENC28J60 (Olimex)
【发布时间】:2012-12-02 10:01:56
【问题描述】:

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

【问题讨论】:

    标签: stm32


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-20
      • 2015-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多