Probleme mit dem Arduino einen ARM chip seriell auszulesen.

Hallo liebe Community,

ich hab mal wieder ein problem und komm einfach nicht auf die Lösung.

Ich habe letztens ein kleines Projekt gestartet und wollte eine Platine über UART auslesen. doch leider kommt mit jeder baudrate bit stop bit ein unleserlicher text raus. ich habe auch nachdem ich am verzweifeln war versucht einen Netgear Router über die rx und tx Anschlüsse auszulesen und siehe da sofort einen leserlichen text über den Monitor gesehen.

der Aufbau sieht wie folgt aus:

Arduino atmega 2560 RESET auf GND gedrückt.
TX0 RX0 am board gehen zu dem arm chip (stm32f103) PA2 und PA3.
vom Arduino GND geht ein draht zum GND von der Platine und auch die +5V Leitung vom Arduino geht zum 3,3 volt regulator zur Platine.

danach bekomme ich auch ununterbrochen daten die ich aber nicht lesen kann.

ich habe auch ein paar fotos um es vielleicht ein bisschen einfacher zu erklären..

auf der Platine die ausgelesen werden soll ist ein gyroscop (MPU 6050) verlötet. die Platine selbst funktioniert tadellos am eigentlichen Gerät.

Kann mir wer sagen was ich falsch mache und warum ich nichts anständiges rausbekomme?

und hier einige Bilder über die pins von dem stm32f103:

Danke schonmal!

Also, ich würde da einen Logikanalayser/Oszi anschließen, und mir die Frames anschauen, und ausmessen.

Wenn du schon einen Mega hast dann solltest du da nicht Serial/Serial0 nehmen. Das ist die USB Schnitstelle zum PC. Die hast 3 andere serielle Schnittstellen!

Dann solltest du nicht 5V vom Arduino mit einem 3,3V System verbinden wenn du nicht weißt ob die Eingänge 5V tolerant sind. In die andere Richtung geht es. 3,3V werden geradeso als HIGH erkannt. Da du nur empfangen willst reicht es das Signal auf den RX Pin zu legen.

Weißt du welches Datenformat das ist? Der Arduino arbeitet normal mit 8N1. An den Hardware Schnittstellen (aber nicht mit den Software Bibliotheken) kann man auch andere Formate einstellen.

hab leider nur ein altes oszi... sieht aber soweit richtig aus.

zu dem 5 und 3,3v hast du natürlich recht. aber für rx wie du sagst reicht es aus.

von dem datenformat kann ich leider nichts sagen. die Platine kommt direkt aus china und die hüten ihr Geheimnis leider sehr.

wie kann man die formate denn einstellen?

und was meinst du mit andere Schnittstellen hernehmen?

danke schonmal für die schnelle info!

AndiIsl:
TX0 RX0 am board gehen zu dem arm chip (stm32f103) PA2 und PA3.
...
Kann mir wer sagen was ich falsch mache und warum ich nichts anständiges rausbekomme?

Die Pins RX0 und TX0 sind auf dem MEGA2560 Board mit dem USB-Serial-Adapter auf diesem Board verbunden, einem ATmega16U2 Controller. Du findest diesen Controller neben dem USB-Anschluss des Boards. Und sobald Du in Deinem Programm Serial.begin() aufrufst, steuert der ATmega16U2 über die Pins RX0/TX0 die Serial-Schnittstelle des Atmega2560 an.

Wenn Du an RX0/TX0 noch zusätzlich einen anderen Controller (z.B. stm32f103) anschließt, baust Du wohl irgendwie so eine Art Controller-Kampfarena, mit der Du austestest, welcher Controller als Serial-Adapter mehr Strom an RX0/TX0 liefern kann:

  • der ATmega16U2 auf dem MEGA Board
  • oder der (stm32f103)

Da die 8-Bit Atmega Controller meist bis zu 40 mA liefern können, während 32-Bit Controller an ihren Pins schon bei viel kleineren Strömen die Segel streichen, dürfte als Serial-Adapter der ATmega16U2 an RX0/TX0 den Kampf gewinnen.

"Serial" Schnittstellen sind immer Point-to-Point Schnittstellen, mit denen Du genau ZWEI Geräte verbinden kannst. Aber Point-to-Multipoint Verbindungen zwischen DREI Geräten (Atmega2560, ATmega16U2, stm32f103) kannst Du mit einer seriellen Schnittstelle nicht aufbauen.

