µC mit USB (kein FT232.)

Gast #3480721
Lesenswert?

Hallo :)

bei mir war jetzt hmm 2 Jahre Pause in der µC-Entwicklung und ich wollte 
mich bei euch informieren, ob sich mittlerweile ein altes Problem gelöst 
hat.

Damals war AVR und USB ja kaum möglich. Entweder per FT232 oder per 
Software-Emulation (als HID in Low-Speed) oder die sündhaftteuren und 
wenig verwendeten AVRs mit USB. War alles nicht so toll ...

Ich verwendete daher die (ARM7) AT91SAM7-µCs, die echte Full-Speed USB 
hatten. Die sind aber auch schon überholt ... Abgelöst durch Cortex M3?

Welche Controller sind denn derzeit "Inn"?

Vielen Dank für eure Hilfe!
Thomas
Gast #3480765
Lesenswert?

asdf1024 schrieb:
> Ich verwendete daher die (ARM7) AT91SAM7-µCs, die echte Full-Speed USB
> hatten. Die sind aber auch schon überholt ... Abgelöst durch Cortex M3?

Nachfolger sind dann doch schnell gefunden ATSAM3S/4S.
Gleiches USB Interface um weitere mögliche Endpunkte und entsprechenden 
Puffer-Speicher erweitert.
USB Pullup Steuerung ist in die USB Pins gewandert (kein zusätzlicher 
GPIO mehr)

Die Umstellung von SAM7S auf SAM4S ging hier ziemlich unproblematisch 
über die Bühne. Lediglich die Clock hat mich etwas gefoppt.
Pin kompatibel obendrein. (Ein paar Sonderpins [z.B. VDDFLASH] sind 
jetzt GPIO, sprich ATSAM4 läuft im SAM7 Layout aber nciht zwingend 
umgekehrt)
(Firma: EleLa - www.elela.de) #3480797
Lesenswert?

Die stärkeren µC die gerade "IN" sind, sind eigentlich hier aufgelistet:

http://www.coocox.org/CooCox_CoIDE.htm

Siehe unter "Supported Device:"
da gibt es eine große Auswahl vieler Hersteller.
Alle mit Cortex-M0 und Cortex-M3/M4 Kern.
Natürlich sind da auch einige dabei die kein USB dabei haben, aber auch 
welche die sogar Hi-Speed unterstützen (manche mit separatem USB PHY 
Chip).

Welchen man davon nimmt ist Geschmackssache.

Von Atmel und Holtec sind nur wenige Devices zur Auswahl, daher würde 
ich eher zu einem anderen Hersteller raten um einfach mehr Flexibilität 
zu haben (Speicher Größe/Gehäuseauswahl/Peripheriefunktionen).

Für mich ist derzeit ein STM32 in - aber das weiß hier eigentlich ja 
schon jeder ;-)
Gast #3480829
Lesenswert?

Markus Müller schrieb:
> on Atmel und Holtec sind nur wenige Devices zur Auswahl

Das dürfte am z.B. Atmel Studio liegen, dass die CooCox Gemeinde von der 
Seite wenig Zulauf bekommt.

Digikey listet zur Zeit 27 Seiten á 25 Variationen von Atmel Cortex M0-4

Ich denke das wird also eher an der CooCox gemeinde liegen, dass die 
weniger Zulauf von dieser Seite bekommen aufgrund des Atmel-Studios.
Gast #3480909
Lesenswert?

Danke schonmal für eure Hinweise!

Oh, das coocox-Dings gabs damals nicht ...

> CoIDE is a new, free and highly-integrated software development
> environment for ARM Cortex MCU based microcontrollers, which includes all
> the tools necessary to develop high-quality software solutions in a timly
> and cost effective manner. It integrates CoBuilder and CoDebugger for
> simplicity and ease of use.

Ist ja schonmal ein Super Tipp und ein (Neu-)Einstiegspunkt!

Das war ja auch oft das Problem ... Der Kern war zwar fast immer gleich 
- mit Ausnahme der Peripherie - aber die Tools und Toolchain ...

