我需要以最高可能的ESP8266速度从并行到串行寄存器(74LV165A)读取字节。
我的想法是使用SPI接口,提供高达80 MHz的CLK。但看起来NON-OS SDK仅使用带有cmd数据字段的结构SpiData
来提供面向hspi的例程。
我是ESP8266的新手,想知道是否有办法实现我的想法。
如果这不可能或太复杂,我建议使用2个GPIO(CLK和DATA)并在程序循环中形成我的字节 - 哪些GPIO(数字)更适合高性能?
答案 0 :(得分:0)
好的,它有效!
应该实施几个步骤。
74LV165的连接 - > HSPI:
PL <- MOSI
Q -> MISO
CL <- HSPICLk
MISO用于创建PL高电平,输出为0xff
为了正确使用HSPI,NodeMCU驱动程序适合Ok: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。