Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
uasrt [2016/02/17 11:54] markuasrt [2019/12/20 14:39] (aktuell) – [Videozusammenfassung] huwi
Zeile 5: Zeile 5:
 Die Aufgabe soll darin bestehen, die Zeichenkette //"Hallo mySTM32!"// per UART an den PC zu senden. Dort werden die empfangenen Daten in einem Terminal-Programm angezeigt.  Die Aufgabe soll darin bestehen, die Zeichenkette //"Hallo mySTM32!"// per UART an den PC zu senden. Dort werden die empfangenen Daten in einem Terminal-Programm angezeigt. 
  
->>>{{:hallopc.jpg?600|}}+>{{:hallopc.jpg?600|}}
  
 ===== Vorbereitung ===== ===== Vorbereitung =====
Zeile 16: Zeile 16:
 Da heutige Rechner kaum noch über eine klassische [[http://de.wikipedia.org/wiki/RS-232|RS232-Schnittstelle (COM)]] verfügen, benutzen wir eine [[http://shop.myavr.de/Programmer%20und%20Bridges/myUSBtoUART.htm?sp=article.sp.php&artID=200024|USB-UART-Bridge]]. Auf dem [[http://shop.myavr.de/ARM-Produktlinie/mySTM32-Board-F4D,%20Bausatz.htm?sp=article.sp.php&artID=200075|Zusatzboard]] für das STM32F4-Discovery existiert dafür ein entsprechendes Modul, die USB-UART-Bridge //myUSBtoUART//. Da heutige Rechner kaum noch über eine klassische [[http://de.wikipedia.org/wiki/RS-232|RS232-Schnittstelle (COM)]] verfügen, benutzen wir eine [[http://shop.myavr.de/Programmer%20und%20Bridges/myUSBtoUART.htm?sp=article.sp.php&artID=200024|USB-UART-Bridge]]. Auf dem [[http://shop.myavr.de/ARM-Produktlinie/mySTM32-Board-F4D,%20Bausatz.htm?sp=article.sp.php&artID=200075|Zusatzboard]] für das STM32F4-Discovery existiert dafür ein entsprechendes Modul, die USB-UART-Bridge //myUSBtoUART//.
  
->>>{{:addonmitdiscovery.jpg?400|}}+>{{:addonmitdiscovery.jpg?400|}}
  
 Studieren wir das [[http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/DM00037051.pdf|Datenblatt]] stellen wir fest, dass sich die Sendeleitung TxD (transmit data) und die Empfangsleitung RxD (receive data) der USART3 als Alternativfunktionen über die Busmatrix auf verschiedene GPIO-Pins legen lassen. Wir wollen die USART3 am Port D verwenden. Damit lautet unsere Konfiguration: GPIO-Pin D8 ist die Sendeleitung TxD und GPIO-Pin D9 ist die Empfangsleitung RxD. Diese Pins liegen am Nächsten an unserer USB-UART-Bridge. Die Geschwindigkeit für die Datenübertragung legen wir mit 9600 Baud fest. Studieren wir das [[http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/DM00037051.pdf|Datenblatt]] stellen wir fest, dass sich die Sendeleitung TxD (transmit data) und die Empfangsleitung RxD (receive data) der USART3 als Alternativfunktionen über die Busmatrix auf verschiedene GPIO-Pins legen lassen. Wir wollen die USART3 am Port D verwenden. Damit lautet unsere Konfiguration: GPIO-Pin D8 ist die Sendeleitung TxD und GPIO-Pin D9 ist die Empfangsleitung RxD. Diese Pins liegen am Nächsten an unserer USB-UART-Bridge. Die Geschwindigkeit für die Datenübertragung legen wir mit 9600 Baud fest.
  
->>>{{:blockbilduart.jpg?750|}}+>{{:blockbilduart.jpg?750|}}
  
 Verbinden Sie die Pins RxD und TxD der USB-UART-Bridge auf dem [[http://shop.myavr.de/ARM-Produktlinie/mySTM32-Board-F4D,%20Bausatz.htm?sp=article.sp.php&artID=200075|Zusatzboard]] mit den Pins PD8 (RxD3) und PD9 (TxD3). Benutzen Sie dazu geeignete Patchkabel. Beachten Sie, dass die RxD jeweils mit TxD über Kreuz verbunden sein muß. (TxD3 - > RxD, RxD3 - > TxD).  Verbinden Sie die Pins RxD und TxD der USB-UART-Bridge auf dem [[http://shop.myavr.de/ARM-Produktlinie/mySTM32-Board-F4D,%20Bausatz.htm?sp=article.sp.php&artID=200075|Zusatzboard]] mit den Pins PD8 (RxD3) und PD9 (TxD3). Benutzen Sie dazu geeignete Patchkabel. Beachten Sie, dass die RxD jeweils mit TxD über Kreuz verbunden sein muß. (TxD3 - > RxD, RxD3 - > TxD). 
  
->>>{{:uart3verbunden.jpg?450|}}+>{{:uart3verbunden.png?450|}}
  
-Zusätzlich ist die USB-UART-Bridge mit dem PC zu verbinden. Dazu benötigen Sie ein zweites Mini-USB-Kabel. Über die USB-Verbindung zum integrierten STLINK/V2 wird der Controller programmiert und das System mit Spannung versorgt.+Zusätzlich ist die USB-UART-Bridge mit dem PC zu verbinden. Dazu benötigen Sie ein zweites Mini-USB-Kabel. Über die USB-Verbindung zum integrierten ST-LINK/V2 wird der Controller programmiert und das System mit Spannung versorgt.
  
 ===== Entwurf ===== ===== Entwurf =====
-Für die zu entwerfende Anwendung wollen wir vorhandene Bausteine (Klasse/Templates) für die UART nutzen. Dazu schauen wir uns in den UML Paketen des Frameworks um (UML-Pakete / Pec / pec_Uart). Dort werden wir fündig mit dem allgemeinen Interface für eine PecUart. +Für die zu entwerfende Anwendung wollen wir vorhandene Bausteine (Klasse/Templates) für die UART nutzen. Der Einfachheit halber suchen wir im Explorer mit dem Suchtext **UART**; oder im Navigator bei den UML Paketen des Frameworks (UML-Pakete/Pec/pec_Uart). Wir werden fündig mit dem allgemeinen Interface für eine PecUart.
  
 >{{:uartinterface.jpg?700|}} >{{:uartinterface.jpg?700|}}
  
-Die konkreten Templates für die UART-Anbindung an einen bestimmten Port  finden Sie unter UML-Pakete / UartList_stm32f4. +Die konkreten Templates für die UART-Anbindung an einen bestimmten Port finden Sie mit dem Suchtext **UARTList** oder unter UML-Pakete/UartList_stm32f4.
- +
 >{{:hallouart.png?750|}} >{{:hallouart.png?750|}}
  
Zeile 41: Zeile 39:
  
 ===== Realisierung ===== ===== Realisierung =====
-Nachdem wir die benötigten Bausteine (//PecUart, usart3portD8_stm32f4, baudrate9600//) aus der Bibliothek bezogen und zu einer Komponenten (//Terminal//) zusammengesetzt haben wurde diese im System (//Controller//) als Instanz (//terminal//) aggregiert. Jetzt können wir die Instanz der Komponente benutzen. Realisieren Sie die geforderte Ausgabe der Zeichenkette "Hallo mySTM32" wie folgt in der Methode //onWork//.+Nachdem wir die benötigten Bausteine (//PecUart, usart3portD8_stm32f4, baudrate9600//) aus der Bibliothek gezogen und zu einer Komponente (//Terminal//) zusammengesetzt habenwurde diese im System (//Controller//) als Instanz (//terminal//) aggregiert. Jetzt können wir die Instanz der Komponente benutzen. Realisieren Sie die geforderte Ausgabe der Zeichenkette "Hallo mySTM32!" wie folgt in der Methode //onWork//.
  
-//**onWork:**// +//**Controller::onWork:**// 
->>><code cpp>+><code cpp>
 terminal.writeString("Hallo mySTM32!\n"); terminal.writeString("Hallo mySTM32!\n");
 waitMs(1000); waitMs(1000);
 </code> </code>
  
->>>{{:uartseq1.png|}}+>{{:uartseq1.png|}}
  
 ===== Test ===== ===== Test =====
Zeile 67: Zeile 65:
  
 ====== Erweiterung ====== ====== Erweiterung ======
-Als Erweiterung der Anwendung sollen Zeichen vom PC empfangen und wieder zurückgesendet werden. Dabei ist zu beachten, dass nur dann, wenn Zeichen verfügbar sind, diese auch von der UART abgeholt werden dürfen. Mit den Operationen //hasData// und //getByte// stellt die UART die benötigte Funktionalität zur Verfügung. Dieses "Echo" ergänzen Sie bitte wie folgt in der Methode //onWork//.+Als Erweiterung der Anwendung sollen Zeichen vom PC empfangen und wieder zurückgesendet werden. Dabei ist zu beachten, dass nur dann, wenn Zeichen verfügbar sind, diese auch von der UART abgeholt werden dürfen. Mit den Operationen //dataAvailable// und //writeByte// stellt die UART die benötigte Funktionalität zur Verfügung. Dieses "Echo" ergänzen Sie bitte wie folgt in der Methode //onWork//.
  
-//**onWork:**// +//**Controller::onWork:**// 
->>><code cpp> +><code cpp> 
-if(controlcenter.hasData())+while (terminal.dataAvailable())
 { {
  char zeichen;  char zeichen;
- zeichen=controlcenter.getByte(); + zeichen=terminal.readByte(); 
- controlcenter.sendByte(zeichen);+ terminal.writeByte(zeichen);
 } }
- 
-controlcenter.sendString(" Hallo mySTM32!\n"); 
-waitMs(100); 
 </code> </code>
  
->>>{{:uartseq2.jpg|}}+>{{:uartseq2.png|}} 
 + 
 +Tragen Sie im ControlCenter den zu sendenden Text ein und aktivieren Sie //Senden//
 + 
 +{{:halloanwender.png?600|}}
  
 ====== Videozusammenfassung ====== ====== Videozusammenfassung ======
Zeile 89: Zeile 88:
  
   - Klassendiagramm anlegen und öffnen   - Klassendiagramm anlegen und öffnen
-  - Diagrammvorlage für ARM C++ Applikation auswählen und laden+  - Diagrammvorlage für PEC Applikation auswählenladen und Treiberpaket für STM32F4 einfügen
   - Navigator auf UML Pakete umschalten   - Navigator auf UML Pakete umschalten
-  - gewünschte Klassen im Navigator suchen und ins Diagramm ziehen+  - gewünschte Klassen im Explorer/Navigator suchen und ins Diagramm ziehen
   - Klassen aggregieren   - Klassen aggregieren
   - Operationen einer Klasse anlegen   - Operationen einer Klasse anlegen
Zeile 97: Zeile 96:
   - den nötigen Quellcode in den Operationen erstellen   - den nötigen Quellcode in den Operationen erstellen
   - Erstellen und Brennen einer ARM Applikation im Klassendiagramm   - Erstellen und Brennen einer ARM Applikation im Klassendiagramm
-  - **das Sisy-Controlcenter konfigurieren und anwenden**+  - **das SiSy-Controlcenter konfigurieren und anwenden**
  
 Und hier diesen Abschnitt wiederum als Videozusammenfassung. Und hier diesen Abschnitt wiederum als Videozusammenfassung.
  
->>><flashplayer width="600" height="400" position="0">file=http://youtu.be/d_MV0dplWgI</flashplayer> +><html><iframe width="640" height="400" src="https://www.youtube.com/embed/d_MV0dplWgI" frameborder="0" allowfullscreen></iframe></html>
- +
->>>[[http://youtu.be/d_MV0dplWgI|besser auf youTube]]+
  
 ====== Übung ====== ====== Übung ======
-Erweitern Sie zur Übung die Anwendung um einen Taster. Die Ausgabe "Hallo mySTM32!" per UART soll nur erfolgen solange der Taster gedrückt ist. Das Echo soll unabhängig von der gedrückten Taste zurückgesendet werden.+Erweitern Sie zur Übung die Anwendung um einen Taster. Die Ausgabe "Hallo mySTM32!" per UART soll nur erfolgen solange der Taster gedrückt ist. Das Echo soll unabhängig von der gedrückten Taste zurück gesendet werden.
  
 ====== Nächstes Thema ====== ====== Nächstes Thema ======
   * [[ADC|Analogdaten erfassen]]   * [[ADC|Analogdaten erfassen]]