Forum: Mikrocontroller und Digitale Elektronik R8C: Daten eines M25P über UART auslesen?


von Michael T. (michelback)


Lesenswert?

Hallo zusamen,

ich habe das Problem, dass ich Daten aus einem Flash-Memory (M25P64) der 
über SPI an einen µC (renesas R5F2122CKFP) angeschlossen ist mit dem PC 
auslesen möchte.
Zum Debuggen und Flashen des  µCs verwende ich den E8a von Renesas. 
Dieser nutzt die UART1. Dann würde mir ja noch die UART0 bleiben um mit 
einem weiteren Interface manuell mit dem µC zu kommunizieren, oder?
Die Idee ist, einen Programmabschnitt im µC zu haben, der erkennt wenn 
UART0 verwendet werden soll (zB Interrupt), also der Stecker 
angeschlossen ist.
Daraufhin soll dann der µC folgendes tun:
- Daten aus dem M25P64 auslesen
- Daten an die UART0-Schnittstelle senden

müsste doch so gehen, oder? Über den Debugger komme ich jedenfalls nicht 
an die Daten ran danke ich. Der debuggt und flasht nur.

welche Pins benötige ich dann für die UART0-Schnittstelle? Im Datenblatt 
sind insgesamt 5 Pins angegeben (2x TXD, 2xRXD, 1xCLOCK), aber ich 
dachte man braucht dazu eigentlich nur 1x TXD, 1x RXD und 1x CLOCK 
(+interrupt pin)?

Welche Software und Hardware(fertig - nicht selber basteln)benötige ich 
für die UART0?

Vielen dank und Grüße,
Michael

von Arc N. (arc)


Lesenswert?

Michael T. schrieb:
> Hallo zusamen,
>
> ich habe das Problem, dass ich Daten aus einem Flash-Memory (M25P64) der
> über SPI an einen µC (renesas R5F2122CKFP) angeschlossen ist mit dem PC
> auslesen möchte.
> Zum Debuggen und Flashen des  µCs verwende ich den E8a von Renesas.
> Dieser nutzt die UART1. Dann würde mir ja noch die UART0 bleiben um mit
> einem weiteren Interface manuell mit dem µC zu kommunizieren, oder?
> Die Idee ist, einen Programmabschnitt im µC zu haben, der erkennt wenn
> UART0 verwendet werden soll (zB Interrupt), also der Stecker
> angeschlossen ist.
> Daraufhin soll dann der µC folgendes tun:
> - Daten aus dem M25P64 auslesen
> - Daten an die UART0-Schnittstelle senden
>
> müsste doch so gehen, oder? Über den Debugger komme ich jedenfalls nicht
> an die Daten ran danke ich. Der debuggt und flasht nur.
>
> welche Pins benötige ich dann für die UART0-Schnittstelle? Im Datenblatt
> sind insgesamt 5 Pins angegeben (2x TXD, 2xRXD, 1xCLOCK), aber ich
> dachte man braucht dazu eigentlich nur 1x TXD, 1x RXD und 1x CLOCK
> (+interrupt pin)?

Siehe Pin Assignments/Pin Functions im Datenblatt bzw. Abschnitt 15 
Serial Interface im Hardwaremanual.
UART0: TXD0, RXD0, CLK0, falls der synchrone Modus benutzt wird, bzw. 
falls man die Baudrate im asynchronen Modus extern vorgeben will
UART1: TXD1, RXD1

> Welche Software und Hardware(fertig - nicht selber basteln)benötige ich
> für die UART0?

http://eu.renesas.com/fmwk.jsp?fp=/products/mpumcu/r8c_family/r8c2x_series/&cnt=Application_Notes.jsp&title=Application%20Notes&lid=2780

Hardware?
FT232R oder fertiges Modul ala
http://apple.clickandbuild.com/cnb/shop/ftdichip?op=catalogue-products-null&prodCategoryID=47&title=Cables%3A+TTL-232R+and+variants

oder z.B. MAX3222E + USB->RS232-Wandler

> Vielen dank und Grüße,
> Michael

p.s. am Controller hängen nicht zufällig noch ein paar 24-Bit ADCs?

von Michael T. (michelback)


Lesenswert?

hallo Arc Net,

es hängen keine 24bit ADCs am µC. Warum fragst du?