Je konfortabler und kostenloser desto besser natürlich ...

Werd ich mir gleich mal im Detail anschauen :)
Gast #3481035
Lesenswert?

Bei USB ist NXP derzeit weit vor STM oder Atmel, dank USB-ROM Treiber. 
Um MSC, CDC oder HID zu nutzen, muss man nur den Deskriptor übergeben 
und die I/O-Funktionen füllen z.B.:

void GetInReport(uint8_t src[], uint32_t length)
...

void SetOutReport(uint8_t dst[], uint32_t length)
...

ROM **rom = (ROM **)0x1fff1ff8;

void USBIRQ_IRQHandler()
{
  (*rom)->pUSBD->isr();
}

void Init(void)
{
  HidDevInfo.idVendor = USB_VENDOR_ID;
  HidDevInfo.idProduct = USB_PROD_ID;
  HidDevInfo.InReportCount = 1;
  HidDevInfo.OutReportCount = 1;
  HidDevInfo.InReport = GetInReport;
  HidDevInfo.OutReport = SetOutReport;

  (*rom)->pUSBD->init_clk_pins();
  (*rom)->pUSBD->init();
  (*rom)->pUSBD->connect();
}
(Firma: EleLa - www.elela.de) #3481047
Lesenswert?

asdf1024 schrieb:
> Danke schonmal für eure Hinweise!
>
> Oh, das coocox-Dings gabs damals nicht ...
>
>> CoIDE is a new, free and highly-integrated software development
>> environment for ARM Cortex MCU based microcontrollers, which includes all
>> the tools necessary to develop high-quality software solutions in a timly
>> and cost effective manner. It integrates CoBuilder and CoDebugger for
>> simplicity and ease of use.
>
> Ist ja schonmal ein Super Tipp und ein (Neu-)Einstiegspunkt!
>
> Das war ja auch oft das Problem ... Der Kern war zwar fast immer gleich
> - mit Ausnahme der Peripherie - aber die Tools und Toolchain ...
>
> Je komfortabler und kostenloser desto besser natürlich ...
>
> Werd ich mir gleich mal im Detail anschauen :)

Ich habe noch eine Lektüre die Einsteigern hilft, der Artikel:
STM32 für Einsteiger
Diese Infos sind weitestgehend für alle Chips mit Cortex-Mx Kern 
übertragbar. Alle Hersteller bieten entsprechende Demo-Boards und 
Software-Demos.

Und gleich bekomme ich sicher wieder von irgendjemandem Haue - schnell 
wegrenn.
Gast #3481168
Lesenswert?

Lothar schrieb:
> Bei USB ist NXP derzeit weit vor STM oder Atmel, dank USB-ROM Treiber.
> Um MSC, CDC oder HID zu nutzen, muss man nur den Deskriptor übergeben
> und die I/O-Funktionen füllen z.B.

Ui, das ist ja praktisch! Das $%§$-USB war mit dem SAM7 schon relativ 
aufwändig ...

Hast du einen Lieblings-LPC?

Hatte mir damals die auch mal angeschaut, ich weiß aber nicht mehr, was 
mir da nicht gepasst hat ... Wars vlt die Toolchain? Hmm ...
Gast #3481226
Lesenswert?

Lothar schrieb:
> Bei USB ist NXP derzeit weit vor STM oder Atmel, dank USB-ROM
> Treiber.
> Um MSC, CDC oder HID zu nutzen, muss man nur den Deskriptor übergeben
> und die I/O-Funktionen füllen z.B.:
>

...und ist dann wahrscheinlich ziemlich von den Einschränkungen des 
ROM-Treibers enttäuscht. So zumindest auf dem LPC1343. Der kann HID, 
aber festhalten: es ist ein einziger simpler Report Descriptor 
hartkodiert im Treiber!
Gast #3481239
Lesenswert?

greg schrieb:
> So zumindest auf dem LPC1343. Der kann HID,
> aber festhalten: es ist ein einziger simpler Report Descriptor
> hartkodiert im Treiber!

