MAX11131 Bibliothek


Zusammenfassung

Diese C-Bibliothek beschreibt die Ansteuerung des 16-Kanal AD-Wandlers MAX11131 über SPI mit einem Mikrocontroller der MSP430-Serie. Als Mikrocontroller wird der MSP43F5359 und als Entwicklungsumgebung die IAR Embedded Workbench genutzt.

Downloads MAX11131-Bibliothek

AD-wanlder-max111xx-c-library.zip

Kurzbeschreibung

Der Ad-Wandler MAX11131 hat Schreibe- und Lesebefehle und kann über SPI angesprochen werden. Die Chip Select-Leitung signalisiert dabei den Start und Ende eines Frames. Der MAX11131 bietet die Möglichkeit entweder 16 Kanäle als Single Ended oder 8 Kanäle Differenzial zu nutzen.

Alle Funktionen der Bibliothek „max11131.c“ werden nachfolgend erläutert:


void MAX11131_SPI_init(void)
Initialisiert SPI-UCB1 (Port 8) des Mikrocontrollers MSP430F5359IPZ
Parameter-
Return-


unsigned char MAX11131_SPI_transmit(unsigned char data)
Senden und empfangen über SPI über Kanal UCA1 des MSP430F5359
Parameterdata; Information die über SPI gesendet werden soll
ReturnInformation die über SPI empfangen wurde


unsigned int MAX11131_transmit(unsigned int command)
Sendet und Empfängt zum und vom MAX11131 über die SPI-Schnittstelle. Die !CS-Funktion zum signalisieren eines Frames ist hier schon drin. Für die Befehle siehe die Defines und Datenblatt ab Seite 15. Beachte es wird ein 2 Byte Befehl gesendet. Je nach Befehl wird auch geantwortet. Die Antwort muss aber der letzten Befehl der Versand wurde zugeordnet werden und nicht den aktuellen der Versand wird
Parametercommand; Befehl der dem MAX11131 versandt werden soll
ReturnAntwort die vom MAX11131 erhalten wurde


MAX11131_bipolar_chanel(char k)
Funktion sollte nur intern genutzt werden. Switch-Anweisung zur Auswahl des Bipolar-Kanals
Parameterk; Kanal der ausgewählt werden soll
ReturnGibt das entsprechende Register zurück


unsigned int MAX11131_range_chanel(char k)
Funktion sollte nur intern genutzt werden. Switch-Anweisung zur Auswahl des Range-Kanals
Parameterk; Kanal der ausgewählt werden soll
ReturnGibt das entsprechende Register zurück


unsigned int MAX11131_unipolar_chanel(char k)
Funktion sollte nur intern genutzt werden. Switch-Anweisung zur Auswahl des Unipolar-Kanals
Parameterk; Kanal der ausgewählt werden soll
ReturnGibt das entsprechende Register zurück


unsigned int MAX11131_csel_chanel(char k)
Funktion sollte nur intern genutzt werden. Switch-Anweisung zur Auswahl der AD-Kanäle
Parameterk; Kanal der ausgewählt werden soll
ReturnGibt das entsprechende Register zurück


void MAX11131_Echo_aktiv (char status)
Aktiviert die Echo-Funktion des MAX11131 für die Konfig-Register. Hierbei: Aktiviere-Echo -> Sende neue Konfig zur Zeit t -> Sende wieder neue Konfig zur Zeit t+1 und bekomme als Echo von MISO die Konfig aus Zeit t falls alles korrekt abgelaufen ist.
Parameterstatus; Bei TRUE wird Echo aktiv, bei FALSE nicht
Return-


void MAX11131_test (void)
Teste den MAX11131 indem ich einen Echo sende und daraufhin eine Konfig, als Resultat sollte 0x8380 kommen
Parameter-
Return-


void MAX11131_ADC_conf(void)
Die Funktion stellt den AD-Wandler ein. Dazu muss der Anwender die #defines in der Header-Datei manipulieren (vgl. auch unten). Die Vorgehensweise stammt aus dem Flussdiagramm der Seite 32; MAX11131 Datenblatt; Jahr 2015.
Variable GLOBAL in der Header zu finden und gegeben falls bearbeiten (TRUE oder FALSE)
RefSel = TRUE: Single-Ended Referenz ; FALSE: Differenziele Referenz
SoP_FD = TRUE: Pseudo oder Single-Ended ; FALSE: Voll-Differenziell
SinEnd = TRUE: Single-Ended ; FALSE: Pseudo-Differenziell
UniBip = TRUE: Unipolar ; FALSE: Bipolar
ran = TRUE: Referenz +/-Vref ; Referenz +/-Vref/2 ; Nur bei Bipolar von Interesse
anz = Anzahl der Kanäle, wähle zwischen 0 bis 7
Parameter-
Return-


void MAX11131_init(void)
Initialisiere den MAX11131 indem ich ihm zuerst Konfiguriere und dann Dummy-Werte auslese
Parameter-
Return-


unsigned int MAX11131_get_ADC_eins(char ch)
AD-Wert aus einzelnen Kanal bekommen
Parameterch; Kanal der ausgewählt werden soll
ReturnGibt den entsprechende AD-Wert zurück


unsigned int* MAX11131_get_ADC(char start, char end)
Siehe dazu "Figure 12; Datenblatt Seite 33; Stand 2015". Hier gibt es zu viele Möglichkeiten um die Funktion wieder mit TRUE/FALSE Händeln zu können. Wähle mir aus, was zum Projekt passt. Hier Eingestellt sind: Externe Clock, Manuell, Kanalauswahl, No Reset, Power-Mode Normal. Den Kanal/Kanäle muss man sich selber über "start" und "end "wählen.
!!! Wenn ich mehrere Kanäle Messe, dann beachte: Ich messe jetzt für Kanal N und bekomme den Wert von Kanal N-1 zuerst!!
Parameterstart; Von Anfangskanal bis
end; Endkanal
ReturnGibt AD-Wert-Array zurück


unsigned int MAX11131_mean(char ch, int cnt, int pow)
Berechne Mittelwert für den jeweiligen kanal ch mit shift-Division (zeitsparender als normale Division). Achte darauf das cnt = vielfache von 2 ist und pow die Potenz dazu.
Parameterch; Kanal der gemittelt werden soll
cnt; Anzahl der Werte (müssen vielfache von 2 sein -> 2^n)
pow; Die Potenz n
ReturnGibt den Mittelwert zurück


 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.