File tree 1 file changed +9
-5
lines changed
1 file changed +9
-5
lines changed Original file line number Diff line number Diff line change @@ -85,14 +85,18 @@ void hspi_slave_begin(uint8_t status_len, void * arg)
85
85
pinMode (MISO , SPECIAL );
86
86
pinMode (MOSI , SPECIAL );
87
87
88
- SPI1S = SPISE | SPISBE | 0x3E0 ;
89
- SPI1U = SPIUMISOH | SPIUCOMMAND | SPIUSSE ;
88
+ SPI1S = SPISE | SPISBE | 0x3E0 ; // SPI_SLAVE_REG
89
+ SPI1U = SPIUMISOH | SPIUCOMMAND | SPIUSSE ; // SPI_USER_REG
90
90
SPI1CLK = 0 ;
91
- SPI1U2 = (7 << SPILCOMMAND );
92
- SPI1S1 = (((status_len * 8 ) - 1 ) << SPIS1LSTA ) | (0xff << SPIS1LBUF ) | (7 << SPIS1LWBA ) | (7 << SPIS1LRBA ) | SPIS1RSTA ;
91
+ SPI1U2 = (7 << SPILCOMMAND ); // SPI_USER2_REG
92
+ SPI1S1 = (((status_len * 8 ) - 1 ) << SPIS1LSTA ) | (0xff << SPIS1LBUF ) | (7 << SPIS1LWBA ) | (7 << SPIS1LRBA ) | SPIS1RSTA ; // SPI_SLAVE1_REG
93
93
SPI1P = (1 << 19 );
94
94
SPI1CMD = SPIBUSY ;
95
95
96
+ // Setting SPIC2MISODM_S makes slave to change MISO value on falling edge on CLK signal as is required for SPIMode 1
97
+ // Setting SPIC2MOSIDN_S is probably not critical, all tests run fine with this setting
98
+ SPI1C2 = (0x2 << SPIC2MOSIDN_S ) | (0x1 << SPIC2MISODM_S );
99
+
96
100
ETS_SPI_INTR_ATTACH (_hspi_slave_isr_handler ,arg );
97
101
ETS_SPI_INTR_ENABLE ();
98
102
}
@@ -114,7 +118,7 @@ void hspi_slave_end()
114
118
SPI1P = B110 ;
115
119
}
116
120
117
- void hspi_slave_setStatus (uint32_t status )
121
+ void ICACHE_RAM_ATTR hspi_slave_setStatus (uint32_t status )
118
122
{
119
123
SPI1WS = status ;
120
124
}
You can’t perform that action at this time.
0 commit comments