Danke für die Info zur UART Schnittstelle.
Mir ist aber bei den Seriellen Schnittstellen was nicht ganz klar:
Ich möchte die UART1 für den E8a Debugger nutzen. Ausserdem möchte ich 4 
Slaves an die SSU-Schnittstelle anschließen, darunter auch die 2 
Speicherbausteine. Die UART0 möchte ich nun als serielle Schnittstelle 
zum PC nutzen um im µC manuell (vom PC aus) ein Programm zu starten, 
dass die Speicherbausteine ausliest und die Daten an die UART0 schickt.
Jetzt komme ich aber mit den Bezeichnungen der Schnittstellen nicht ganz 
zurecht:
Für die Slaves brauche ich den SSU (= Clock synchronous serial I/O with 
chip select, vgl kap 16.2 im Datenblatt). Kann es sein, dass der 
SSU-Modus den UART1 beansprucht? Also dass der UART1 nicht verwendet 
werden kann, wenn der SSU aktiv ist? Folglich kann man nicht Debuggen 
wenn der SSU benutzt wird bzw andersrum.

Und was ist beim UART0 die gängigere Variante wenn ich mit dem PC 
kommunizieren will? CLOCK extern vorgeben, oder die interne CLOCK des µC 
nutzen?

Danke und Grüße,
Michael

von Michael T. (michelback)


Lesenswert?

habe gerade gesehen, dass man mit dem UART0 den Clock SYNCRONOUS mode 
einstellen kann. Mit UART1 geht das nicht(nur ASYNCRONOUS). Wird jetzt 
der UART0 für SSU verwendet? wenn das so wäre, dann könnte ich ja nicht 
per SSU auf die SLaves zugreifen und die Daten über UART0 an den PC 
schicken, oder?
Wäre es dann möglich den UART1 zu verwenden wenn der E8a-Debugger nicht 
angeschlossen ist?
Grüße,
Michael

von Olaf (Gast)


Lesenswert?

Also ich habe jetzt keine Lust fuer dich dein Datenblatt zu lesen,
aber bei manchen Controllern war es noch so das man die Ausgaenge
der RS232 auf einen anderen Pin umschalten konnte.
Wobei dir das aber nicht viel helfen wird wenn du nunmal den
Debugger an der seriellen laufen haben willst.

Bei neueren Typen, ich setze z.B einen R8C29 ein, redet der Debuger
mit dem Controller ueber die Resetleitung. Da kostet dich das
dann keinen Port.

Notfall musst du halt auf einen anderen Typen umstellen, oder auf
den Debugger verzichten.

Olaf

von Michael T. (michelback)


Lesenswert?

Hallo Olaf,
zum Glück hast du nicht nachgeschaut! Sind ja immerhin 550Seiten. Ich 
dachte nur, falls jemand schonmal was Ähnliches gemacht hat und da 
sofort Auskunft geben kann,wärs toll. Das mit dem Datenblatt durchlesen 
erwarte ich ja auch nicht, ich hoffe dass ist nicht so rübergekommen. 
Aber vielen Dank für die Rückmeldung.

Zum Problem: Falls es jemand anderem so ergeht wie mir, dann hab ich 
jetzt die Antwort (nachdem ich mich durch renesas durchtelefoniert 
habe):

UART1 ist für den E8a-Debugger reserviert. Damit sind nicht unbedingt 
die Pins am Controller gemeint sondern die SFRs. Der E8a wird beim 
R8C/22K nur über die Pins "Reset" und "Mode" angeschlossen.
Zur Frage SSU und UART0: SSU und UART0 sind zwei verschiedene Module und 
können gleichzeitig verwendet werden. UART0 wird demnach nicht für den 
SSU-Modus gebraucht. Das SSU-Modul Wiederum kann als SPI oder IIC 
konfiguriert werden.

Damit wäre zumindest für mich dieser Thread beantwortet.

Danke nochaml an alle und Grüße,
Michael

von Michael T. (michelback)


Lesenswert?

..ok, der Thread ist zwar beantwortet, aber jetzt habe ich noch eine 
Hardware-Frage:

Was muss ich beachten, wenn ich ein entsprechendes USB-to-RS232-Kabel an 
die UART hängen will?
Muss ich den Ground-Pin des Kabels an das SchaltungsGND verbinden?
Brauche ich bei TDX oder RDX einen PullUp oder Pulldown?

