Forum: Mikrocontroller und Digitale Elektronik BHI160b driver porting guide


von Walt N. (belayason)


Lesenswert?

Guten Morgen Leute!

Ich habe mir das BHI160b Shuttle Board bestellt um die Lagedaten 
auszulesen. Den Treiber der von Bosch angeboten wird gibt es 
https://github.com/BoschSensortec/BHy1_driver_and_MCU_solution . Ich bin 
nun dabei den Treiber auf meinen STM32L053R8 anzupassen. Hierfür gibt es 
einen MCU driver Porting guide, der Schritt für Schritt erklärt was 
alles angepasst werden muss um den Sensor zu betreiben. Zu beginn habe 
ich  folgende Zeilen aus dem File bhy_support.c entfernt.
1
#include "FreeRTOS.h"
2
#include "task.h"
3
extern int8_t sensor_i2c_write(uint8_t addr, uint8_t reg, uint8_t *p_buf, uint16_t size);
4
extern int8_t sensor_i2c_read(uint8_t addr, uint8_t reg, uint8_t *p_buf, uint16_t size);
5
extern void trace_log(const char *fmt, ...);

Diese sind ATMEL spezifische Befehle die für mit meinem µC nicht 
kompatibel sind. Desweiteren wird im porting guide noch erwähnt im File 
bhy_support.h die Zeile
1
twi.h
 zu entfernen da diese library auch ATMEL spezifisch ist.
Nach einem Rebuild werden folgende Fehler angezeigt:
1
..\Drivers\BHI160b_driver\inc\bhy_uc_driver_types.h(252): error: #20: identifier "uint8_t" is undefined           uint8_t sensor_id;

Diese Fehlermeldung wird im porting guide erwähnt und gibt als Lösung an 
im File bhy.h die folgenden fixed-width types zu definieren:
1
s8, s16, s32, u8, u16, u32
Ich weiß nur nicht wie ich die nun definieren soll, in diesem File gibt 
es schon definierte Datentypen nur weiß ich nicht mit welchem #define 
die richtigen aktivieren kann...

Zusätzlich kommt noch die I2C Verbindung, die ich auf dem STM32 mit der 
HAL library umsetzten möchte. Verlangt wird das im File bhy_support.c 
die Funktionen sensor_i2c_write() und sensor_i2c_read() erstellt werden. 
Der porting guide empfiehlt, dass die Reihenfolge der Parameter und der 
Rückgabewert die gleichen sind, was mir auch als sinnvoll erscheint. 
Gibt es da schon eine fertige Funktion in HAL die mir diese zwei 
Funktionen ausführt? Wie gehe ich am besten Schritt für Schritt vor um 
diese Verbindung zum Sensor herzustellen?

Vielen dank schon im vorraus für eure Ratschläge!

von Jim M. (turboj)


Lesenswert?

Walt N. schrieb:
> error: #20: identifier "uint8_t" is undefined           uint8_t
> sensor_id;

Dann fehlt einfach nur ein
1
#include <stdint.h>

Das sollte bei jedem ARM-kompatiblem C Compiler dabei sein.

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
Noch kein Account? Hier anmelden.