Hallo, ich habe einen Sensor mit I2C Schnittstelle http://www.ti.com/lit/ds/symlink/hdc1050.pdf Ich nutzen einen STM32F410 Controller und habe die I2C-Initialisierung via STM32CubeMX vorgenommen! nun möchte ich von den Sensor lesen! dazu nutze ich die folgenden von der HAL-lib zur Verfügung gestellten Funktionen. --> HAL_I2C_Master_Transmit(&hi2c2, (uint16_t)I2C_adr<<1, &Send_buf, (uint16_t)8, (uint32_t)1000); HAL_I2C_Master_Receive(&hi2c2, (uint16_t)I2C_adr<<1, &Receive_buf, (uint16_t)8, (uint32_t)1000); Die Adresse des Sensors ist 0b1000000. Und wenn ich das Pointerregister auf 0xFE (siehe Seite 14) beschreibe, erhalte ich immer den Wert "84" (dezimal) als 0x54!!!! das entspricht ziemlich genau dem MSB von der Manufacturer ID setze ich das Pointerregister auf 0xFF, lese ich den Wert 16 (dezimal), also 0x10 auch wieder nur das MSB! Die Datenzeiger der beiden HAL Funktionen sind ja nur 8bit lang!!! "*pData"...... kann ich das LSB dann so nicht auslesen und muss mir die HAL Funktionen selbst umschreiben? sorry stehen ziemlich auf'm Schlauch! VG
"S"ehr "T"oller" "M"icrocontroller schrieb: > Die Datenzeiger der beiden HAL Funktionen sind ja nur 8bit lang!!! Es gibt keine 8bit-Pointer! Der Pointer zeigt allerdings auf 8bit-Variablen "S"ehr "T"oller" "M"icrocontroller schrieb: > (uint16_t)I2C_adr<<1, Was soll das? Die I2C-Adresse ist (inkl. R/W-Bit) 8bit lang und nicht 16!
Harry L. schrieb: > Was soll das? > Die I2C-Adresse ist (inkl. R/W-Bit) 8bit lang und nicht 16! Ich weiß auch nicht, warum die Funktionen so implementiert wurden? Ich hatte auch erwartet: 7bit Adresse + R/W-bit gefolgt vom Pointergister (auch 8Bit) dann 16 Bit Daten !!!
Jo der liest definitiv nur 1Byte an Daten! Also es scheint mir nicht die vollständige Implementierung von http://www.socialledge.com/sjsu/index.php?title=Embedded_System_I2C_Tutorial zu sein! Es liegen definitv alle Daten auf dem Bus... die schau ich mir auf dem Oszi an? welchen Vorteil bittet denn so eine HAL Library, wenn doch nicht drumherum komme, das teilweise doch noch selbst zu machen? oder hab ich die Aufgabe der Funktionen "HAL_I2C_Master_Receive" und HAL_I2C_Master_Transmit" falsch verstanden? VG
so hab mein "dämliches" Problem gefunden!!!! --> uint8_t *pData ist natürlich ein 8Bit-Pointer!!!!! aber der darf natürlich auch auf z.B. die Adresse einer z.B. uint32_t Variablen zeigen!!!!! ok also keine neue Implementierung ;) VG
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.