Grüße
Michael

von Arc N. (arc)


Lesenswert?

Michael T. schrieb:
> hallo Arc Net,
>
> es hängen keine 24bit ADCs am µC. Warum fragst du?

Weil das, insbesondere noch mit den Details 4 Slaves davon 2x Speicher, 
sehr ähnlich zu einer Schaltung ist, die hier vor ca. zwei Jahren 
gemacht wurde. Controller war der R5F21228KFP (die 64 kiB-Variante), 4 
SPI-Slaves davon 2x M25P80...

> Und was ist beim UART0 die gängigere Variante wenn ich mit dem PC
> kommunizieren will? CLOCK extern vorgeben, oder die interne CLOCK des µC
> nutzen?

Hängt vom Rest ab...
- Controller läuft mit dem internen Takt:
  Siehe High-Speed On-Chip Oscillator Circuit Electrical Characteristics
  im Datenblatt, je nach Spannung/Temperatur und gewünschter Baudrate
  kann es klappen (man kann auch versuchen über FRA1 die Frequenz
  abzugleichen)
- Controller läuft mit externem Quarz/Oszillator:
  passende Frequenz (Baudratenquarz): kein Problem
  keine passende Frequenz: externer Takt für UART0
- Hängt PC und Controller ein USB->Seriell Adapter mit z.B. FT232R, sind
  auch "gerade"/"andere" Baudraten (500k, 250k etc.) möglich, was u.U.
  die Wahl des Controllertakts vereinfacht

> Muss ich den Ground-Pin des Kabels an das SchaltungsGND verbinden?

Ja

> Brauche ich bei TDX oder RDX einen PullUp oder Pulldown?

Nein, keine externen, die internen Pull-ups im Controller reichen 
normalerweise

> Der E8a wird beim R8C/22K

Vorsicht bei den unterschiedlichen Varianten R8C/22 != R8C/2k ;-)

von Michael T. (michelback)


Lesenswert?

Hallo Arc net,
Danke für deine Hinweise, du hast natürlich recht: es muss R8C/22 
heißen!
Ich werde auch einen USB-RS232 Adapter in Form eines Kabels benutzen. 
Mit Hterm kann man da scheinbar gut mit "spielen" und verschiedene 
Baudraten einstellen.
Ich verwende ein externes 10MHZ Quarz für den µC. Aber ich glaube ich 
kann die Baudrate im µC einstellen, zumindest in einem begrenzten 
Bereich.

Eine Frage ist noch offen: Brauche ich Pullups oder Pulldowns an TXD 
oder RXD?

Grüße & Danke,
Michael

von Gast (Gast)


Lesenswert?

http://www.renesasrulz.com/message/7365#7365

Dann ist diese Frage auch geklärt?

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Michael T. schrieb:

> Eine Frage ist noch offen: Brauche ich Pullups oder Pulldowns an TXD
> oder RXD?

Nein. Du brauchst aber einen Pegelwandler, wenn dein USB-RS232 
Adapter RS232 Pegel hat.

von Michael T. (michelback)


Lesenswert?

ah ok, dann ist es in ordnung. Ich habe extra ein Kabel rausgesucht, in 
dem schon alles integriert ist. Pegelwandler ist auch dabei.
Vielen Dank, dann kome ich erstmal weiter. Ab jetzt gehts wahrscheinlich 
mit Softwarethreads meinerseits weiter ;)
Grüße,
Michael

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Welches Kabel hast du genau? Man kann "Pegelwandler ist drin" auch 
lesen als "es ist ein Pegelwandler von USB nach RS232 drin". Das würde 
dir nicht weiterhelfen, weil du auf R8C Seite auf TTL kommen musst. Die 
Werte für die TTL High/Low Pegel hängen von Vcc (5V, 3,3V, ???) deines 
µCs ab.

von Michael T. (michelback)


Lesenswert?

Oh, ok also ich werde wohl folgendes Kabel bestellen:

http://de.farnell.com/ftdi/ttl-232r-3v3/kabel-usb-ttl-level-ser-konverter/dp/1329311

Meine Versorgungsspannung am µC ist 3.3V. Ich hoffe das passt?
Vielen Dank für die nochmalige Nachfrage!
Grüße,
Michael

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Sieht gut aus. Mir gefällt besonders die Vielfalt unterstützter 
Betriebssysteme.

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.