Cómo implementar un controlador esclavo I2C y SPI en Linux
El caso más simple:
I2C: línea de datos SDA, línea de reloj SCL.
SPI: línea de entrada DI, línea de salida DO, selección de chip CS, línea de reloj CLK.
No puede escribirse a un conductor.
Pero, afortunadamente, una situación tan simple rara vez se utiliza y los fabricantes la ampliarán y mejorarán.
Por ejemplo, la memoria flash de la serie W25Q128FB/W25R128FV admite SPI, Dual SPI, Quad SPI y QPI. Tome Quad SPI como ejemplo, tiene 6 pines:
Quad SPI: líneas de entrada y salida D0-D3, selección de chip CS, línea de reloj CLK.
La entrada es una entrada serial D0 de un bit y la salida es una salida serial D0-D3 de cuatro bits. (Cuatro bits siguen siendo menos de un byte, por lo que se le puede llamar serie)
Winbond hace esto para acelerar la lectura de la memoria flash (la serie de cuatro bits es cuatro veces más rápida que la serie de un bit) veces) .
Entonces la clave está en qué tipo de IO realizar. No parece importar si escribir ambos en un solo controlador.