Hallo, ich hätte eine Frage bezüglich der Ansteuerung des Temperatursensors EMC1428 via I2C mit einem STM32 Microcontrollers. Und zwar verwende ich zu Konfiguration der einzelnen Pins CubeMx und somit auch die HAL Bibliotheque. Ich wollte nun bei euch um einen Denkanstoß bitten wie ich diese Kommunikation in C realisieren kann, da ich ein Frischling auf dem Gebiet des STM32 bin. Ich habe bereits den I2C richtig konfiguriert und die Device Adresse für den EMC1428 Chip (0x92) ermittelt. Vielleicht kann mir einer von euch weiterhelfen wie ich am besten die Temperaturdaten vom Sensor auslese und zugleich speichere, damit ich sie im nächsten Zug dann Umrechnen kann um eine temperaturabhängige Lüftersteuerung zu verwirklichen. Tipps und Tricks würden mir sehr weiterhelfen :) Vielen Dank schonmal für eure Hilfe. Viele Grüße, Dieter
Hallo Chris ähh Dieter ;-) Da hast Du dir einen Brummer zum Anfang ausgesucht. Ist gar nicht so einfach etwas dazu zu finden, aber hier ist etwas: https://github.com/Azure/sonic-sdi-device-drivers/blob/master/src/sdi_emc142x.c https://github.com/Azure/sonic-sdi-device-drivers/blob/master/sonic/sdi_emc142x_reg.h Dazu noch die anderen Dateien in den Verzeichnissen. Mehr kann ich dazu nicht sagen da ich den Chip nicht hier habe.
Ist eigentlich ganz simple... Du brauchst in etwas solche Funktionen zum senden und empfangen
1 | void pcm1774_sendByte(unsigned char address, unsigned char data) |
2 | {
|
3 | uint8_t data2[2]; |
4 | data2[0] = address; |
5 | data2[1] = data; |
6 | |
7 | HAL_I2C_Master_Transmit(&hi2c1, PCM_1774_ADDRESS, (uint8_t *)data2, 2, 100); |
8 | |
9 | |
10 | |
11 | }
|
12 | |
13 | uint8_t pcm1774_readByte(uint8_t regValue) |
14 | {
|
15 | uint8_t RxBuffer[1]; |
16 | HAL_I2C_Mem_Read(&hi2c1, PCM_1774_ADDRESS, regValue, I2C_MEMADD_SIZE_8BIT, RxBuffer, 1, 10000); |
17 | return RxBuffer[0]; |
18 | }
|
hp-freund schrieb: > Hallo Chris ähh Dieter ;-) > > Da hast Du dir einen Brummer zum Anfang ausgesucht. > > Ist gar nicht so einfach etwas dazu zu finden, aber hier ist etwas: > https://github.com/Azure/sonic-sdi-device-drivers/... > https://github.com/Azure/sonic-sdi-device-drivers/... > > Dazu noch die anderen Dateien in den Verzeichnissen. > > Mehr kann ich dazu nicht sagen da ich den Chip nicht hier habe. Ist ganz praktisch, wenn man zwei Vornamen besitzt :D Ich danke dir für deine schnelle Antwort und vor allem für deine Hilfe :) Viele Grüße
Bülent C. schrieb: > Ist eigentlich ganz simple... > Du brauchst in etwas solche Funktionen zum senden und empfangenvoid > pcm1774_sendByte(unsigned char address, unsigned char data) > { > uint8_t data2[2]; > data2[0] = address; > data2[1] = data; > > HAL_I2C_Master_Transmit(&hi2c1, PCM_1774_ADDRESS, (uint8_t *)data2, 2, > 100); > > > > } > > uint8_t pcm1774_readByte(uint8_t regValue) > { > uint8_t RxBuffer[1]; > HAL_I2C_Mem_Read(&hi2c1, PCM_1774_ADDRESS, regValue, > I2C_MEMADD_SIZE_8BIT, RxBuffer, 1, 10000); > return RxBuffer[0]; > } Ich danke dir für deine Hilfe und für den Denkanstoß :) Viele Grüße
Hallo, ich hätte noch eine Frage und zwar funktioniert bei mir jetzt die Kommunikation mit dem EMC1428 einwandfrei.(noch einmal vielen Dank für den Denkanstoß) Doch ich möchte nun eine Funktion schreiben, die verschiedene vorgegebene Register des Chips nacheinander ausliest und mir jeweils den Wert zurückgibt, damit ich z.B. mehrere Temperaturen auslesen und vergleichen kann oder falls ich später noch weitere Temperatursensoren an dem Chip anbringe, würde mir so eine Funktion die Code Erweiterung einfacher machen. Da ich die neuen Register dann nur als #define hinzufügen könnte und sonst nichts verändern müsste. Hätte von euch jemand einen Tipp wie ich das am geschicktesten angehen kann bzw. hat jemand schon Erfahrung mit dem Schreiben einer solchen Funktion ? Vielen Dank schon mal für eure Hilfe :) Gruß, Dieter
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.