Arduino: Skicka data via Serial Monitor, men med SPI

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Arduino: Skicka data via Serial Monitor, men med SPI

Inlägg av Magnus_K »

Det står helt still. Och då menar jag verkligen helt still.

Jag har en CC1101-radiomodul (datablad) som ska programmeras genom SPI.
Att skicka data genom TX/RX är ju inget problem, men hur i hela friden kan jag skicka data från min dator till modulen, via en Arduino Nano?

Har sökt en del på att konvertera TTL till SPI men tycker inte jag finner något matnyttigt.

Det är inte heller några problem att kladda ihop en kodsnutt och skickar SPI-data från Arduinon till modulen, men då blir det "hårdkodad" data och ingen möjlighet för mig att skicka olika kommandon i följd.

Nej, man kanske ska köpa in lite moduler som man kan programmera med AT-kommandon istället?
CC1101.jpg
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Icecap
Inlägg: 26139
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Arduino: Skicka data via Serial Monitor, men med SPI

Inlägg av Icecap »

Om du menar att du ska kunde göra det byte för byte kan det väl knappast vara något större problem.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Arduino: Skicka data via Serial Monitor, men med SPI

Inlägg av Magnus_K »

Går det få till på något snyggt sätt att (via serial monitorn) kunna skriva flera bytes i följd, som tex: 0xff;0x02;0x44?
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Arduino: Skicka data via Serial Monitor, men med SPI

Inlägg av Magnus_K »

Äsch, vi skiter i det här.
Har kollat på TI:s hjälpmedel SmartRF Studio och fattar inte ett skit. Det blir bättre att byta ut modulerna mot något enklare, och som kan programmeras via AT-kommandon.
Användarvisningsbild
Icecap
Inlägg: 26139
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Arduino: Skicka data via Serial Monitor, men med SPI

Inlägg av Icecap »

Det borde det väl.

En byte tas emot på UART och skickas vidare som SPI.
Samtidig tas det mot en byte från SPI'n och skickas vidare på UART'en.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45270
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Arduino: Skicka data via Serial Monitor, men med SPI

Inlägg av TomasL »

Du behöver nånting som omvandlar från seriell COM-Port/USB till SPI, antingen fixar du det i en Arduino, som du själv föreslog eller också så köper du en adapter.
Finns en hel del där ute.
Vill minnas att det finns ett Open Source projekt, ett litet kort med en massa skojjiga funktioner, bl.a. SPI, I2C mm och USB mot datorn
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Re: Arduino: Skicka data via Serial Monitor, men med SPI

Inlägg av Micke_s »

Enkel variant är att köra spi:n kontinuerligt, har inte någon sida något att säga skicka 0x00.

Tar arduinon/cc chippet emot 0x00 så struntar den i tecknet...
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45270
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Arduino: Skicka data via Serial Monitor, men med SPI

Inlägg av TomasL »

BusPirate var det jag tänkte på
http://dangerousprototypes.com/docs/Bus_Pirate
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Arduino: Skicka data via Serial Monitor, men med SPI

Inlägg av Magnus_K »

En sån där skulle man ju ha... Får nog beställa en sån. Alltid bra att ha i lådan.

Kom på en sak jag ska prova innan jag ger upp. Istället för att skriva till ett register i taget så ska jag prova att skriva till samtliga register i en följd genom att "hårdkoda".
Den här idén med att skriva till enstaka register är just under test-stadiet. När man väl fått till radiokommunikationen så kommer SPI:n skötas själv mellan MCU och radiomodul.

Återkommer i ärendet.
Användarvisningsbild
maDa
Inlägg: 4076
Blev medlem: 11 november 2005, 22:13:16
Ort: Malmö
Kontakt:

Re: Arduino: Skicka data via Serial Monitor, men med SPI

Inlägg av maDa »

SPI och Seriell TTL är ju inte riktigt samma sak. Men visst borde det gå att göra någon sorts "brygga" (jag har själv gjort en RF433->Ethernet/UDP lösning)

Alltså, något i stil med:

Kod: Markera allt

while(Serial.available()){
  char b = Serial.read();
  cc1101.sendData(b);
}

while(cc1101.available()){
  char b = cc1101.read();
  Serial.write(b);
}
Exakt hur du får göra med din radio modul får nog läsa om, har ingen erfarenhet om CC1101. Men jag skulle tro det är bättre om du skickar hela rader (t.ex använd Serial.readBytesUntil("\n"))

https://www.arduino.cc/en/reference/SPI
http://www.electrodragon.com/w/CC1101
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Arduino: Skicka data via Serial Monitor, men med SPI

Inlägg av Magnus_K »

Tack för ditt svar maDa!

Jag har påbörjat lite försök med något liknande den kod som du skrivit.
Kommer ha lite tid att ägna åt det här under dom kommande dagarna så ska testa lite till innan det kommer något konkret.

Återkommer i ärendet!
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45270
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Arduino: Skicka data via Serial Monitor, men med SPI

Inlägg av TomasL »

Problemet med att använda en serieport är ju att den är asynkron, medans spi är synkron.
Utan speciella drivrutiner i din PC kan du inte generera den klocksignal som behövs, dessutom eftersom i en PC är seriekommunikationen, speciellt när den sker via USB pollad, så det är i princip omöjligt att få det fungera.

Du behöver alltså ha någon form av enhet mellan, antingen det jag föreslog eller något egenkonstruerat, typ arduino eller liknande med lämplig kod.

Beträffande TTL, så är det ju bara spänningsnivåerna som används.


edit: OOPS :oops:
Senast redigerad av TomasL 7 mars 2017, 23:56:14, redigerad totalt 1 gång.
danielr112
Inlägg: 8051
Blev medlem: 18 januari 2009, 00:48:24
Ort: Alvesta, Småland

Re: Arduino: Skicka data via Serial Monitor, men med SPI

Inlägg av danielr112 »

Tomas:
ju att den är asynkron, medans spi är asynkron.
Blev fel va?
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Arduino: Skicka data via Serial Monitor, men med SPI

Inlägg av Magnus_K »

Vet inte om jag hänger med riktigt men det är ju det här jag försöker med, alltså ha en enhet som "buffer".

Jag ska försöka hålla det här så enkelt som möjligt då det endast är för att skriva till registren under labbning. När radion sen är igång så är det bara SPI mellan MCU och Radion "som vanligt".

Eventuellt byter jag Arduinon till min Pickit2:a pga spänningsnivåerna. CC1101:an är en 3V-enhet och Arduino-MCU:n är en 5V:are så SPI-nivåerna är för höga för CC1101:an.
Om jag använder Pickit2:an med tillhörande labbkort så kan jag ställa ner matningen från programmeraren till 3V (vilket också är tillräckligt för labbkortets MCU) så slipper jag tänka på den biten.
Den kan jag också använda Pickit2:ans "Serial Monitor" på precis samma sätt som Arduinons.

Oavsett hur jag gör så ska jag bara klura ut hur jag "buffrar" inkommande/utgående data på seriesnöret. Måste läsa lite mer först.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 45270
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Arduino: Skicka data via Serial Monitor, men med SPI

Inlägg av TomasL »

Du får mellanlagra det i din "mellan-CPU" eller också sätter du hastigheterna lika.

Det beror ju på hur många bytes du skickar på SPI-linan i stöten och vilken hastighet du kör den med
Skriv svar