Forum: Mikrocontroller und Digitale Elektronik ARMv7 Controller mit 9-Bit UART


von Harper B. (harper)


Lesenswert?

Ich habe vor, eine Software von einem proprietären x86 System auf ein 
ARM mit Linux zu portieren. Als Mikroprozessor sollte ein Cortex-A7 
verwendet werden. Dazu könnte ich ein Board mit i.MX6ULL benutzen. 
(https://www.nxp.com/products/processors-and-microcontrollers/arm-processors/i-mx-applications-processors/i-mx-6-processors/i-mx-6ull-single-core-processor-with-arm-cortex-a7-core:i.MX6ULL)

In dem System gibt es aber einen RS485-Bus, der bisher über einen 
Co-Controller angesteuert wird. Der Grund dafür ist, dass das Protokoll 
9 Datenbits verwendet.

Nun haben die ARM Prozessoren üblicherweise nur eine 8-Bit UART. Man 
könnte vielleicht etwas aus der Xilinx ZC7000 Reihe verwenden und die 
UART in VHDL implementieren. Aber das scheint etwas überdimensioniert zu 
sein.

Gibt es eine andere Lösung ARM Cortex-A7 mit einer 9-Bit UART 
auszustatten?

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

ARMv7 oder Cortex-A7? Es gibt eine Unzahl an ARMv7-Systemen, dazu 
gehören eben u.a. der Cortex-A7 aber auch Cortex-M3/4/7.

Muss es denn der Cortex-A7 sein, geht auch A5, A8, A53, ...?

Der Microchip SAMA7G54 Cortex-A7 kann anscheinend 5-9bit UART (via 
FLEXCOM).

von Harald K. (kirnbichler)


Lesenswert?

Guck mal hier:

https://github.com/linux4sam/9bit

Das sind allerdings nur Cortex-A5.

von Dieter S. (ds1)


Lesenswert?

Zumindest der i.MX 6Solo/6DualLite kann laut Reference Manual:

- 9-bit or Multidrop mode (RS-485) support

- 7 or 8 data bits for RS-232 characters, or 9 bit RS-485 format

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

PS:

Niklas G. schrieb:
> A53

Ist ein ARMv8, nicht v7, aber auf Anwendungsebene kompatibel - ist das 
ein Problem?

Mikroprozessoren/Anwendungsprozessoren/MPUs würde man eher nicht als 
"Controller" bezeichnen. Das, was man landläufig als Controller kennt, 
ist üblicherweise nicht (praktikabel) für Linux geeignet.

von Andreas B. (abm)


Lesenswert?

STM32MP1xxx Cortex-A7, und die Peripherie ist mehr oder weniger 1:1 die 
von den STM32-uC, die können (fast) alle 9 Bit, Parity, CTS/RTS und 
"Driver Enable" (für RS-485).

von Frank K. (fchk)


Lesenswert?

Harper B. schrieb:

> Gibt es eine andere Lösung ARM Cortex-A7 mit einer 9-Bit UART
> auszustatten?

Du könntest einen kleinen PIC als RS485 Controller verwenden. Der hier

https://www.microchip.com/en-us/product/PIC16F15325
https://www.digikey.de/en/products/detail/microchip-technology/PIC16F15325-I-SL/6593043

hat nur 14 Pins und zwei recht flexible UARTs mit LIN und 9-Bit Daten 
und 9-Bit Adressmodus. Die Kommunikation mit dem Linux-System kann dann 
entweder über den anderen UART oder über I2C erfolgen. Dieser Weg ist 
mit Sicherheit deutlich einfacher als den Linux-Treiber eines speziellen 
UARTs zu 9-Bit plus RS485 Support (Ansteuerung von DE/!RE) zu überreden, 
weil die ganzen kritischen Dinge im PIC gekapselt sind. Das macht dann 
auch einen Umstieg auf einen anderen Linux-SOC trivial.

fchk

von Harper B. (harper)


Lesenswert?

Dieter S. schrieb:
> Zumindest der i.MX 6Solo/6DualLite kann laut Reference Manual:
>
> - 9-bit or Multidrop mode (RS-485) support
>
> - 7 or 8 data bits for RS-232 characters, or 9 bit RS-485 format

Ich habe mir das Datasheet IMX6SDLIEC.pdf heruntergeladen. Hier wird 
zwar auf Seite 6 "Supporting 9-bit multidrop mode" erwähnt. Auf Seite 17 
ist dann aber plötzlich nur noch "7- or 8-bit data words" zu finden.

Hast Du einen Tipp, wo das Reference Manual zu finden ist?

von Harald K. (kirnbichler)


Lesenswert?

Frank K. schrieb:
> Du könntest einen kleinen PIC als RS485 Controller verwenden.

Das scheint er umgehen zu wollen:

Harper B. schrieb:
> In dem System gibt es aber einen RS485-Bus, der bisher über einen
> Co-Controller angesteuert wird.

von Dieter S. (ds1)


Lesenswert?

Harper B. schrieb:
>
> Hast Du einen Tipp, wo das Reference Manual zu finden ist?

Ich habe hier "i.MX 6Solo/6DualLite Applications Processor Reference 
Manual Rev. 2, 04/2015", die "Rev 3" gibt es hier:

https://community.nxp.com/pwmxy87654/attachments/pwmxy87654/imx-processors/134104/1/IMX6SDLRM_Rev3.pdf

Wenn man nach "imx6" "linux" UART" "9-bit" sucht findet man auch einiges 
an Hinweisen wie das Ganze unter Linux aussieht.

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.