AD5575 als Stromsteller

Gast #2224828
Lesenswert?

Hallo,

ich würde gerne den AD5575 als Stromsteller (0...20mA) benutzen. Leider 
bekomme Ich den Baustein nicht programmiert und kann auch nicht weiter 
verifizieren, woran es liegt. DCDC-Wandler scheint richtig zu 
funktionieren, zumindest Messe ich an VBoost 7,4V (Stromausgang disable) 
bzw. 15V (Spannungsausgang disable).
Die Register per SPI kann ich programmieren und auch wieder auslesen. An 
der Kommunikation sollte es daher nicht scheitern.

Kennt wer den Baustein und kann mir da helfen? Nachfolgend mein Code 
(DUT_AD = 00, SPI-Mode = 1).

// Reset (0x555 ins SoftwareRegister schreiben)
spiwrite(0x1C9555);

// ToggleBit im StatusRegister setzen
spiwrite(0x1C9000);

// DCDC-Register
spiwrite(0x1F6034); // (internal 150kOhm Resistor, clock 90°, 410kHz, 
23V max. VBoost)

// MainControlRegister
spiwrite(0x1C2000); // DAC_A (POC normal, STATREAD disable, WATCHDOG 
disable, ShortCircuitLimit = 16mA, OUTEN_ALL disable, DCDCD_ALL disable)

// DACControlRegister (output disables)
spiwrite(0x1C4115); // DAC_A (INT_ENABLE, Channel not cleared, output 
disables, internal resitor, DCDC power on, overrange disabled, 0...20mA)

// Analog = D * (M + 1) / 2^16 + C - 2^15

// M = Gain
// C = Offset
// D = Data

// 0.001A = D * (M+1)/2^16  --> M = 0 --> Feinste Aufloesung
// D = 0.001 * 2^16 / 1
// D = 65 = 0x41

// DACGainRegister (Gain = 1)
spiwrite(0x080000); // DAC_A

// DACOffsetRegister (Offset = 2^15)
spiwrite(0x108000); // DAC_A

// DACDataRegister
spiwrite(0x000041); // DAC_A

lcd_delay_us(200);
lcd_delay_us(200);

// DACControlRegister (output enables)
spiwrite(0x1C4155); // DAC_A (INT_ENABLE, Channel not cleared, output 
enables, internal resitor, DCDC power on, overrange disabled, 0...20mA)

while(1)
{
  spiread(0x980000);
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren