Hur du använder I2C i LabVIEW (5 / 6 steg)
Steg 5: Hur man läser Data Sheet och kod
Sedan behöver vi visa data sheet för gyro-sensor. Detta kommer att ge oss information om hur den sensorn fungerar och vad registrerar vi måste läsa/skriva. Sensorn i PmodGYRO använder är L3G4200D och här är det datablad för den. På sidan 10 finns information om de olika upplösningarna för varje intervall. Dessa kommer att vara viktigt för att konvertera heltal med värdet till ett meningsfullt värde i grader per sekund.
På sidan 22 anges slav adressen som 110100xb. Eftersom SDO pin är ansluten till spänning, är adressen 1101001b vilket motsvarar 0x69 i hex eller 105 i decimal. Den här sidan också detaljer som om du vill läsa mer än ett byte i taget, kan du auto-increment data genom att placera en 1 i MSb position. Detta är viktigt när man läser ur data registren (mer om detta senare).
På sidan 29, CTRL_REG1 0x20 är detaljerad. Här kan vi se vad varje bit medel på registret. Vi vill sätta enheten i normalt läge och aktivera x-, y- och z-axlarna så att vi behöver skriva 00001111 för att registrera 0x20. 00001111 är 0xF i hex så i labview använder vi en I2C skriva för att registrera 0x20 och vi skriver 0xF (Nästa post i matrisen).
På sidan 32, CTRL_REG4 0x23 är detaljerad. Vi ser att det är där vi kan ställa fullt skalutslag upptäckt. För 250 dps, vi behöver 00000000 (0x0), för 500 vi behöver 00010000 (0x10), för 2000 dps vi kan sätta antingen 00100000 eller 00110000 (jag använde 0x30). Ett fall strukturen används att skriva rätt hex värde till detta register beroende på vilken rad är markerad.
Det finns andra inställningar som du kan röra med om du är intresserad i register som kontroll.
Nu måste vi räkna ut där data lagras och hur det lagras. På sidan 35 kan vi se att värdena lagras från registrera 0x28 för att registrera 0x2D (6 byte data, 2 för varje axel) i 2: s komplettera form. För att läsa detta, måste vi peka på den första registret 0x28 med en 1 på MSb plats så att data kan alla läsa på en gång (auto-increment). 0x28 med en 1 på MSb ställe är 0xA8. Använda I2C skriva att skriva detta register och sedan använda I2C Läs att läsa 6 byte data och lagra detta i en matris.
Nästa, byte behandlas för att ge de värden vi vill ha. Använda index matris att läsa enskilda transaktioner och skarva x, y, z-data tillsammans. Multiplicera alla dessa signerat 16-bitarsvärden i resolution när de konverteras till en 2 komplement värde eftersom det är hur databladet sa dessa rapporteras från sensorn.
Nu stänger en I2C och svåra är klar!