Forum: Mikrocontroller und Digitale Elektronik MSP430 -> DRV2667


von Patrick K. (entro)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

momentan versuche ich eine Kommunikation zwischen einem MSP430g2553 
(Launchpad) uC und einem DRV2667 Haptic driver via I2C herzustellen.

Ich will am Ende ein Haptisches Feedback über ein Piezoelement bekommen, 
nachdem ich z.B. am an einem der GPIOs vom MSPg2553 einen Taster 
betätigt habe ( der z.B. eine LED ansteuert).
Der DRV2667 hat wahnsinnig viele Waveform Möglichkeiten. Ich brauche 
jedoch eigentlich nur eine.

In der Dokumentation des EVM-DRV2667 habe ich ein I2C Programm gefunden, 
womit man den MSP430g2553 als Master TX/RX hinbekommt. Jedoch finde ich 
das Programm wahnsinnig kompliziert nachzuvollziehen, da ich bisher nur 
mit den I2C Beispielprogrammen von TI gearbeitet habe.
Ich kann mir vorstellen das man das Programm wesentlich einfacher 
gestalten kann, wenn man nur eine Waveform will.
Leider fehlt mir echt die Erfahrung bei sowas und wollte hier mal 
nachfragen ob mir vielleicht einer mit dem Programm helfen könnte.

Im Anhang habe ich mal die "DRV2667EVM-CT Firmware" gepackt.
In den Infos steht nichts von Zip Dateien, wie wir das hier gehandhabt?
Sollte das nicht erlaubt sein, muss ich einige JPG Dateien erstellen :D

Selbst bei der Initialisierung verstehe ich ein paar Sachen nicht.
Sonst wurde UCB0BR0 = 12; angegeben um ungefähr auf die 100kHz zu 
kommen. Warum wird hier prescale angegeben? Bisher habe ich nirgendwo 
gefunden, wo prescale der Wert 12 zugewiesen wird. Das gleiche mit der 
"slave_address".
Vorher wird
static unsigned char slaveAddr = 0x59; zugewiesen, aber nirgendwo 
slave_adress . Oder sehe ich gerade den Wald vor ganzer Bäume nicht 
mehr? :D

Der folgende Ausschnitt ist aus der I2C.c Datei:
(Receive setup)

void TI_USCI_I2C_receiveinit(unsigned char slave_address,
                             unsigned char prescale){
  P1SEL |= SDA_PIN + SCL_PIN;                 // Assign I2C pins to 
USCI_B0
  P1SEL2 |= SDA_PIN + SCL_PIN;                // Assign I2C pins to 
USCI_B0
  UCB0CTL1 = UCSWRST;                         // Enable SW reset
  UCB0CTL0 = UCMST + UCMODE_3 + UCSYNC;       // I2C Master
  UCB0CTL1 = UCSSEL_2 + UCSWRST;              // Use SMCLK, keep SW 
reset
  UCB0BR0 = 12;          // prescale;         // Set pre-scaler???
  UCB0BR1 = 0;
  UCB0I2CSA = 0x59;    //slave_address;       // set slave address
  UCB0CTL1 &= ~UCSWRST;                 // Clear SW reset, resume 
operation
  UCB0I2CIE = UCNACKIE;
  IE2 = UCB0RXIE;                             // Enable RX interrupt
}




Danke und viele Grüße
Patrick

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.