loetstelle.net
Lötstelle Userforum
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Probleme mit dem Transceiver Cypres CYWUSB6934

 
Neues Thema eröffnen   Neue Antwort erstellen    loetstelle.net Foren-Übersicht -> HF Technik
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
ledi



Anmeldungsdatum: 10.08.2010
Beiträge: 3

BeitragVerfasst am: Di 10.Aug 2010 10:54:10    Titel: Probleme mit dem Transceiver Cypres CYWUSB6934 Bauteile finden Antworten mit Zitat

Da ich noch nie mit einem Transceiver gearbeitet habe, benötige ich hier bitte Eure Hilfe!

Für die Ansteuerung eines LED-Cubes per Funk möchte ich zwei 2,4GHz-Tranceiver von Cypress CYWUSB6934-48LTXC verwenden.
Auf der Sender- und Empfängerseite kommen zwei Mikrocontroller von Atmel (AT90PWM316) zum Einsatz.
Die Kommunikation wird über die SPI-Schnittstelle realisiert.

Ich möchte zum Test nur einen Datensatz (0b10000101) an den Empfänger übertragen.
Die Datenübertragung von 0b10000101 am MOSI-Pin funktioniert.
Leider kommt aber am Empfänger nichts an.
So wie ich das verstanden habe, müssten die übertragenen Daten am MISO-Pin des Empfänger-Transceivers mit dem Oszi zu messen sein.
Alle Register der Transceiver wurden in der Grundeinstellung belassen.


Hier der C-Code für den Sender:
Code:

#include <avr/io.h>
#include <util/delay.h>

void SPI_MasterInit(void)
{
   SPCR |= (1<<SPE);    // SPI enable
   SPCR |= (0<<DORD);    // Send MSB first
   SPCR |= (1<<MSTR);    // UC = Master
   SPCR |= (1<<CPOL);    // CLK positiv phase
   SPCR |= (0<<CPHA);    // Sampling data to begin
   SPCR |= (1<<SPR1);    // CLK / 64 = 125kHz
   DDRB = (1<<PB1)|(1<<PB7);   // Set MOSI and SCK output
   DDRD = (1<<PD3);         // Set SS output
}

void SPI_MasterTransmit(char adress, char cData)
{
   SPDR = adress | 0x80;            // Start transmission adress - write mode
      while (!(SPSR & (1<<SPIF)));   // Wait for transmission complete
   SPDR = cData;                  // Start transmission data - transmit
      while (!(SPSR & (1<<SPIF)));   // Wait for transmission complete
}

void Chip_Select()
{
   PORTD = (0<<PD3);  //SS = 0
}

void Chip_Select_off()
{
   PORTD |= (1<<PD3);  //SS = 1
}

int main(void)
{
   SPI_MasterInit();    // SPI Initialisierung

   while (1)
   {
      Chip_Select();      // Chip Select
      SPI_MasterTransmit(0x03, 0b10010101);
      // Übergabe der Adresse & Daten an die Funktion SPI_MasterTransmit
      Chip_Select_off();   // Chip Select off
      _delay_us(200);
   }
}


Hier der C-Code für den Empfänger:
Code:

#include <avr/io.h>
#include <util/delay.h>

void SPI_MasterInit(void)
{
   SPCR |= (1<<SPE);    // SPI enable
   SPCR |= (0<<DORD);    // Send MSB first
   SPCR |= (1<<MSTR);    // UC = Master
   SPCR |= (1<<CPOL);    // CLK positiv phase
   SPCR |= (0<<CPHA);    // Sampling data to begin
   SPCR |= (1<<SPR1);    // CLK / 64 = 125kHz
   DDRB = (1<<PB1)|(1<<PB7);   // Set MOSI and SCK output
   DDRD = (1<<PD3);         // Set SS output
}

void SPI_MasterTransmit(char adress)
{
   SPDR = adress;                 // Start transmission adress - read mode
      while (!(SPSR & (1<<SPIF))); // Wait for transmission complete
}

void Chip_Select()
{
   PORTD = (0<<PD3);  //SS = 0
}

void Chip_Select_off()
{
   PORTD |= (1<<PD3);  //SS = 1
}

int main(void)
{
   SPI_MasterInit();    // SPI Initialisierung

   while (1)
   {
      Chip_Select();      // Chip Select
      SPI_MasterTransmit(0x03);
      // Übergabe der Adresse an die Funktion SPI_MasterTransmit
      Chip_Select_off();   // Chip Select off
      _delay_us(200);
   }
}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheBug



Anmeldungsdatum: 20.07.2007
Beiträge: 1484

BeitragVerfasst am: Di 10.Aug 2010 14:04:57    Titel: Bauteile finden Antworten mit Zitat

Wow, wie kommt man denn zu so einer Idee?

Ich würde doch mal empfehlen das Datenblatt und den Beispielcode zu dem Chip genauer anzusehen. Diese Chips sind keine quasi-transparenten SPI Brücken, die Benutzung ist deutlich komplizierter.

_________________
Wenn Sie nichts zu tun haben, tun Sie es bitte nicht hier...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ledi



Anmeldungsdatum: 10.08.2010
Beiträge: 3

BeitragVerfasst am: Di 10.Aug 2010 14:30:22    Titel: Bauteile finden Antworten mit Zitat

Naja Neutral, das habe ich schon gemacht. Leider gibt es im Datenblatt keinen Beispielcode sondern nur eine Beschreibung der Register.

Aber ich bin auch schon einen Schritt weiter - denke ich! Idea

Hier nun meine Theorie:
Im PN-Code Register des Transceivers gibt es einen default-Standard-Code.
Wenn ich nun zb. 0xAA (=1010 1010) übertragen möchte, dann muss ich softwarseitig jedes Bit mit dem PN-Code multiplizieren!

Bsp: Daten = 0xAA
PN-Code = 0x36, 0xF3, 0xAE, 0x22, 0x6C, 0x72, 0x5A, 0x1F

Das Produkt aus Daten und PN-Code muss ich nun übertragen!
Wie mache ich das am Besten? (In C)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Anzeige






Verfasst am: Heute 15:46:35    Titel: Bauteile finden

Nach oben
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    loetstelle.net Foren-Übersicht -> HF Technik Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum nicht herunterladen


Powered by phpBB 2.x © 2001, 2002 phpBB Group

Sie sind Besucher Nr. 1200878
©opyright by Markus Vohburger 2005 All Rights reserved