Hallo zusammen, hat jemand schon mal den BU2505 / BU2506 10 bit DAC von ROHM angesteuert? Wie muss man ihn am besten ansteuern? Datenblatt: https://fscdn.rohm.com/en/products/databook/datasheet/ic/data_converter/dac/bu2506fv-e.pdf Danke und Gruß EWiebe
EWiebe schrieb: > Wie muss man ihn am besten ansteuern? Das Ding nutzt eine SPI-Schnittstelle, Betriebsart 3 (Ruhepegel Clk ist High, Datenübernahme mit steigender Flanke auf Clk).
So habe ich ihn angesteuert. Funktioniert prima! Der DAC gefällt mir ! Den werde ich auf jeden Fall bei Gelegenheit nochmal einsetzen!
1 | //DI, CLK, LD,
|
2 | #define DAC_RESET PC2
|
3 | #define DAC_LD PC0
|
4 | #define DAC_CLK PC1
|
5 | #define DAC_DI PC3
|
6 | |
7 | |
8 | void WriteDAC_Data(UINT8 addr, UINT16 val) |
9 | {
|
10 | UINT8 i = 0; |
11 | UINT8 curr_addr = addr; |
12 | UINT16 curr_val = val; |
13 | |
14 | DAC_LD = 0; |
15 | DAC_CLK = 0; |
16 | DAC_DI = 0; |
17 | |
18 | |
19 | //für Reset einmal runterziehen
|
20 | DAC_RESET = 1; |
21 | Delay100us(); |
22 | DAC_RESET = 0; |
23 | Delay100us(); |
24 | DAC_RESET = 1; |
25 | Delay100us(); |
26 | |
27 | |
28 | //write 4 bit of addr
|
29 | for (i = 0; i < 4; i++) { |
30 | DAC_CLK = 0; |
31 | DAC_DI = curr_addr & 1; |
32 | Delay100us(); |
33 | DAC_CLK = 1; |
34 | Delay100us(); |
35 | curr_addr >>= 1; |
36 | }
|
37 | |
38 | |
39 | //write 10 bit of data
|
40 | for (i = 0; i < 10; i++) { |
41 | DAC_CLK = 0; |
42 | DAC_DI = curr_val & 1; |
43 | Delay100us(); |
44 | DAC_CLK = 1; |
45 | Delay100us(); |
46 | curr_val >>= 1; |
47 | }
|
48 | |
49 | |
50 | |
51 | //Load data
|
52 | DAC_LD = 1; |
53 | Delay100us(); |
54 | DAC_LD = 0; |
55 | Delay100us(); |
56 | }
|
Gruß EWiebe
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.