Cerco Mentore protocollo SPI

Cerco qualcuno che mi faccia capire come devo fare il programma con questo chip HMC681 che usa il protocollo SPI , ho capito il principio di come funziona il protocollo SPI ma solo il principio !! ho cercato in rete un esempio base , quello che mi serve e che devo scrivere all'interno del chip HMC681.

Grazie !!

Google?

Grazie di avermi risposto Uwefed

Oltre a Google ho cercato anche qui nel Forum un programma che mi porti a capire dove cavolo sbaglio , ho fatto varie prove ma non ho ottenuto quello che sto cercando di fare , ho cercato di adattare questo:

*/

#include "SPI.h" // Libreria SPI
int ss=10; // Assegno il pin 10 come SS

void setup()
{
pinMode(ss, OUTPUT); imposto il pin ss in OUTPUT
SPI.begin(); //abilito il SPI bus
SPI.setBitOrder(MSBFIRST); // definisco dove iniziare la trasmissione dei dati

}

void loop()
{
digitalWrite(ss, LOW); // pongo il pin SS basso
SPI.transfer(0); // inizio trasmettere i bit
SPI.transfer(999); // valore da trasmettere
digitalWrite (ss, HIGH );
}

questo dovrebbe scrivere nella memoria del HMC681 il valore da me scelto per variare il quadagno in uscita , ma verificando questo dato l'uscita della stesso non varia ..

Sono molto deluso perche non riesco capire dove sbaglio nella procedura !! Spero di essere riuscito a spiegarmi !!

Grazie

Il codice DEVI racchiuderlo nei tag code, vedi sezione 7 del regolamento, spiega bene come fare ( pulsante </> ).
Altrimenti parte del codice può essere visualizzata male o mancare perchè interpretato come attributo del testo stesso.

Magari un link al prodotto che vuoi usare. In internet non lo trovo.

Nid69ita

Non riuscivo capire come fare , poi ci provo !!

Vi allego la pagina del HMC681 del Serial Control Interface ..

 */

#include "SPI.h"  // Libreria SPI
int ss=10;  // Assegno il pin 10 come SS


void setup()
{
 pinMode(ss, OUTPUT); imposto il pin ss in OUTPUT
 SPI.begin();  //abilito il SPI bus
 SPI.setBitOrder(MSBFIRST); // definisco dove iniziare la trasmissione dei dati
 
}

void loop()
{
 digitalWrite(ss, LOW); // pongo il pin SS basso
 SPI.transfer(0); // inizio trasmettere i bit
 SPI.transfer(999); // valore da trasmettere
 digitalWrite (ss, HIGH );
}

HMC681A, è un amplificatore RF con gain variabile tramite bus seriale sincrono compatibile SPI.
La SPI.setBitOrder() è deprecata, al suo posto va usata la SPISettings e deve essere indicato il modo SPI da usare, sono quattro e se si mette quello errato il bus non dialoga.
Nel caso specifico la spi.transfer() non va bene perché lavora sul singolo byte, valori tra 0-255, si deve usare la spi.transfer16() che lavora con una word di 2 byte.

:slight_smile: Grazie Astrobeed

Provo fare come mi hai indicato , speriamo bene !!!

Ho provato fare le modifiche ma nulla , anzi mi da dei errori nella compilazione su SPISettings e sul spi.transfer16() , sicuramente e come utilizzo lo sbaglio !! :o

Posta il codice completo, così possiamo vedere dove si trova l'errore.

#include "SPI.h"  // Libreria SPI
int ss=10;  // Assegno il pin 10 come SS


void setup()
{
 pinMode(ss, OUTPUT); // imposto il pin ss in OUTPUT
 SPI.begin();  //abilito il SPI bus
 SPI.beginTransaction(SPISettings(14000000, MSBFIRST, SPI_MODE0)); // definisco il modo0 per sincronizzare la trasmissione 
 
}

void loop()
{
 digitalWrite(ss, LOW); // pongo il pin SS basso
 SPI.transfer(8); // inizio trasmettere i bit
  SPI.transfer(0); // send value (0~255)
 digitalWrite (ss, HIGH );
}

Buongiorno

Una Caporeto con sto SPI !! non funziona nulla !! non riesco capire se riceve o nò i comandi che invio !!

Ragazzi la vecchiaia fa brutti scherzi !!! :o :o :o

Il programma postato funziona e solamente che ho invertito l'ingresso con l'uscita perchè e indicato in Cinese !!

sembra che ora funzioni tutto !! faccio le prove e poi vi dico !!

Grazie !! :slight_smile: :slight_smile: :slight_smile:

bazzo54:
perchè e indicato in Cinese !!

:o

PaoloP:
:o

Allego l'immagine , poi il venditore a messo l'etichetta al rovescio rispetto alla immagine che ho allegato !!

HMC681_foto.jpg

Allego foto di quello che ho fatto le prove !!