Hallo zusammen,
derzeit bin ich am Programmieren des DACs am STM32.
Hierzu gibt es bereits auch einige Beispiele.
In allen Beispielen wird als Reference Voltage 1.25 Volt eingestellt.
Das bedeutet wiederrum, dass die max. Ausgangsspannung bei den 12 Bit
auslösung, also für den Wert 4095 auch den 1.25 Volt entsprechen.
Ich möchte jedoch 3,3 V als max. Ausgangsspannung erreichen.
Es gibt in der DAC_Init_TypeDef Struktur für reference voltage noch 2.5V
zum einstellen, sowie VDD.
Jedoch wenn ich einen dieser Parameter benutze, bleibt weiterhin die
Ausgangsspannung jedesmal auf den max. 1.25 V für den DIgitalwert 4095.
Was ist hier das Problem, habe echt keine Ahnung mehr...
Hi,
die max Ausgangs-Spannung hängt mit der Spannung
am VREF+ Pin zusammen
das ist die max. erreichbare Spannung für den DAC
kann es sein, das bei dir dort nur 1,25V anliegen ?
Gruss Uwe
Hey Uwe,
danke für den Hinweis, vermutlich ist dass das Problem.
Wo finde ich jedoch den Vref Pin an meinem Controller?
Mein Controller ist momentan über USB versorgt, und hat einen Pin mit
3,3V und einen mit 5V herausgeführt? Wo liegt Vref, bzw. wo muss es
angelegt werden?
PS: Habe ein Bild mit Pins mit hinzugefügt
Habe im Datenblatt des Controllers auch noch folgenden Hinweis gefunden:
29.3.2 Reference Selection
Three internal voltage references are available and are selected by
setting the REFSEL bits in
DACn_CTRL:
• Internal 2.5V
• Internal 1.25V
• VDD
The reference selection can only be changed while both channels are
disabled. The references for the
DAC need to be enabled for some time before they can be used. This is
called the warm-up period, and
starts when one of the channels is enabled. For a bandgap reference,
this period is 5 DAC_CLK cycles
while the VDD reference needs 1 DAC_CLK cycle. The DAC will time this
period automatically(given that
the prescaler is set correctly) and delay any conversion triggers
received during the warm-up until the
references have stabilized.
In meinem Programm beginne ich auch mit der Funktion DAC_Setup, welche
die Reference Spannung auf 2,5V einstellt, und aktiviere erst dann den
Kanal, von daher sollte auch dies kein Problem sein.
Weil hier im Text ja steht, dass nur im abgeschalteten Zustand die
Referenzspannung verstellt werden kann.
Problem ist behoben...
die Struktur wurde am Anfang mit einer Default Struktur initialisiert.
Anschließend wurde ein Wert der Struktur (die Reference Voltage) nochmal
neu gesetzt. Anscheinend kann dieser Wert nicht mehr überschrieben
werden, wenn er zuvor mit den Default Parametern gesetzt wurde.
Er bleibt nämlich immer noch auf 1.25 V obwohl er anschließend auf 2.5V
gesetzt wurde.
Dass ist dann wohl eher ein C-Problem.
Auch seltsam, da die Default Struktur ja nicht const ist, und auch der
Compiler kein Problem meldet.
Nunja, jetzt geht es...
Programmierer schrieb:> die Struktur wurde am Anfang mit einer Default Struktur initialisiert.> Anschließend wurde ein Wert der Struktur (die Reference Voltage) nochmal> neu gesetzt. Anscheinend kann dieser Wert nicht mehr überschrieben> werden, wenn er zuvor mit den Default Parametern gesetzt wurde.> Er bleibt nämlich immer noch auf 1.25 V obwohl er anschließend auf 2.5V> gesetzt wurde.
Kannst du den Teil des Codes zeigen? Ich verwende demnächst auch den
DAC...
/* Write data output value to the correct register. */
34
if(!ch)
35
{
36
dac->CH0DATA=value;
37
}
38
else
39
{
40
dac->CH1DATA=value;
41
}
42
}
Und in der main habe ich folgende aufrufe:
[c]
/* Initialise the DAC */
DAC_setup();
/* Enable DAC channel 0, located on pin PB11 */
DAC_Enable(DAC0, 0, true);
[\c]
Danach kann ganz normal geschrieben werden mit dem Befehl
DAC_WriteData(..)
in der DAC_Setup Funktion habe ich übrigens inzwischen einfach die 2,5V
als Reference Voltage auskommentiert, und im em_dac file in der
DefaultStruktur den Wert einfach direkt auf die 2,5V gesetzt..;)