Vielleicht schließt Du Deinen stm32f103 einfach besser an Serial1 an, also RX1/TX1 und nicht an Pins, an denen auf dem MEGA-Board bereits was anderes angeschlossen ist, und zwar der ATmega16U2, der über USB-Kabel eine Serial-Verbindung vom MEGA2560 zum PC herstellt.

wie kann man die formate denn einstellen?

Was völlig exotisches wird das aber nicht sein. 8N1 ist wäre schon zu erwarten. Da jetzt alle Optionen mit allen Baudraten zu probieren wäre etwas viel Arbeit.

und was meinst du mit andere Schnittstellen hernehmen?

Der Mega hat 4 Hardware Schnittstellen! Das normale RX/TX an 0/1 ist die USB Schnittstelle

Du kannst z.B. Serial1 für die Verbindung nehmen:

Dann kannst du was da ankommt an Serial weiterleiten um es auf dem PC anzuschauen

Alternativ:
Besorge dir einen 3,3V fähigen USB/seriell Wandler und hänge das Teil direkt an den PC. Dann kannst du mit einem Terminal Programm einfacher die Optionen durchtesten

das hört sich alles schon sehr vielversprechend an Leute! danke für die Aufklärung. man sieht wie weit ich denke :smiley:

alternativ wär das natürlich hammer aber dafür bleibt keine zeit :smiley: DANKE das probier ich gleich mal aus.

einen besonderen sketch brauch ich nicht oder? falls wer was fertiges hat kann er mir damit behilflich sein :stuck_out_tongue: (faul bin ich auch noch)

ich halte euch auf dem laufenden!!

Einfach sowas:

void setup()
{
   Serial1.begin(9600);
   Serial.begin(9600);
}

void loop()
{
   if(Serial1.available())
     Serial.write(Serial1.read());
}

Schaut nach ob was an Serial1 angekommen ist und wenn ja gibt das Byte auf Serial aus

perfekt mit deinem sketch bekomm ich mehr raus als mit meinem :smiley: trotzdem nur Grütze.. und auch komisch ist das ich den rx pin anfassen muss um gleichmäßig etwas zu bekommen. ist sowas normal?