Einer ist natürlich schon drin, nämlich 1 byte I/O bits :-)

Das ist aber egal, man macht einfach structs für die gewünschten I/O 
Daten und dann:

HidDevInfo.InReportCount = sizeof(InStruct);
HidDevInfo.OutReportCount = sizeof(OutStruct);

Im USB ROM Treiber sieht der Report vermutlich so ähnlich aus (sieht man 
ja nicht):

HID_USAGE_PAGE_LED,
HID_USAGE_LED_GENERIC_INDICATOR,
HID_LogicalMin(0),
HID_LogicalMax(1),
HID_ReportCount(8),
HID_ReportSize(1),
HID_Output(HID_Data | HID_Variable | HID_Absolute)
Gast #3481330
Lesenswert?

greg schrieb:
> Das bringt leider gar nichts, wenn man tatsächlich ein Eingabegerät
> implementieren möchte.

Dafür sind die USB ROM Treiber auch nicht gedacht, die Anwendung ist 
Kommunikation zwischen PC-Software GUI (z.B. VB, LabVIEW) und uC als 
RS232-Ersatz.
Gast #3481334
Lesenswert?

>Uhm, sorry ... Gibt sicher einige, die mit den beiden Familien
>erfolgreich arbeiten. Aber PIC18 oder ein PIC32 mit Mach32-Kern ...
>Ne, nicht unbedingt :)

Hmm, MACH32. Da hab ich auch noch eine ISA-Grafikkarte in
irgendeiner Kiste rumliegen. Wußte gar nicht das die auch
als Prozessorkern taugt......
#3481428
Lesenswert?

Lothar schrieb:
> greg schrieb:
>> Das bringt leider gar nichts, wenn man tatsächlich ein Eingabegerät
>> implementieren möchte.
>
> Dafür sind die USB ROM Treiber auch nicht gedacht, die Anwendung ist
> Kommunikation zwischen PC-Software GUI (z.B. VB, LabVIEW) und uC als
> RS232-Ersatz.

Autsch. Also eine "offiziell supportete Frickellösung" während der 
eigentliche Einsatzzweck von HID vernachlässigt wird :D Super, NXP sag 
ich nur ;-)

Um auch was produktives zu leisten, als IDE hat Coocox mir zu viele 
Macken, daher werfe ich mal in den Raum:

http://www.emblocks.org/

ist ein Ableger von Code::Blocks und unterstützt wesentlich mehr Chips 
als Coocox. Der ARM-GCC und der ST-Link GDB ist gleich mitgeliefert, man 
kann also für STM32 sofort loslegen. Segger J-LINK geht bei mir auch 
damit.
Es gibt in der neuen Version sogar einen Import von Coocox-Projekten 
(habe ich aber noch nicht getestet)

Einziges Manko bisher, was mir so aufgefallen ist: Symbole im Projekt 
suchen ("Find Definition", "Find Implementation" usw) funktioniert oft 
nicht.
Gast #3485030
Lesenswert?

Warum gibt's diese integrierten IDEs (also z.B. CooCox und Em::Blocks) 
eigentlich nur für Windows 32 bit? Und viel schlimmer, warum findet man 
diese Information bei Em::Blocks nirgendwo auf der Website?
Gast #3485086
Lesenswert?

> hihi :) Ja sorry, ich musste einiges mit PIC16F84 und F873 basteln und
> das in Assembler und naja, seitdem hab ich eine permanente Abneigung
> gegen PICs :D
> PIC18 und PIC32 sind damit nicht vergleichbar, aber trotzdem :D

Da hast Du Dir ein völlig unnötiges Vorurteil aufgebaut, Du vergleichst 
ja auch keinen VW-Käfer aus 1968 mit einem Golf von 2014.

Bei den PIC32 gibt es sehr viele mit USB und/oder Ethernet und lieferbar 
und preiswert sind sie auch. Bei Microchip gibt es auch eine SEHR gute 
Unterstützung mit Frameworks und fertigen Programmierbeispielen auf der 
Homepage.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren