Forum: Mikrocontroller und Digitale Elektronik USB-Verbindung zum PC (SAMA4d32C)


von Basti B. (basti195) Benutzerseite


Lesenswert?

Hallo zusammen,

ich versuche eine USB-Verbindung von meinem SAM4S(Cortex-m4) zum PC 
aufzubauen. Hierzu möchte ich Putty verwenden, in dem ich den 
entsprechenden COM-Port eintrage (win7 müsste dann doch das serielle 
Protokoll in ein USB-Protokoll umwandeln).

Jedoch wird der Client nicht erkannt.

Da der Aufbau des USB recht kompliziert ist wollte ich mal fragen ob und 
was ich falsch gemacht habe bzw, was noch fehlt.

Allgemein:  Der UDP(USB Device Port) braucht 2 Clocks eine 12 MHZ Clock 
und eine Master Clock.

Mainclock wird über PLLa auf 120 MHZ gesetzt
UDP Clock wird über PLLb erst auf 48MHZ gesetzt und dann zu 12mHZ 
geteilt

Die PIO lines sind Standard mäßig auf USB eingestellt
1
  // enbale Clock USB
2
  PMC->PMC_PCER1 = PMC_PCER1_PID34; // enable USB 
3
   
4
  PMC->PMC_WPMR =  PMC_WPMR_WPKEY_PASSWD; // disable write protection
5
  // enable USB im Powemanagment
6
  //enable USB_CLOCK  select PCK0
7
  PMC->PMC_SCER = PMC_SCER_UDP ;//| PMC_SCER_PCK0; 
8
   // enable/select 12 mHZ Quarz  
9
  PMC->CKGR_MOR = CKGR_MOR_MOSCSEL | CKGR_MOR_MOSCXTEN | CKGR_MOR_KEY_PASSWD ;
10
  // enable PLLA teiler(1-255)  muliplizierer 7(-62) + 1 
11
  PMC->CKGR_PLLAR = CKGR_PLLAR_DIVA(2)|CKGR_PLLAR_ONE| CKGR_PLLAR_MULA(7); //   12/2*8 = 48mHZ USB // auswahl dirket über den Quarz
12
  PMC->CKGR_PLLBR = CKGR_PLLBR_DIVB(2)|CKGR_PLLAR_ONE| CKGR_PLLAR_MULA(19);  // 12/2*20 = 120mHZ für main Clock
13
  // select CLOCK select PLLB für Mainclock
14
  PMC->PMC_MCKR = PMC_MCKR_CSS_PLLB_CLK  ;  //  120mhz 
15
  // select für PCK PPLA /4  48/4 = 12
16
  PMC->PMC_PCK[0] = PMC_PCK_CSS_PLLA_CLK | PMC_PCK_PRES_CLK_4; // select PSK0 mit 12hmz
17
  
18
  
19
  // USB config
20
   UDP->UDP_FADDR = UDP_FADDR_FEN; // enable Funktion

Datenblatt : 
http://www.atmel.com/Images/Atmel-11100-32-bit%20Cortex-M4-Microcontroller-SAM4S_Datasheet.pdf

Clock Einstellungen ab Seite: 528
USB Einstellungen ab Seite: 1027

würde mich riesig freuen, wenn  ich Ideen oder noch besser Fehler 
genannt bekomme.

Danke
basti

[Edit]: Code schöner Formatiert

von HansHans (Gast)


Lesenswert?


von Basti B. (basti195) Benutzerseite


Lesenswert?

Hallo,
danke für die Antwort,
eigentlich bin ich kein Fan von ASF weil ich bisher nur schlechte 
Erfahrung damit gemacht hab werde es mir jedoch mal anschauen.

ich habe heim herumexperementieren herausgefunden, wenn ich den SAM4s 
direkt Programmiere Tool/Device programming (anstatt ihm im Debug-MOde 
laufen zu lassen  wird der USB vom PC erkannt jedoch bin ich dann nicht 
in der Lage mit Putty ein Zeichen zu setzen.
Putty nimmt einfach keine Keyboard eingaben an.

was genau heißt das jetzt?

von Basti B. (basti195) Benutzerseite


Lesenswert?

Bin ein Bisschen weiter gekommen:
Der PC erkennt nun die Verbindung auch im Debuge Mode.
Friert sie jedoch gleich mit den Fehler Code 43 ein.
So dass immer noch keine Verbindung von Putty zum Sam4s möglich ist

von Basti B. (basti195) Benutzerseite


Lesenswert?

OK
Nach dem ich wahrscheinlich meine Frage viel zu speziell gestellt habe 
verallgemeinere ich sie jetzt.

In wie fern muss ich bei ARM prozessoren auf das USB Protokoll achten?
hierzu steht leider kaum etawss im Db.
Wird zb. eine ausgehende Verbinder automatisch mit der protokoll overhad 
gesendet FrameID, PID, CRC ...
oder muss das alles selber senden sprich die entsprechenden Werte ins 
transmit Register schreiben und absenden

G basti95f

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.