将ESP8622连接到74LV165

时间:2017-05-14 02:20:43

标签: esp8266

我需要以最高可能的ESP8266速度从并行到串行寄存器(74LV165A)读取字节。

我的想法是使用SPI接口,提供高达80 MHz的CLK。但看起来NON-OS SDK仅使用带有cmd数据字段的结构SpiData来提供面向hspi的例程。

我是ESP8266的新手,想知道是否有办法实现我的想法。

  1. 将SPI频率设置为80 MHz
  2. 拉下SS一段时间
  3. 从某个寄存器中读取接收到的字节
  4. 如果这不可能或太复杂,我建议使用2个GPIO(CLK和DATA)并在程序循环中形成我的字节 - 哪些GPIO(数字)更适合高性能?

1 个答案:

答案 0 :(得分:0)

好的,它有效!

应该实施几个步骤。

  1. 74LV165的连接 - > HSPI:

    PL <- MOSI Q -> MISO CL <- HSPICLk

  2. MISO用于创建PL高电平,输出为0xff

  3. 为了正确使用HSPI,NodeMCU驱动程序适合Ok:https://github.com/nodemcu/nodemcu-firmware/blob/master/app/driver/spi.c

  4. 对于全双工通信,请使用:

    spi_mast_transaction(1, 0, 0, 0, 0, 8, 0,-8)
    

    后一种说法对全双工通信是否定的。

    使用

    是个好主意
    SET_PERI_REG_MASK(SPI_USER(1), SPI_USR_MOSI|SPI_USR_MOSI_HIGHPART);
    WRITE_PERI_REG(SPI_W8(1), 0xff);
    

    表示MOSI数据值。这样,MOSI值可以在初始化时设置一次,而MISO数据将填充到SPI_W0..SPI_W7而不会重叠MOSI。

    1. 只要74LV165在CLK的下降沿给出输出,HSPI应该用CPOL = 1初始化。