Forum: Mikrocontroller und Digitale Elektronik Keil MDK-Arm 5 SPI1 HAL ITM_Send


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Schorsch X. (bastelschorsch)


Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,
ich lass mir mit CubeMx die Initialisierung für einen STM32L476 für 
USART2+3,ADC,TIM7,SPI1,DAC,RTC zusammenbauen. Bei Verwendung der SWO 
(ITM) Schnittstelle für Debug Funktionen, klappt das nur, wenn ich 
MX_SPI1_Init nicht ausführe. Nehme ich SPI2 klappt alles.

Hat sonst jemand schon mal einen solchen Effekt gehabt ?


Gruß
Schorsch

Allen Elektronikbegeisterten einen schönen Anfang für 2017 und viele 
schöne Projekte.

von Jim M. (turboj)


Bewertung
0 lesenswert
nicht lesenswert
Da würde ich spontan im Datenblatt nach den Pinbelegungen schauen, ob es 
da eine Doppelbelegung mit den Debug oder SWO Pins gibt.

In dem Fall würde das Umschalten der Pinfunktion die Debug Schnittstelle 
deaktivieren.

von STK500-Besitzer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Jim M. schrieb:
> Da würde ich spontan im Datenblatt nach den Pinbelegungen schauen, ob es
> da eine Doppelbelegung mit den Debug oder SWO Pins gibt.

Das spuckt Cube eigentlich doch schon aus.

von hp-freund (Gast)


Bewertung
0 lesenswert
nicht lesenswert
@Schorsch,

häng mal deine *.ioc Datei an.

von Schorsch X. (bastelschorsch)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Nach langem hin und her, sieht es so aus, als würde bei der Port 
Initialisierung für den SPI was schief laufden. Lass ich "zu Fuß 
geändert" den SPI zuerst initialisieren, dann erst die anderen Teile, 
dann klappt es. Sehr seltsam. Anbei die .ioc Datei.

von hp-freund (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Moin,
wohin hast Du den SPI1_CS gelegt?
CubeMX kennt den erst mal nicht. Wird der später richtig definiert?

von Schorsch X. (bastelschorsch)


Bewertung
0 lesenswert
nicht lesenswert
Im Moment hab ich dafür noch keinen Port. Den wollte ich später 
festlegen, wenn die anderen Schnittstellen alle definiert sind. Ist das 
ein Problem ?

von hp-freund (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Das weiß ich leider nicht, habe immer alles komplett erstellt.
Leg doch einfach temporär ein Pin fest und probier es aus.

von hp-freund (Gast)


Bewertung
1 lesenswert
nicht lesenswert
PB3 = SPI1_SCK = SWO

könnte das Problem sein.

von Schorsch X. (bastelschorsch)


Bewertung
0 lesenswert
nicht lesenswert
hp-freund schrieb:
> PB3 = SPI1_SCK = SWO
>
> könnte das Problem sein.

Hallo hp-freund,
vielen herzlichen Dank für die Idee. Das war es wohl. Ich hab den PA5 
(ist auf dem Nucleo Board die LED) freigegeben für SCK1 und jetzt tut 
das Ganze.
Ist wohl manchmal die Sache mit den Bäumen und dem Wald.

nochmals vielen, vielen Dank für die tolle Hilfe. Ein (oder auch 
mehrere) Schoppen stehen hier bereit für Dich. :-)

Schorsch

von Adib (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Schorsch,

Die CubeMx libs initialisieren die spi bei Erstverwendung.

Also nicht bei xxx_init sondern erst bei xxx_write.

Da kann es passieren, dass die Polarität des clock Signals genau noch 
falsch ist.
Ich finde das Init-VerhLten von der CubeMx falsch.

Mein workaround ist gleich nach der Initialisierung ein Dummy Write zu 
machen, damit sich das clock Signal wie erwartet einstellt.

Grüße, Adib.

von Schorsch X. (bastelschorsch)


Bewertung
0 lesenswert
nicht lesenswert
Hi Adib,

vielen Dank für den Tip. Ich werd wohl die SPI erst komplett in Betrieb 
nehmen, wenn mein Board fertig ist. Da hängen DAC7750 dran. Das ist mir 
für´s Basteln zu fummelig. Man ist ja nicht mehr der Jüngste und da 
wollen die Augen nicht mehr so gut.

Die CubeMX Geschicht ist i.a. recht einfach und komfortabel, aber eben 
immer mal wieder irgendwelche "Besonderheiten".

Hast du die USB MX Software mal am laufen gehabt ?

Alle Gute
Schorsch

von hp-freund (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Schorsch X. schrieb:
> Die CubeMX Geschicht ist i.a. recht einfach und komfortabel, aber eben
> immer mal wieder irgendwelche "Besonderheiten".

Na ja, eigentlich ist das schon in Ordnung, wenn man dann auch die 
gesamte  Verwaltung CubeMX überlässt.
Wichtig finde ich auch das man später noch mal CubeMX aufrufen kann um 
Änderungen vorzunehmen.

Hast zwar nicht mich gefragt, aber USB CDC erfordert nach Einrichtung 
durch CubeMX nur noch das Einfügen von 4 Zeilen in die main.c und schon 
sendet der STM32 über CDC.

Zum Empfang muss eigentlich auch nur eine Funktion angepasst werden.

Windows braucht allerdings noch den CDC Treiber, Linux nicht.

von Schorsch X. (bastelschorsch)


Bewertung
0 lesenswert
nicht lesenswert
Hallo hp-Freund ,

ich hab selbstredenend einen jeden gemeint, der meine Zeilen wohlwollend 
zu sich nimmt :-).

Ich werde mir das mal anschauen.
Bisher hab ich zumeist USB über FTDI Bausteine gemacht, weil das den 
geringsten Aufwand bedeutete. Sowas wie FT230X oder FT232R sind bei 
meinen kleinen Stückzahlen meist die preiswertere Lösung als tagelang in 
unbekannten USB Treibern zu wühlen.

Bisher hat mir die CUBEMX Software schon recht gut geholfen.

noch frohes Schaffen
Schorsch

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.