Forum: Mikrocontroller und Digitale Elektronik AT91SAM7X512 USB


von Kristof Koschnick (Gast)


Lesenswert?

Hallo,

Ich programmieren im Rahmen meiner DA den AT91SAM7X und habe Probleme 
beim USB. Zur Verfügugng steht mir ein selbst Designtes Board und ein 
Bluetooth-Evalboard das auch USB hat. Eigendlich wollte ich hier meine 
ganzen Probleme schildern, jedoch schwarnt mir gerade das bei meinem 
Board vielleicht ein Fehler unterlaufen ist. Daher erstmal kurz und 
knapp:

Muss die DDP Leitung auf 3V3 gezogen werden? Ich bin davon ausgegangen 
das der intern Pullup dies tut, und habe keine Pullupresistoren an den 
DDP und DDM Leitungen. Nur Leitungswiederstände (27R).

Falls das nicht die "Lösung" sein sollte hier mal mein ganzes Problem:

Ich habe mir von Atmel das "USB HID Keyboard Project" genommen und 
musste es ein wenig anpassen damit es fehlerfrei kompiliert wird.
Jedoch findet nach dem Flashen keine Enumeration statt und ich (sowie 
alle die ich fragen kann) sind mit unserem latein am Ende.

Über DBUG habe ich schon jede Menge Debugmsg ausgeben lassen, und das 
Programm hängt in einer Endlosschleife
1
while (USBD_GetState() < USBD_STATE_CONFIGURED)

USBD_GetState() liefert den Devicestatus zurück, dieser ist aber immer 0
1
/// The device is currently suspended.
2
#define USBD_STATE_SUSPENDED            0
3
/// USB cable is plugged into the device.
4
#define USBD_STATE_ATTACHED             1
5
/// Host is providing +5V through the USB cable.
6
#define USBD_STATE_POWERED              2
7
/// Device has been reset.
8
#define USBD_STATE_DEFAULT              3
9
/// The device has been given an address on the bus.
10
#define USBD_STATE_ADDRESS              4
11
/// A valid configuration has been selected.
12
#define USBD_STATE_CONFIGURED           5

Es findet also gar keine Enumeration statt, daher meldet der PC auch 
garnichts wenn ich das Board anschließe.

Ich benutze:
Eclipse IDE for C/C++ Developers Build id: 20100218-1602
Yagarto
SAM ICE JTAG
SAM-BA 2.9


Danke im Vorraus
Gruß
Kristof

von Alexander D. (lieberarm9alsarmab)


Lesenswert?

Hi,

http://www.atmel.com/dyn/resources/prod_documents/doc6120.pdf
Seite 140:
USB requirements:
– pull-up on DDP

Seite 450:
When the host is disconnected and the transceiver is enabled, then DDP 
and DDM are floating. This may lead to over consumption. A solution is 
to connect 330 KΩ pulldowns on DP and DM. These pulldowns do not alter 
DDP and DDM signal integrity.

Gruß

von Kristof Koschnick (Gast)


Lesenswert?

Danke für die schnelle Bestätigung.
Ich habe gestern abend auch noch Datenblätter gewälzt und es war mir 
schon fast klar...hab mich beim Designen der Platte auf eine Vorlage 
verlassen die crap ist.

Habe gerade einen Pullup 1.5K auf DDP gelötet und schon funktioniert die 
Enumeration.

Die Pulldowns habe ich vernachlässigt, da ein VBUS Monitor für mich 
nciht wichtig ist.

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.