将 ESP8622 连接到 74LV165

Connect ESP8622 to 74LV165

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

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

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

  1. 将SPI频率设置为80MHz
  2. 拉下SS一段时间
  3. 从某个寄存器读取接收到的字节

如果这不可能或太复杂,我建议使用 2 个 GPIO(CLK 和 DATA)并在程序周期中形成我的字节 - 哪种 GPIO(数字)更适合高性能?

好的,成功了!

应该实施几个步骤。

  1. 连接74LV165 -> HSPI:

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

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

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

对于全双工通信使用:

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。