× MSP430, Microcontrollori 16 bit Ultra Low Power

MSP430F5438A interfacciato via I2C a Freescale MAG3110

11 Anni 2 Mesi fa - 11 Anni 2 Mesi fa #1 da guyverjack
Buongiorno a tutti gli utenti del forum, come da titolo, sto cercando di interfacciare una board exp5438 con un sensore magnetico MAG3110, (montato su una board preconfezionata MOD-MAG della olimex). Il sensore ha un interfaccia I2C standard, con indirizzo slave 0x0E, il micro è collegato attraverso l'uscita USCIB0. Non riesco a ottenere risposta dal sensore, non capisco se è il mio programma che non funziona, o il sensore. Allego il programma (che dovrebbe solo leggere il registro WHO_AM_I), se qualcuno ci capisce qualcosa mi può dare una mano? Probabilmente avrò fatto degli errori macroscopici ma non me ne rendo conto... Grazie! :cheer:




File allegato:

Nome del file: main1.c
Dimensione del file:2 KB





File allegato:

Nome del file: MAG31101.pdf
Dimensione del file:478 KB
Allegati:
Ultima Modifica 11 Anni 2 Mesi fa da guyverjack.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • guyverjack
  • Avatar di guyverjack
  • New Member
  • New Member
Di più
11 Anni 2 Mesi fa #2 da Mauro Laurenti
Risposta da Mauro Laurenti al topic MSP430F5438A interfacciato via I2C a Freescale MAG3110
Ciao,

ho dato un' occhiata veloce ma credo che il problema sia nel codice.
Non invii correttamente la sequenza dei byte per il sensore.

Il primo byte che viene inviato con start condition e' l'indirizzo.
Poi devi aspettare per ACK e successivamente scrivi in UCB0TXBUF

Se hai un oscilloscopio per controllare i dati sul buffer dovresti vedere cosa viene inviato.

Saluti,

Mauro
Ringraziano per il messaggio: guyverjack

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
11 Anni 2 Mesi fa #3 da guyverjack
Ciao Mauro, essendo la porta integrata nel micro, dovrebbe inviare lui l'indirizzo dello slave impostato, vero? Inoltre non mi pare che ci sia un interrupt per l'ACK, devo inserire un delay nel codice?

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • guyverjack
  • Avatar di guyverjack
  • New Member
  • New Member
Di più
11 Anni 2 Mesi fa #4 da Mauro Laurenti
Risposta da Mauro Laurenti al topic MSP430F5438A interfacciato via I2C a Freescale MAG3110
Ciao,

il segnale ACK viene generato dallo slave una volta che riceve la sequenza giusta.

Se hai un oscilloscopio la cosa piu' semplice e' vedere se i dati vengono posti in uscita dall'MSP430.
Ricontrolla le impostazioni dei pin dedicati al modulo.

Saluti,

Mauro
Ringraziano per il messaggio: guyverjack

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
11 Anni 1 Mese fa - 11 Anni 1 Mese fa #5 da guyverjack
Ho trovato una soluzione al problema e ora il mag sembra rispondere correttamente, allego i file necessari e i link ai siti dove ho preso parti di codice, spero che possano essere d'aiuto a qualcun altro che ha il mio stesso problema ;)

File allegato:

Nome del file: main.c
Dimensione del file:5 KB


File allegato:

Nome del file: HAL_UCS.c
Dimensione del file:4 KB


File allegato:

Nome del file: HAL_UCS.h
Dimensione del file:1 KB


File allegato:

Nome del file: MASTER.c
Dimensione del file:3 KB



www.cashdollar.org/2012/08/31/how-to-use...m-ucs-on-the-msp430/
e2e.ti.com/support/microcontrollers/msp430/f/166/t/211334.aspx
Ultima Modifica 11 Anni 1 Mese fa da guyverjack.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • guyverjack
  • Avatar di guyverjack
  • New Member
  • New Member
Di più
Moderatori: Mauro LaurentiMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login