Designa med diskret SPI Flash minne (4 / 7 steg)
Steg 4: Gränssnitt till en Arduino Uno med nivå-reglage
Arduino Unos digitala utgångar överföra 0V och 5V som logik nivåer låg och hög, respektive. WinBond flash chip fungerar endast mellan 2.7V och 3.6V. När logiska kretsar på olika spänning flygplan behöver kommunicera, måste vi använda en nivå-shifter.
Den enklaste formen av nivå-shifter är en enkel Zener diod klämma. Det finns många andra typer av nivå Växelreglage i världen, vissa är snabbare, vissa använder mindre ström, Zener clamp metoden är snabb och enkel.
Alla dioder har en omvänd fördelning spänning då de börjar att genomföra. Zenerdioder är särskilt utformade för att uppdelning på finstämt spänningar. I mitt fall har jag anslutit en 3.3V Zener diod parallellt med varje chip's digitala ingångar (se schemat). (Som för de andra fyra stift, marken är 0V och Uno styrelsen har en 3.3V supply för VCC, så dessa stift inte behöver en diod, och jag hårdkodade/WP och /HOLD till 3.3V Vcc.)
UPPDATERING: jag glömde att lägga till 330 Ohm motstånd i serie med produktionen av Uno drivrutinerna. Normalt, om du ansluta den digitala utgången av Uno till en digital ingång på en annan enhet, en enkel tråd skulle räcka (eftersom du ansluter en digital logik signal till en annan, se datablad ATmega328, avsnitt 13.1 "I/O stift motsvarande Schematisk"). Men eftersom pappersbana grenar nu genom Zener, behöver du ett motstånd att begränsa den maximala ström som drivs av logik utgång av Uno/ATmega chip. Utan motstånd, denna väg till marken får överstiga max output strömmen av enheten. Som skulle vara dåligt, Ray.
Nu, när Uno driver en 5V logik-hög i, säger, /CS stift, växlarna Zener diod till uppdelning läge, fastspänning spänningen till 3.3V, därmed skydda flash chip input logik.
Använda dessa klämmor, jag ansluten Arduino Uno's digital utgång stift 10 (SS) till CS, stift 11 (MOSI) till DI, pin 12 (MISO) till och -pin 13 (SCK) till CLK. (Observera att stiften av Atmega328 inte är samma stift som Uno, t ex Atmega pin #19 är Uno pin #13.) SPI programvara biblioteket förutsätter stift 10 = SS, etc.