INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
CC1101 SPI
17.09.2015, 09:01
Beitrag #1
CC1101 SPI
Hallo
Ich habe eine Frage zur SPI Communication mit dem Arduino und einem weitern Bauteil, in diesem Fall einem CC1101 von Texas Instruments.

Und zwar muss ich um in die REG zu bearbeiten via SPI erst die Adresse, und dann das Value übermitteln. Dafür habe ich diesen Code geschrieben.

Code:
#include <SPI.h>

void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
// **************************************** PINS **************************************
int SCK_PIN = 13;
int MISO_PIN = 12;
int MOSI_PIN = 11;
int CSn_PIN = 10;
int GDO0 = 2;
int GDO2 = 9;

//***************************************** INIT **********************************

pinMode(SCK_PIN, OUTPUT);
pinMode(MOSI_PIN, OUTPUT);
pinMode(MISO_PIN, INPUT);
pinMode(CSn_PIN, OUTPUT);

SPI.begin();
SPI.setBitOrder(MSBFIRST); // SET UP SPI most segnificant bit first

Serial.println("SPI Init");

pinMode(GDO0, INPUT);
pinMode(GDO2, INPUT);

digitalWrite(CSn_PIN, HIGH);
digitalWrite(SCK_PIN, HIGH);
digitalWrite(MOSI_PIN, LOW);

//************************************** INIT RESET **********************************

digitalWrite(CSn_PIN, LOW);
delay(1);
digitalWrite(CSn_PIN, HIGH);
delay(1);
digitalWrite(CSn_PIN, LOW);
while(digitalRead(MISO_PIN));
Serial.println("MISO LOW");
Serial.println(digitalRead(MISO_PIN));
SPI.transfer(0x30); // RESET String
Serial.println(digitalRead(MISO_PIN));
while(digitalRead(MISO_PIN));
Serial.println(digitalRead(MISO_PIN));
Serial.println("RESET DONE - INIT REG CONFIG");


//***************************************WRITE TO REG************************************




digitalWrite(CSn_PIN, LOW);

Serial.println(digitalRead(MISO_PIN));
while(digitalRead(MISO_PIN));
Serial.println(digitalRead(MISO_PIN));

Serial.println("WRITE REG INIT");


SPI.transfer(0x0D); // Adress
SPI.transfer(0x10); // Value

delay(10);
digitalWrite(CSn_PIN, HIGH);
Serial.println("SPI WRITEN TO CONFIG - READ FILE");


//***************************************READ REG****************************************
delay(100);

digitalWrite(CSn_PIN, LOW);

Serial.println(digitalRead(MISO_PIN));
while(digitalRead(MISO_PIN));
Serial.println(digitalRead(MISO_PIN));

SPI.transfer(0x0D);
byte value;
value=SPI.transfer(0x00);
digitalWrite(CSn_PIN, HIGH);

Serial.println(value, HEX);



}

void loop() {
  // put your main code here, to run repeatedly:
  
}

Macht das so Sinn? Ich glaube schaffe es den Chip zu resetten, da der MISO pin von 1 nach 0 wechselt. aber irgentwie schaffe eich es nicht in das REG zu schreiben, bzw es weider auszulesen.

Ich freu mich über jeglichen Vorschlag! Danke
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste