Hallo everybody, Ich wollte den MCP4725 12 Bit DAC Chip verwenden, damit ich analogen Spnnungsbereich von 0-5 V erzeugen kann.Nun habe ich 2 Probleme. Mein Ansatz war wie folgt: zuerst habe ich die Kommunikation mit dieser Funktion geprüft. Die Led hat auch geblinkt. Dann habe ich eine Variable definiert, deren Wert von 0-4954 (12bit DAC). zur Zeit ist mir nicht so wichtig, wie sich die Variable verändern lässt. Dann müdas Datenblatt des MCP4725 3 Bytes (beim normalen Mode) geschickt werden über 12c. Das erste Problem ist, wenn ich die Date in Bitschreibweise schreibe, lässt sich der Code kompilieren, jedoch nicht hochladen. Aber wenn ich diese im Hex-Format schreibe klappt es ja. z.B. : if(HAL_I2C_IsDeviceReady(&hi2c1,0b11000100, 2,10)==HAL_OK){ //0xC4 slave adress in HEX HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_13); HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_14); HAL_Delay(50); } 2.Problem ist, dass der Code unten nicht funktioniert. Ich habe nur MSB und LSB von Daten geshiftet: i2c_send_data[0]=0x40; // Adresse von Register in den zu schreibende // DAC 12 bit Register i2c_send_data[1]=0x00>>val; // bits 7-0 i2c_send_data[2]=0x00<<val; // bits 7-4 // slave adress second para., HAL_I2C_Master_Transmit(&hi2c1,0xC4,i2c_send_data,3,10); } und oben natürlich die Variablen definiert : uint8_t i2c_send_data[3]; uint16_t val=2000; Kann jemand bitte helfen? Gruß
Wie kommst du auf die 4 in der Adresse C4? 4 entspricht A1. Hast du den Chip ab Werk programmieren lassen?
Über das zerlegen der Variablen solltest du auch noch einmal nachdenken. Mein Vorschlag: i2c_send_data[1] = (val & 0x00FF); // bits 7-0 i2c_send_data[2] = ((val & 0xFF00) >> 8); // bits 11-8 Und das nächste mal die c Datei auch als solche anhängen, denn wir mögen es schön bunt.
pegel schrieb: > Wie kommst du auf die 4 in der Adresse C4? Ich vermute du hast den MCP4725A1, richtig?
pegel schrieb: > Wie kommst du auf die 4 in der Adresse C4? die Adresse ist zwar 0b1100001==0x61. Aber die HAL-Funktion inkludiert auch R/W bit. deswegen ist 0b1100001(0 master write)=0xC2. sorry 0xC4 habe ich zuletzt geändert. pegel schrieb: > Und das nächste mal die c Datei auch als solche anhängen, denn wir mögen > es schön bunt. das war mir lieber bunt. aber weiß nicht wie pegel schrieb: > i2c_send_data[1] = (val & 0x00FF); // bits 7-0 > i2c_send_data[2] = ((val & 0xFF00) >> 8); // bits 11-8 bin leider nicht so vertraut mit der Bitmaskierung. pegel schrieb: > Ich vermute du hast den MCP4725A1, richtig? https://cdn-shop.adafruit.com/datasheets/mcp4725.pdf das, was ich habe. LG
entschuldigung aber 0xC4 ist schon richtig. Die die Adresse ist zwar 0b1100001==0x61, jedoch muss das nach links geshiftet werden. und dann 0 bit addieret für Master schreibt also 0b1100 0100(0 master write)=0xC4.
Es gibt verschiedene Adressen Varianten des IC. Siehe Seite 47 im Datenblatt. Deshalb der Zusatz A0 bis A3. Ohne Angabe bekommt man den A0 mit Adresse 0xC0, deshalb muss deiner der A1 sein. Für die Buntheit einfach beim hochladen die Endung .c lassen und nicht durch .txt ersetzen.
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.