Stap 4: Interfacing naar een Arduino Uno met niveau-Shifters
De Arduino Uno de digitale uitgangen zenden 0V en 5V als logica niveaus laag en hoog, respectievelijk. De flash-chip van de WinBond werkt alleen tussen 2.7V en 3.6V. Wanneer logische circuits op verschillende spanning vliegtuigen moeten kunnen communiceren, moeten we een niveau-shiftergebruiken.
De eenvoudigste vorm van niveau-shifter is een eenvoudige Zener-diode klem. Er zijn vele andere soorten niveau shifters in de wereld, sommige zijn sneller, sommige gebruiken minder stroom, de Zener-clamp-methode is snel en eenvoudig.
Alle dioden hebben een omgekeerde-verdeling spanning waarna ze beginnen uit te voeren. Zener diodes zijn speciaal ontworpen om de verdeling op fijn afgestemde spanningen. In mijn geval, ik aangesloten een 3,3 v Zener-diode parallel met elk van de chip digitale ingangen (Zie het schema). (Wat betreft de andere vier pinnen, is grond 0V, en de Uno-bestuur heeft een 3.3V leveringen voor de VCC, zodat deze pinnen hoeft niet een diode, en ik hardwired/WP en /HOLD naar 3,3 v Vcc.)
UPDATE: ik vergat toe te voegen van de 330 Ohm weerstanden in serie met de output van de Uno-stuurprogramma's. Normaal gesproken als u de digitale uitgang van de Uno op een digitale ingang van een ander apparaat aansluiten waren, een eenvoudige draad voldoende zou zijn (aangezien u één digitale logica signaal naar de andere verbindt, zie de ATmega328 gegevensblad, punt 13.1 "I/O Pin Equivalent schema"). Maar aangezien de output pad nu via de Zener takken, moet u een weerstand te beperken van de maximumstroming, gedreven door de uitvoer van de logica van de Uno/ATmega-chip. Zonder de weerstand, mag dit pad op grond de max output stroom van het apparaat. Dat zou slecht, Ray.
Nu, wanneer de Uno een 5V logica-hoog in, zeg, de /CS pin, de Zener-diode schakelt over naar de verdeling modus drijft, klemmen van de spanning tot 3,3 v, waardoor de bescherming van de input logica van de flash-chip.
Met behulp van deze klemmen, ik de Arduino Uno de digitale uitgang pin 10 (SS) aangesloten op/CS, pin 11 (MOSI) op DI, 12 (MISO) pin te doen, en pin 13 (SCK) naar CLK. (Let op dat de pinnen van de Atmega328 niet de dezelfde pinnen zijn als de Uno, bijvoorbeeld de Atmega pin #19 Uno pin #13 is.) De SPI softwarebibliotheek neemt pin 10 = SS, enz.