SYNTAX
#include <hostmot2-serial.h>
int hm2_uart_setup(char* name, int bitrate, s32 tx_mode, s32 rx_mode);
BESCHREIBUNG
hm2_uart_setup Setup the bitrate for the UART named "name".
"name" is a unique string given to each UART during hostmot2 setup.
The names of the available UARTs are printed to standard output during the driver
loading process and take the form: hm2_<board name>.<board index>.uart.<index>,
for example hm2_5i23.0.uart.0.
The minimum bitrate is approximately 50 bps, and the maximum around the FPGA frequency, 48 MHz for a 5I23.
The UART function allows different RX and TX bitrates, but that is not currently supported by this driver.
rx_mode ist eine Bitmaske, die in der Hostmot2-Regmap definiert ist: Bit 0..3:: TXEnable-Verzögerung. Die TXEnable-Verzögerung gibt die Zeit an, um die Übertragung der Daten nach dem Aktivieren des TXEnable-Signals zurückzuhalten. Dies wird beim RS-485-Betrieb (Halbduplex) verwendet, um die Datenübertragung zu verzögern bis der Treiber vollständig aktiviert ist, und berücksichtigt dabei Verzögerungen durch die Treiberaktivierung, Isolationsbarrieren usw. Die Verzögerung wird als Vielfaches der ClockLow-Periode angegeben. Bit 4:: FIFOError. Diese Meldung zeigt an, dass ein Push-Vorgang des Hosts den FIFO überlaufen hat (hauptsächlich zur Fehlersuche im Treiber gedacht). Bit 5:: DriveEnableAuto. Wenn aktiviert, wird der Treiber automatisch eingeschaltet, sobald sich Daten im FIFO oder im Sendeschieberegister befinden, und wieder deaktiviert, sobald beide leer sind. Bit 6:: DriveEnableBit. Wenn DriveEnableAuto auf 0 gesetzt ist, steuert dieses Bit den Treiber manuell (für die softwareseitige Steuerung der Sendetreibersignale).
rx_mode ist eine Bitmaske, die in der Hostmot2-Regmap definiert ist: Bit 0:: FalseStart Bit Status, 1 = falsches Start-Bit erkannt Bit 1 = OverRun Status (Überlauf), 1 = Überlauf erkannt (kein gültiges Stop-Bit) Bit 2:: RXMaskEnable, 1 = RXMask für Halbduplex-Betrieb aktivieren, 0 = RXMask Bit ignorieren 4 = FIFOError, zeigt an, dass ein Host-Lesevorgang versucht hat, mehr Daten zu lesen, als verfügbar sind. (hauptsächlich für Treiber-Debugging) Bit 5:: LostDataError, gibt an, dass Daten empfangen wurden ohne Platz im FIFO, daher verloren Bit 6:: RXMask, RO RXMASK Status Bit 7:: FIFO hat Daten
Die Register rx_mode und tx_mode sind derzeit schreibgeschützt. Möglicherweise sollte es eine get-status-Funktion geben.
Um nur das tx_mode DriveEnable-Bit zu schreiben, rufen Sie diese Funktion mit unveränderter Bitrate und -1 als rx_mode auf. Um die Bitrate ohne Änderung der Moduseinstellungen zu ändern, senden Sie -1 an beide Modi.
RETURN VALUE
Gibt bei Erfolg 0 und bei Misserfolg -1 zurück.
SIEHE AUCH
hm2_uart_send(3), hm2_uart_read(3)
Siehe src/hal/drivers mesa_uart.comp für ein Anwendungsbeispiel.