2017-10-24 23 views
1

Linuxのシリアルポートに1.5ストップビットを使用できますか? POSIXではこれがサポートされていないようです。 POSIXインタフェースで1.5ストップビットが2ストップビットとして解釈されるpyserialのソースコードを調べました。シリアルポートのサポートコードのモノラルソースコードでは、1.5ストップビットは単純に処理されません。 1.5ビットのストップビットをサポートするために、LinuxにPOSIX以外の可能性のある/ドライバがありますか?おそらくFTDIまたはsilabsドライバを使用していますか?Linuxシリアルポート1.5ストップビット

答えて

1

シリアルコントローラと必要なワードサイズとは何ですか?通常、5ビットワード(CS5)の場合、CSTOPBフラグは、1または2ではなく、1.5ストップビットが送信されることを意味します。

例えば、8250 UARTため、Linuxは(drivers/tty/serial/8250/8250_port.cで)これを行う:

static unsigned char serial8250_compute_lcr(struct uart_8250_port *up, 
              tcflag_t c_cflag) 
{ 
     unsigned char cval; 

     switch (c_cflag & CSIZE) { 
     case CS5: 
       cval = UART_LCR_WLEN5; 
       break; 
     case CS6: 
       cval = UART_LCR_WLEN6; 
       break; 
     case CS7: 
       cval = UART_LCR_WLEN7; 
       break; 
     default: 
     case CS8: 
       cval = UART_LCR_WLEN8; 
       break; 
     } 

     if (c_cflag & CSTOPB) 
       cval |= UART_LCR_STOP; 
[…] 
     return cval; 
} 

UART_LCR_STOP0x04として定義されます。

According to this documentation of the 8250 UART別れている場合、LCRレジスタのセットのビット2は

ストップビット= 1.5 5の​​ビットワードまたは6 2、7又は8ビットワード

手段UARTでは、カーネルソースを見て、POSIXフラグがハードウェアにどのように渡され、ワイヤにどのような影響があるかを確認する必要があります。

+0

Windowsは1.5ストップビットをサポートしているので、シリアルポートインターフェイスはクロスプラットフォームでなければなりません。これは、POSIX以外の方法であれば、linuxでサポートされているかどうかを知りたかったのです。 'CSTOPB'がセットされているときに、2ビットの代わりに1.5ビットのストップビットを持つ5ビットワード(または何でも)を扱うソースコードを指すことができますか? – robotrovsky

+1

8250 UARTで何が起こったのかの説明を追加しました。それが役に立てば幸い。 –

関連する問題