Estoy trabajando en la interfaz con un bus SPI que está exhibiendo algún ... mal comportamiento.
El bus proviene de una caja de control en un conjunto de baterías de juguete. La caja de control es el SPI maestro, y se puede activar y desactivar con un botón incorporado. Un circuito separado que lee desde los drumpads es el único esclavo en el bus.
Lo que estoy haciendo es esto: básicamente he agregado un maestro al bus, en forma de microcontrolador. Sé que este no es un uso estándar de SPI, pero es para un proyecto de hobby, por lo que no me importa. Los dos maestros nunca operan simultáneamente, por lo que no hay conflictos. Principalmente aplico esto: si la caja de control está activada, no conecto el cable USB al microcontrolador (estoy usando un Pro Micro). Además, si el microcontrolador detecta que la caja de control está encendida, la unidad de control finaliza las comunicaciones SPI.
Aquí está mi circuito. Todavía necesito amortiguar la línea MISO, pero aparte de eso es lo que estoy usando.
Haytresestadosenlosquepuedeestarestecircuito:
- Apagado:lacajadecontrolestáapagadayelProMicroestádesenchufado
- Encendidodelacajadecontrol:lacajadecontrolestáencendida,peroProMicroestáapagada,graciasaldiodoSchottky.Lacajadecontroleselmaestro,yelProMicroestáaisladodelcircuito.
- ProMicropower:elcableUSBestáenchufadoyelProMicroeselmaestro.Lacajadecontrolestádesactivada.
Miproblemaocurreduranteelestado1.Aunquelacajadecontrolestádesactivada,laslíneasSPIquesalendeellamuestran3.3V.Poralgunarazón,lacajadecontrolalimentaMOSI,CLKyCSapesardequesuVCCmuestra0V!CuandonilacajadecontrolniProMicroestánactivados,elbúferestásinalimentación,ylassalidasestánviendo3.3V.Dealgunamanera,estoestáactivandoelbúferdemanerainversa,queasuvezalimentaelrestodemicircuito.
Estoyusandounbúfer
Antes de comenzar a usar el búfer, conecté las líneas SPI directamente a mi microcontrolador (ATMega 32U4). Tuve el mismo problema: las líneas SPI alimentaron mi Pro Micro a través de los diodos de protección inversa en los pines.
Entonces, ¿cómo puedo conducir estas líneas cuando aún están encendidas mientras el resto de mi circuito está apagado?