4W�U�����7��u�,�����������=���a��'�������
����s�M���
�c�.��e@�e.��@�e�ye��@�e�-ye��|=��;.����
���;����|,)-��{��|.���F������{	w�|���yCw���;y�?�w�Ly]��-}�y��-}	�y��=iyHy�_����3������D���������������
���������g
�a�������z��������?���a������������������������� �	�p��.?x���
9��� ����!�=��13����S�#�@��� �rA1B`�sw�6�a@k>�!`'�� @��������|�����!�
$������X���L������7�����w|��>��������� ��|}ܮ˷3?����7h���M@7�<�9��@��8a9@����0�@� R��R��$I`>� "��� H���@ BA� :BC�P�J=��BY� ��]�Y��7�Rr��*
`�@�8<�B �,����������h�����(���������Ga������/��6�m���<�8�4�����yn�����w�A���� �0  ]���%����������&D��@���h(C���(������"�����`��������a(���` ����@�4��
����;%����!����O����%�4X�������������&�O6F����� ����3���������<����P�D�m� ��h���00���`�p���e8n�l����h������0z���>�P�
`и���w���������c�p������y�Ԏ����}��@���^� ���
��d`���`�������R0��s���� ����`���������nL���d� ��Ͻ����&�������#�gb�b���B�����@!�E��
	p��@����7y�������=����`�8���ߝ�����-�G�B��<h=N9�(���ff`�����!���o������ws���<��������/ޮ�bp�_����=� @�����u m��a)� ��u�����9�������5��'#�����<����H���	0(���9���#��o}$�4����"�#�@p���.c���5����1�oi
 �P��#���������-�hwc�� �p�� ���m��Po��
���w>�Vo��B��}d�)��(�s�o����4���R
7�w�����P w�/��d����-|�F����`(O������5��d�V>���wHOh�w��@��j����@hP�=(@�����j����,h����w_�� ��/�xl��a=����0@w���/)J8���)���/�8����,���m�O,<���#--(��w��	@��>��-
�D�/�=�����hc��um���!� ��k�� �����d���D(���?N�0�����N
`���9`�	#��|��z�!`s��s�	����a#����w�	���������w����/��	�7����d�L�������.��h-�M��9���/�
�&����h�������pC����	���#@����cy���o6 ����o

���7�D��:���r��{�B�$g��
}��/,���瞍����A������ cg������d��m7� c�����H��?v�����m>���w�w� ��=������ 8��{��@�s�O��>~���0��s��g=��@
~�i_l���� #���� 	v��q=�<>���	a�n/7`����!���3t�o=��������������@ ��!2`�����n�#.O�����8@1^���.��k�'��	������a������ ����m�0����~������ m����gp�����M0����S� -��#�1 ���61��'7�����׍ ����2���s�2���1���9��#T����s������FC����-& �����g5��>����CP��n�l!��0��߇wd���#F 8�R�����l�����>^s���d�����~���-��_����s��o-`��	��'�� �o�0 @@-��!�  ������,������@�\�����`���5�����	 0,�?�������A ,4��Ҍ�`Fiu�_(������-�`������p�������c1�]���d�����`�������
`�`��q1�d���s&�<���	���s���?���F�1�	���  �#��������l���P����ga�@����0!���F���=�����E��W��D\�������o�W��,����s	a"���/�	3-��cg��O���~�'�J����J -�����h�!���V� ��g������g�=�������!��T����?�/��tc�L�fg���
 l���} 
�}��1  �	��}' �����.��(���?}�������`@h��W`����'0	#�����k�$������a���׏�������'
���L����!(���g	0	��a!���^�Q���c -����'�`�M�/ @(�^����g�H��y 2��w��������������8����0D�/gg�&���< ������1�?�P���s��"���ӭ�9��@�Ơ"y�����`����L��@b��������7��m�o���'�� 
�c�,�.އa� ���������w�1P|����&w��	�o��7a�����7�ż?�7 ��V ��������/4� �o�p�����>��O)��g��g��c��3�� �O��?����������	��|��<��p> dL � ��
������������� ����

Es kann wie gesagt an der Baudrate oder dem Datenformat liegen. Wenn die völlig falsch sind kommt aber eher gar nichts als Grütze heraus.

Bist du sicher dass das Ding ASCII sendet? Und nicht rohe Binärdaten? Der Serial Monitor kann nur ASCII.

ich bin mir bei sowas überhaupt garnicht sicher! das teil ist eben aus einem hoverboard was die coolen kids fahren und ich möchte eben wissen wie das ding funktioniert. ob da binär oder ascii raus kommt weiß ich nicht.

die daten gehen aber auf alle fälle zu einem anderen arm microcontroller weiter der die Motoren steuert. da ein gyroscop auf der Platine ist die ich auslesen möchte dachte ich da kommt ascii bei raus.. aber nunja wie kann ich denn auf binär testen?

Google nach HTerm. Da kannst du das Format einstellen. Dass dann aber richtig zu interpretieren ist auch nicht so ganz einfach. Wenn es ASCII ist und du Dezimal oder Hex einstellt zeigt er dir halt den Zahlencode des Zeichens an

Ein Anhaltspunkt wäre zu sehen ob da regelmäßig ein CR und/oder LF kommt um eine Zeile abzuschließen. Dazu muss aber eben auch erst mal die Baudrate richtig haben.

auch komisch ist das ich den rx pin anfassen muss um gleichmäßig etwas zu bekommen

Damit stellst du eine Verbindung ins Jenseits zu deinen Ahnen her. Was du siehst, stammt nicht von deinem ARM chip, sondern von dort. ;D :stuck_out_tongue:

Hast du GND sicher verbunden ?

hahhahah gut dann hoff ich mal das die ihre klappe halten wenn ich da nix anfass.

und ja das board läuft über die Versorgung vom Arduino! natürlich ist der 3.3 v regulator mit eingebunden. ich kann auch Spannung messen. es sind genau 3.3 v wenn ich GND weg mach und wieder hin tut sich auch was beim seriellen monitor.

hab jetzt mal auf 7n1 9600 gestellt und siehe da es kommt etwas raus ohne Fragezeichen!

[code]
p!W;E; b7s@;;@s7bPBbg-x@Bbg5B3bg@-x bg@;0sgnB

v^x_L!<XL! (^na.xavt,(^vt (^La] _BwB^:
@:
(@
7q736sV.:(
71sSn:
( sW!Sa9a@:y]X`eV]XHh?hMHP^yr^ =^H=^@yay0(}0@>.?Pp6B@P7.2w.'p5,(.@
hMH !!9!G^9!@dOp

(a1!aa9!p^^ MHGay yq@N, __%7}sslh__8_nqswowa#]-aq ?cX?9%N|;],%L v@X(9 9 Xh9sX 8yyqsM@qs9sa3L}sq!yaiHh 9ahaM8 a@ahaai%2%r'Bs(: M!w@!!W@a% kp8i8l}ndPaah Cy8I.@=ZZ(PPNh@3v~ @@y8H+%ip-phy-@NVxX}xx7(X}8
x8}xx~8>T-q}8Jxxx~x7}8}8Jxxx~P97?X.99n-!7mh8k.999P.y*HN~.P g~.]y7n~l\y7n~l\0v8lX0vn8@v ~v~x6x~xXdx/T!yw!x8
w!x
7!! <x}x8
awa }xh @ (=xh/(
Hoh
D9--ma
809h +ip a9m@ 99mP/mF9mqai7
@9a !wj9a^9_7xdo@7ZnxdoZ,xd_8R,@xd_x(g4xd=L?Rt}pd@?nt}pfhxhX6--hY-- -9a-/-yY-/y7im--h-9-!L8hH9!!7@8hmH9!!w kt997hHmh7h w!?l!!w/7!( !!wA07!(@.}07!(+w47 @ayP=yypy TDy />y9 8~h]y- }y!ph (=y!!=P_~xX}Tw~xX}_B!!}5w/a,!!5 .99 !!7!n99a@.m07!h h8 7!m99-m@ 9h. 8P-h ,
8qaiyP-mpaVyj
8nDh/
xn0h<8^V._N^X0y?n!aXw?nwBXw?nwgo/P>,w^XXh>lw!i^XX@>,w!<XH H^^H.yoB H19mBlhHHlhHh
h9--9eV H 9/B5--^9!BXM8@hHXXMx09!Bg cw09!Bgcw8WBBg0]xpBBg ]xN. 0wa . D 7a0h d 8zbV dXm h dV^z-<- 8 @$hp_-h DV 8@bV
@XHhV!MXHhBMH(8
7!MHy8
7Mh@MHhM-W8:!!M!7!Ba88M HhhcwP7!-ycVx7!-yh-y/P^F=my-^yb'(^yb$y- h? y-^h-yb6( -yb6@|y^@h?D^Xb67X(^0wb6wg(\ww(H}8M8:@Mh8"w(W@DhN8V
@49/-@ V
H(89/-9h9/-9&/9-!T
9 my!a
X]@hXx-!] 7 !w?w!aF]ia F] Xx L]Jlaa !7?!a\]Hv!a\d
8
Fpx19
8F\x19-mh@x19-gFVqt_Dh@v8.Dh v8L988$ 7!!a ! H(8:7 . H7!!M9!a =88==8Hmmwmowm/a-mWcX=8(8h?8=8( 8h?8=8Hoic?8h-=81PCcsH=818hnyCx<c.P?xx-inaT ^Thj7pm^p_sm^(,J.
do9@gS/o(99gS/p1^(@J-@1^(how-^8ha %i9 ( 9sh-8~8h=jt-8@ccyc9-#@ccyc@V-# @ccy#9cC #cyCl-(H=ph/8TcmucyommuVomo}0woP.}S0woO.}SemnN.S99[H.@99[ X}SHo}SHT `}Q(
Ph @a9O.(@!9( @Aa9#( Sh-(@(hi 79c/hmmu3wCm`mo=.Cm@X=8@wCm@o=8wcmw=|mmuwom/ow8=888h?@=88\h?=8xoV=8x>nVoz8x.`Vy x8x.@Vy*;(m09o9 mUy*[PC.Py*{ T.(0O5
x.( 5mp,(`J9 p,(@PJ9,(5m-@-3w--,s/9cQc-iicvyiicyc-yXycCyc-yycC-yccyc#`ccyc9cC(h/x0yco_ph-x]Dg*w@g8-x1@omg7m9gwg-xS-P@@9-@mgQH@9^jt`m^(Vjt(( Ac9X(tc9(>c9=8(3h8@ch
cym8hH=h?mcw
mwom\H@.-ma@mh8dumm7hX=N.X}N.8(=0=8h=s =8(h8h?3#9c(X8H=3H9CO mia@=8(@\h?3hapx68^V=3h]x688ys78(88=1X
cOr
@8y8|s7(88 . m`7f@w8(yc@V-X/(h(iwciccy(-8ayccyO#cy#c:h-|l-tpvcph/j(
pa
y6H<9Ph88~ha9m@V88[8m5
a9c7-m/]87
(J8m5mo8
@V.
J8kxh@
HP8(H@79c`m(h0-p(p 8(,o'wB`
`B@ 9`/x`p_6@@>@1(H
BBBh$hi@QD"B@@@@X@De@ID@@0Bw88uHhBBBB
DH

ha 9.BBB9W8@h
BB
pa>.9>!OP95x.hNx.0Nlw8J
lB&%,(lWei(@h;^hH^^y^B^y^^H^^i^h9%wT88wPBB8
88
x(5x@N8J.d8 g.@8H^lab8(L>(`f(^@ftLxh (^0^yBBxX~hX`h@."gV0w8w8G.d8h88h

(=hh
H=aVxT8y@Dh
(pB^y(
(8yh
h=L9=^@yl898Rl8y8}H.(\@8(^@8F(^@`p6^``(\a@H@yFVV@yNV]yHHhh8
r888
H8887@88&78d88L.81
xDn83n^80748THWTD@vb\P<yHxP<y8H@TFVt
FVHva\y1
<
(88
8
w@9@8
`8.88a@,
807hh
8
hcV@@
(98(X_h
8(PhEb
8(@t
8(h@P
88!ibw98(8
x(88@.
@8@0=|}oa,=|}|y?|4}oyW||4}<t,`|}<<,}|,}<,},}~<,},}k|<i,|,<i<c9<,
O,}<i<,=|,}+ee=P,}t94wP,4++},+;yX{w++;y0{w7{;wk{+wK`+;9+}{e-} {ewK
}eeP,}0<ipy<XiI~<,Xi<,aXk<B<,
,o9@<w,o<l_w }<tw<?w49W@}tt4twP7t {W;m4t,mky?@i;ee6m
v4,mXX4nr{4n9 @n1907tv{n{|Y@5t`X'~dqT~7.}dT?Wwgd }d@,}d Ny@d,,}ky<c, <<,}}<|iO,,}@=WP}<dw<d 7O+5m<7z<5<0g <\|*P euP@ei@8qil
mp{0yP<,jkX)jhab jetzt mal auf 7n1 9600 gestellt und siehe da es kommt etwas raus ohne Fragezeichen!

Q$Q d@7 @NHe
aPi`
H  9@p
 h1@`

Mt@
M@o**7w%tMt`<y*
7/|]dag>d]|']dw[WUWy|_}UW}_l,@yUy,',],,
>}ky,i{
y,P{kWy'
y,@
9,,?
y,hi
yg>}i
},,}@y,@
yE`kW? ,wE09$`W}g

bin ich auf dem richtigen weg oder eher auf dem Holzweg? :smiley:

Ich kann mich nur wiederholen:
Ohne die Datenframes pingelig zu untersuchen, ist das alles ein Ratespiel.

Selbst wenn du alle Schnittstellenparameter richtig eingestellt hast, kann da Binärer Kram kommen, welcher wie Kauderwelsch aussieht.
Nein, ich muss mich verbessern: Es ist hoch wahrscheinlich, dass dem so ist.

Ohne Oszilloskop oder Logikanalyzer ist das in der Tat nur Herumprobieren. Wenn man das Signal vernünftig darstellen kann (mit einem Analog-Oszi ist das sehr problematisch), dann kann man auch das Datenformat und die Baudrate herleiten.

hab jetzt mal auf 7n1 9600 gestellt und siehe da es kommt etwas raus ohne Fragezeichen!

Kein Wunder. statt 255 verschiedener Müll-Zeichen siehst du jetzt nur noch 127, die meisten im Bereich
' ' ... ' ~'

Ist trotzdem nur elektrischer Müll

Achso danke danke nochmal für die ganzen Aufklärungen!! ich kauf mir jetzt ein digital oszi mit Logik analyzer bei eBay. darf ich euch hier ein paar links zeigen ob ich das richtige suche? fall das von den boardregeln her nicht passt darf das gerne gelöscht werden.

http://www.ebay.de/itm/USB-Logic-Analyzer-16CH-100MHz-4CH-400MHz-Base-on-Xilinx-Spartan-6-FPGA-SDRAM-/281823826399?hash=item419e0251df:g:L4QAAOSwwbdWGOfw

http://www.ebay.de/itm/Hantek-6022BL-PC-Based-USB-Digital-Oscilloscope-16-CHs-Logic-Analyzer-TK-4TH4-/141763676777?hash=item2101c60a69:g:yM4AAOSwI-BWMDfw

passen die? und welches ist jetzt "besser" ? :smiley:

leider kenn ich mich da garnicht wirklich aus und finde den preis echt sehr günstig

Das Hantek 6022BL habe ich hier vor mir stehen.
Den Oszi Teil finde ich gut.
Aber den LA Teil nicht so. Da ist die Funktion, voll ok, aber die Software kennt keinerlei Protokolle. Ist also nur begrenzt hilfreich.

Da ist mir mein chinakracher: http://www.ebay.de/itm/171202927182(ähnliches Produkt) echt lieber.
Betreiben tue ich ihn mit: PulseView