esp32 & esp8266 spi
三线SPI
在几个月以前,我就已经发现esp8266的寄存器中存在一个所谓的sio
字段,这允许我们在3线spi模式下进行工作,这样我们就不需要额外将MISO和MOSI引脚连接在一起。(3线代表CLK,MOSI和CS,这里我们不需要CS线)
于是我就试着这么做了。结果有点奇怪:
- 第一次传输工作良好,我们成功在一条线上同时进行了半双工传输。
- 在第二次传输时,我们没有得到任何的ACK响应,这时总线已经被拉高。
好吧我不知道是什么原因。。。不过,esp8266的技术参考并没有记载这一奇葩的用途,网上也鲜有人提及这一点,或许是大家现在都用esp32了吧。。。
SWD相关
- 空闲时,SWDCLK为低电平
半双工模式
读写之间的延迟时钟设置:
SPIFLASH.user.usr_dummy = 0;
SPIFLASH.user1.usr_dummy_cyclelen = 0; // 这个是-1
esp32下的读阶段和写阶段的数据长度
SPI.mosi_dlen.usr_mosi_dbitlen = len -1;
SPI.miso_dlen.usr_miso_dbitlen = len -1;
内部寄存器
ck_dis
CLK输出设置