Fórum témák

» Több friss téma
Cikkek » SPI használata AVR-rel
SPI használata AVR-rel
Szerző: Fizikus, idő: Jún 13, 2011, Olvasva: 32109, Oldal olvasási idő: kb. 2 perc
Lapozás: OK   6 / 8

Microchip MCP3202 12 bites ADC IC

A legtöbb AVR ugyan rendelkezik Analóg-Digitális átalakító perifériával (ADC), de az általában csak 10 bites. Ha nagyobb pontosságra van szükség, akkor használhatunk pl. egy Microchip MCP3202 12 bites ADC IC-t.

Az alábbi ábrán látható az IC lábkiosztása:

(az adatlaphoz kattints az ábrára)

  • CH0/CH1 Analóg bemenetek.

  • CS/SHDN Chip Select/Shutdown: Ezzel a lábbal lehet SPI kommunikációt kezdeményezni az eszközzel ha a láb alacsony állapotban van. Ha a láb magas állapotban van, akkor az eszköz befejezi a kommunikációt és alacsony energiafogyasztású sleep módba kapcsol.

  • CLK: SPI soros órajel.

  • DIN : Soros adatbemenet

  • DOUT: Soros adatkimenet. Az ADC eredményét az SCK órajelimpulzusok ütemére itt lépteti ki az IC.

A kommunikáció az MPC 3202 IC-vel az SPI interfészen keresztül lehetséges. Az MCP3202 IC-t a mérések előtt küldött, megadott számú parancsbittel konfigurálhatjuk. Az eszközzel történő kommunikációt a CS (SS) láb alacsony állapotra kapcsolásával lehet kezdeményezni. Az első olyan órajelimpulzus, aminél a CS láb alacsony, a DIN láb pedig magas állapotban van a Start jel. Az eszköz az analóg bemenetet az SPI órajelimpulzus Start jel utáni második felfutóélére kezdi el mérni. A mintavételezés a Start jel utáni harmadik órajelimpulzus lefutó élére befejeződik. A Start jelet az SGL/DIFF bit és az ODD/SIGN bit követi, amelyekkel a bemeneti csatornák konfigurálhatóak. Az SGL/DIFF bittel az egyszerű kétcsatornás vagy az un. pszeudo-differenciális működési mód állítható be (az alábbi példában a kétcsatornás bemeneti modót fogom használni). Az ODD/SIGN bittel adhatjuk meg hogy a kétcsatornás bemeneti mód használata esetén melyik csatornán végezze el a mérést az IC. Ezután az MSBF bit következik, amivel az adható meg, hogy a mért adatok küldésekor a legnagyobb vagy a legkisebb helyiértékű bitet küldje az IC először. Az eszköz az adatokat mindig az órajelimpulzus lefutó élére lépteti ki. Az MSBF bitet követő órajelimpulzus lefutó éle után az eszköz egy null bitet léptet ki, majd az ezután következő 12 órajelimpulzus az ADC konverzió eredményét lépteti ki a legnagyobb helyiértékű bittel kezdve. Ha mind a 12 bitet kiléptette már az IC, és az eszköz további órajelimpulzusokat kap a CS láb alacsony állapota mellett, akkor az eszköz (ha MSBF=1) az ADC konverzió eredményét újra kilépteti de ezúttal a legkisebb helyiértékű bittel kezdve a sort. Ha ezután további órajelimpulzusok érkeznek a CS láb alacsony állapota mellett, akkor az eszköz folyamatosan nullákat léptet ki a kimenetén.

Látható, hogy az MCP3202-nek az ADC mérés beállításához és a 12 bites mérési eredmény elküldéséhez a Start jellel együtt összesen 17 SPI órajelimpulzusra van szüksége. Mivel az AVR SPI interfész csak bájtonként (8 bitenként) tud adatot küldeni és fogadni, és a Start jel az első olyan órajelimpulzus, aminél a CS láb alacsony, a DIN láb pedig magas állapotban van, ezért a Start bit előtt 7db nullbitet kell küldenünk, hogy az egész kommunikáció kitöltsön 3 bájtot és a beérkezett adatok könnyen kezelhető formátumban legyenek. Ez látható az alábbi ábrán:

Az X-el jelölt bitek értéke nem releváns. Ezért a példában én mindig nullákat fogok használni. Így az SPI Master által küldött, az MCP3202-t konfiguráló bájtok, és az MCP3202-ről fogadott bájtok az alábbi ábrán látható szerkezetűek:  


A cikk még nem ért véget, lapozz!
Következő: »»   6 / 8
Értékeléshez bejelentkezés szükséges!
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem