Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Configuration I2C sur MSP430



  1. #1
    carl17

    Configuration I2C sur MSP430


    ------

    Bonjour tout le monde.

    Voilà je travail sur un projet qui utilise un MSP430 pour discuter par I2C avec un autre composant. C'est la première fois que j'utilise ce type de microcontrôlleur et là, je suis en train de me renseigner sur la configuration du bus et je bloque sur un point.

    Tout d'abord les microcontrôlleurs de type MSP430 n'ont pas un bus I2C isolé. J'entend par là qu'il est jouxté avec l'un des deux USART du composant (l'USART0 pour être plus précis). En regardant dans l'user guide des MSP430 (le datasheet étant pauvre sur le sujet) j'ai remarqué qu'il y a deux registres différents qui portent le même nom mais qui n'ont pas la même structure. Le registre U0CTL qui est utiliser pour configurer l'I2C, et le registre UxCTL pour l'USART. D'après mon expérience le 'x' du registre doit être remplacer par le numéro de l'USART que l'on configure. Hors, l'I2C ne peut être utilisé qu'avec l'USART0. Donc, dans le code, UxCTL deviendra U0CTL. Est-ce que ça ne va pas créer des conflits lors de la configuration des registres?

    Merci pour les réponses & aides.

    A bientôt ^^

    -----

  2. Publicité
  3. #2
    carl17

    Re : Configuration I2C sur MSP430

    Rebonjour,

    J'up ce topic car j'ai vraiment besoin d'aide. Je suis bloqué sur mon projet à cause de ça donc si quelqu'un s'y connais en MSP430 ^^

    Si vous avez aussi un lien qui serait suceptible de m'aider j'accèpte volontier.

    Merci et a+

  4. #3
    frank9321

    Re : Configuration I2C sur MSP430

    Il me semble qu'il y a pas mal d'exemples de mise en place de l'I²C sur le pack d'exemples fourni par TI pour le MSP430.
    Mais encore, tu ne dis pas en quel langage tu souhaites programmer. ASM ? C ?
    Limite, si tu veux que faire ca, tu as toujous la soulution crade à base de bit-banging et de delays homemade qui marchera parfaitement.

  5. #4
    carl17

    Re : Configuration I2C sur MSP430

    Salut,

    Pour commencer je travail en C. Et je dois dépanner un programme qui existe déjà mais qui à un problème avec l'i2c justement. J'ai d'abord chercher à savoir si c'était un problème de configuration et en ayant trouvé des exemples qui n'ont rien changer à mon problème je me suis demandé si le problème pouvaient venir de ces deux registres mais après avoir effectuées des mesures sur oscilloscope je doute que le problème vienne de là.

    Depuis ce matin j'essaie de trouver ou est-ce que ça plante sans trouver la solution pour autant.

    Sinon pour la solution "crade" si vraiment je n'arrive pas à trouver d'ou viens le problème c'est ce que je vais faire. En tout cas merci pour ta réponse ^^

    a+

  6. #5
    Genjixkan

    Re : Configuration I2C sur MSP430

    Bonjour,

    TI donne offre une librairie pour l'i2c dans msp430ware si besoin. Et plein d'exemples... ( http://www.ti.com/tool/msp430ware )

    Va falloir de toute façon que tu te plonge dans le datasheet pour connaître quel registre/pin tu dois modifier.

    Je te donne ci-dessous un bout de code fonctionnel que j'ai utilisé pour le msp430G2403...

    P1SEL |= BIT6 + BIT7; /* Assign I2C pins to USCI_B0 */
    P1SEL2 |= BIT6 + BIT7; /* Assign I2C pins to USCI_B0 */
    UCB0CTL1 = UCSWRST; /* Enable SW reset */
    UCB0CTL0 = UCMST + UCMODE_3 + UCSYNC; /* I2C Master, synchronous mode */
    UCB0CTL1 = UCSSEL_2 + UCSWRST; /* Use SMCLK */
    UCB0BR0 = 10; /* fSCL = SMCLK/12 = ~100kHz */
    UCB0BR1 = 0;
    UCB0I2CSA = 0xE0; /* Set slave address */
    UCB0CTL1 &= ~UCSWRST; /* Clear SW reset, resume operation */
    Après, quand tu veux envoyer un truc, tu remplis le buffer ( UCB0TXBUF ) puis t'active l'interuption...

    UCB0CTL1 |= UCTR + UCTXSTT; /* I2C TX, start condition */
    IE2 |= UCB0TXIE; /* Enable TX ready interrupt */
    __bis_SR_register(GIE); /* IE */
    Bon courage

  7. A voir en vidéo sur Futura
  8. #6
    carl17

    Re : Configuration I2C sur MSP430

    Salut Genjixkan et merci pour ton aide.

    Je vais vous exposer le problème que j'ai vu que je n'arrive pas à comprendre le pourquoi du comment.

    J'utilise un MSP430F169IPM qui doit discuter avec un AD7150. La lecture par I2C ne pause plus de problème (pour le moment). Quant à l'écriture, le convertation s'arrête touojours au même endroit.

    Voici le code de la fonction d'envoie.
    CodeI2C_Ecriture.JPG

    Le programme bloque systématique à cette endroit. La condition de stop n'est jamais considéré comme terminé. Il arrive tout de même que, certaines fois, le programme l'exécute correctement mais c'est assez rare. Et s'il ne s'arrête pas là c'est sur l'une des deux lignes précédentes. J'ai beau chercher (et j'ai trouvé deux trois "solutions") rien n'y fait. Si c'est pas l'un c'est l'autre.

    Si quelqu'un à une solution succeptible de m'aider, voir même un idée sur pourquoi il fait ça je suis prenneur.

    Merci et à bientôt ^^
    Dernière modification par carl17 ; 23/07/2012 à 16h27.

  9. Publicité

Sur le même thème :

Discussions similaires

  1. Compatibilité I2C & I2C Fast Mode
    Par JeromeObs dans le forum Électronique
    Réponses: 3
    Dernier message: 20/06/2012, 14h48
  2. Msp430
    Par Robs68 dans le forum Électronique
    Réponses: 13
    Dernier message: 26/05/2012, 12h56
  3. FAT16 sur MSP430 et carte SD
    Par Toufinet dans le forum Électronique
    Réponses: 1
    Dernier message: 01/11/2008, 21h57
  4. Liaison I2C MSP430 - AT91 ATMEL
    Par lianoos dans le forum Électronique
    Réponses: 1
    Dernier message: 06/06/2007, 12h50
  5. Programme une horloge sur un MSP430
    Par sebio67 dans le forum Électronique
    Réponses: 1
    Dernier message: 09/02/2007, 16h08
Découvrez nos comparatifs produits sur l'informatique et les technologies.