Arduino: Skicka data via Serial Monitor, men med SPI
- 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
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?
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?
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Arduino: Skicka data via Serial Monitor, men med SPI
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.
- 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
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?
- 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
Ä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.
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.
Re: Arduino: Skicka data via Serial Monitor, men med SPI
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.
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.
Re: Arduino: Skicka data via Serial Monitor, men med SPI
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
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
Re: Arduino: Skicka data via Serial Monitor, men med SPI
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...
Tar arduinon/cc chippet emot 0x00 så struntar den i tecknet...
Re: Arduino: Skicka data via Serial Monitor, men med SPI
BusPirate var det jag tänkte på
http://dangerousprototypes.com/docs/Bus_Pirate
http://dangerousprototypes.com/docs/Bus_Pirate
- 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
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.
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.
Re: Arduino: Skicka data via Serial Monitor, men med SPI
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:
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
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);
}
https://www.arduino.cc/en/reference/SPI
http://www.electrodragon.com/w/CC1101
- 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
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!
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!
Re: Arduino: Skicka data via Serial Monitor, men med SPI
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
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
Senast redigerad av TomasL 7 mars 2017, 23:56:14, redigerad totalt 1 gång.
-
- 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
Tomas:
Blev fel va?ju att den är asynkron, medans spi är asynkron.
- 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
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.
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.
Re: Arduino: Skicka data via Serial Monitor, men med SPI
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
Det beror ju på hur många bytes du skickar på SPI-linan i stöten och vilken hastighet du kör den med