我正在尝试解码要在洗衣机中移位寄存器的信号。寄存器是STP16CPC05,它也恰好是LED驱动器。我正在尝试使用ESP12从洗衣机中获取状态,例如剩余时间,周期,检查是否完成等。如果我能读取到LED驱动器的信号,则可以确定哪些位对应于哪个LED,然后确定程序中的状态。
我的第一个念头是使用自定义shiftin,但是我对此并不走运(据说digitalread()还是太慢了),而且我到处都在读我应该“只使用SPI”,因为它速度更快。我已经能够使用逻辑分析仪成功读取信号,甚至为arduino pro mini编写脚本来模拟寄存器信号,这样我就可以更轻松地调试ESP12,而不必整天运行洗衣机。编写SPI主机相对容易,但是从机是困难的部分。这是Arduino Pro mini的代码,因此它可以仿真洗衣机信号:
// SPI master code for Arduino Pro Mini "washing machine clone"
#include <SPI.h>
void setup (void)
{
SPI.begin ();
SPI.setClockDivider(SPI_CLOCK_DIV8);
}
void loop (void)
{
delayMicroseconds(200);
SPI.transfer(0x00); //00 00 11 01 08 01 08 02 02 00 00 0C 67 66 80
SPI.transfer(0x00);
SPI.transfer(0x11);
SPI.transfer(0x01);
SPI.transfer(0x08);
delayMicroseconds(180);
SPI.transfer(0x01);
SPI.transfer(0x08);
SPI.transfer(0x02);
SPI.transfer(0x02);
SPI.transfer(0x00);
delayMicroseconds(180);
SPI.transfer(0x00);
SPI.transfer(0x0C);
SPI.transfer(0x67);
SPI.transfer(0x66);
SPI.transfer(0x80);
delayMicroseconds(200);
}
有人对在esp上制作一个简单的SPI从设备有任何想法吗?还是有更好的方法来监听此移位寄存器总线?时钟信号为1 MHZ,因此速度并不快。我只需要一次读取15个字节。
这是有希望的,但是将它分解成我想要的东西已经做了很多工作:https://github.com/JiriBilek/WiFiSpi。我可以获取它一次打印出数据,但随后我认为它在重置接收中断时遇到了问题,因为它需要交互式主机。
答案 0 :(得分:0)
esp8266 Arduino包中有一个SPISlave库。有例子。 (Jiri Bilek的固件只有其修改版本。)