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