Problem serielle Komm. RS232

  • Hallo,
    Ich schreib es mal unter Hardware obwohl es auch evtl. ein Softwareproblem ist.
    Problem ist die serielle Kommunikation über die normale COM-Schnitstelle und ein Max232 mit einem Microcontroller. Über den Bootstrapmode möchte ich auf das jeweilige interne oder externe Flash der MCU zugreifen. Das klappt auch soweit allerdings kommt es ständig zu Verbindungsabbrüchen der RS232 Kommunikation. Genutzt werden verschiedene Programme wie der Flasher von ST oder Phytec oder Flashit. Das Problem tritt bei allen Programmen mehr oder minder stark auf, beim ST10 Flasher funktioniert es halbwegs wenn ich eine ältere Version nutze. Was allerdings besonders merkwürdig ist, daß das Verhalten mit steigender Baudrate besser wird, bei niedrigen Baudraten bricht er fast direkt nach dem Start ab. Ich schaffe es aber mit dem Fehler nicht wenigstens den kpl. Sektor eines Flashs zu schreiben, daher wäre Abhilfe nötig.
    Alle Einstellungen des Comports am PC habe ich schon durch (verschiedene Baudraten, mit / ohne FIFO - alles kein Unterschied)
    Ich habe es auch mit einem anderen Rechner probiert, gleiches Problem-es wird jeweils eine "richtige" RS232 Schnittstelle am PC genutzt-kein USB-RS232 Wandler, daran kann es also nicht liegen. Sollte jemand mit der Problematik Erfahrung haben wäre ich für kurze Info dankbar.
    Gruß
    Andy

  • unter welchem Betriebssystem läuft das ganze ?
    ich hatte mal den Fall, dass unter XP Kommunikation abbrach wegen CPU-Powermanagement;
    Testen kann man das, indem man die CPU beschäftigt, so dass die nicht in C2 bzw. C3 geht
    Gruß
    Chips

  • Die Datenblätter auf der Infineon Seite willst du nicht?


    6,144MHz x 2 oder 4 ist eine gute Variante. Aber auch bei 20MHz sollte der Fehler eigentlich klein genug sein. Zumindest bei niedrigeren Baudraten -


    Table 11-2 ASC0 Asynchronous Baudrate Generation for fCPU = 20 MHz
    Baud Rate S0BRS = ‘0’ S0BRS = ‘1’
    Deviation Error Reload Value Deviation Error Reload Value
    625 KBaud ± 0.0% 0000H – –
    19.2 KBaud + 1.7%/ – 1.4% 001FH/0020H + 3.3%/ – 1.4% 0014H/0015H
    9600 Baud + 0.2%/ – 1.4% 0040H/0041H + 1.0%/ – 1.4% 002AH/002BH
    4800 Baud + 0.2%/ – 0.6% 0081H/0082H + 1.0%/ – 0.2% 0055H/0056H
    2400 Baud + 0.2%/ – 0.2% 0103H/0104H + 0.4%/ – 0.2% 00ACH/00ADH
    1200 Baud + 0.2%/ – 0.4% 0207H/0208H + 0.1%/ – 0.2% 015AH/015BH
    600 Baud + 0.1%/ – 0.0% 0410H/0411H + 0.1%/ – 0.1% 02B5H/02B6H
    75 Baud + 1.7% 1FFFH + 0.0%/ – 0.0% 15B2H/15B3H
    50 Baud – – + 1.7% 1FFFH

  • Andy, Du hattest PM...

    "As we know, there are known knowns. There are things we know we know. We also know there are known unknowns. That is to say we know there are some things we do not know. But there are also unknown unknowns, the ones we don't know we don't know." (Donald Rumsfeld)
    "Ich weiß, dass ich nichts weiß." (Sokrates)
    "Ich weiß nicht mal, dass ich nichts weiß." (Simba2)
    "Ich weiß' alles" (Alpina-Katze)

  • Die Flasher die ich kenne benutzen kein Handshake, nur RXD, TXD (Pin2, 3 und GND 5). Die Handshakeleitungen werden oft für RESET und BootStrapLoaderMode mißbraucht. Aber soweit geht's ja offensichtlich schon.


    Ich würde für den Anfang eher Baudraten <38400 probieren. Möglicherweise hast du aber auch ein IRQ Problem in deinem PC. Wenn du die COM1 verwendest, sollte diese den IRQ4 _alleine_ haben. Also kein anderes Gerät darf diesen benutzen. Ev. im Bios im PNP/PCI setup IRQ4 als 'used by legacy device' setzen und versichern, daß diesen wirklich kein anderer benutzt.

  • Zitat

    Original von Rafiki
    Möglicherweise hast du aber auch ein IRQ Problem in deinem PC.


    unwarscheinlich:


    Zitat

    Original von Andy72
    Ich habe es auch mit einem anderen Rechner probiert, gleiches Problem-es wird jeweils eine "richtige" RS232 Schnittstelle am PC genutzt-kein USB-RS232 Wandler, daran kann es also nicht liegen.


    Gruß Uwe

  • Miss mal die Bitzeiten auf PC/Target-Seite.
    Ich vermute mal, dass der Baudratendivisor auf µC-Seite für einen
    anderen Takt gilt, bei geringem Divisor matcht der Fehler die
    Abweichung (wenn auch etwas unwahrscheinlich).

    "As we know, there are known knowns. There are things we know we know. We also know there are known unknowns. That is to say we know there are some things we do not know. But there are also unknown unknowns, the ones we don't know we don't know." (Donald Rumsfeld)
    "Ich weiß, dass ich nichts weiß." (Sokrates)
    "Ich weiß nicht mal, dass ich nichts weiß." (Simba2)
    "Ich weiß' alles" (Alpina-Katze)