問題タブ [uart]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - termios.c_cflagのCLOCALフラグとCRTSCTSフラグはシリアルポートにどのように影響しますか?
Linuxでハードウェアフロー制御ラインRTSおよびCTSを使用するようにUARTを構成したいと思います。http://linux.die.net/man/3/termiosによると、CRTSCTSはRTS / CTS(ハードウェア)フロー制御を有効にし、CLOCALはモデム制御ラインを無視するようにシリアルポートを構成します。2つのフラグは矛盾しているように見えますが、CRTSCTSでハードウェアフロー制御を有効にして、CLOCALの行を無視するにはどうすればよいですか?
com - FT232R 直接アクセス IO を備えた USB IC (UART なし)
FT232Rを使って、USB経由で直接IOにアクセスするシナリオを作りたいです。より詳細なシナリオは次のとおりです。 FT232R USB デバイスによって LIN トランシーバ IC に給電したいと考えています。ただし、FT232R は USB シリアル コンバータとして、スタート ビットとストップ ビットを含む UART 信号を出力します。私にとっては、UART プロトコルで標準化されているにもかかわらず、これらのスタート ビットとストップ ビットを持たないことが必要です。
私の質問: このデバイスの bang モードを使用して、スタート/ストップ ビットを回避し、生データを転送することは可能ですか? では、これを行うためのコードをどのようにプログラムするのでしょうか? そうでない場合、私の要件を満たすために COM/ドライバー アクセスを介して可能性を持たなければならない USB トランシーバーはありますか?
ご協力いただきありがとうございます。
uart - XBeeProS1-Nibo2-データの受信がスムーズに機能しない
私は現在acプロジェクトに取り組んでおり、PCにXBee Pro Series 1を搭載しており、xbeeモジュールを接続した状態でnibo2ロボットにデータを送信できます。
nibo2ロボットから私のPCにデータを送信することはうまく機能し、データの損失はありません。
PCからnibo2へのデータ送信はうまくいきません。ある時点で16バイトを送信しようとすると、最初の8バイトだけがnibo2に到着します。2番目の8バイトは失われます。データを8バイトに分割して送信し、おそらく1秒から2秒の時間差で送信すると、正常に機能します。
あなたがこれについて知っておくべき多分興味深いことはここにリストされています:
XBeeデータセット:http://ftp1.digi.com/support/documentation/90000982_H.pdf
ロボット工学者が使用するライブラリ(uart0を使用):http ://nibo.sourceforge.net/doc/html/
誰かがアイデアを持っているか、誰かが問題を知っていますか?それはxbeeモジュールの構成に関するものですか?割り込みの問題?
どうもありがとう。
c - 文字を受信したときにトリガーするUART割り込みの設定
UART画面に文字が入力されたときにトリガーするUART割り込みを設定しようとしています。私が設定した方法ですが、送受信時に割り込みがトリガーされるようです。私はデータシートを読みましたが、それができるかどうか、そしてどのようにできるかについては実際にはわかりません。シリアルポートの割り込みが利用可能であると言っているだけです。これが私がUARTを設定した方法です
誰かがこれをどのように達成できるか考えている可能性がありますか?KeilコンパイラとInfineonC509データセットを使用しています **リンクが修正されました
ありがとうございました
c - UART ISRTxRxアーキテクチャ
私は物事を複雑にしていますか?
私は、8051マイクロからUARTを介して周辺機器と通信するようにコードを設計しています。周辺機器はホストからのコマンドに応答し、一度に1つのコマンドにしか応答できません。これは単純な送受信プロトコルです。(tx1、rx1、tx2、rx2、tx3、rx3)各TXメッセージはCRで終了し、各応答は>で終了します。最後のメッセージへの応答を受信するまで、新しいメッセージを送信できません。そのオプションを有効にすると、応答は最初に元のTXメッセージをエコー印刷することもできます(ただし、これによりトラフィックが増加します)
メッセージの例は次のとおりです。
- TX:こんにちは
- RX:ワールド!>
またはエコーオプション付き...
- TX:こんにちは
- RX:こんにちは\ rWorld!>
オプション AgetHelloなどの関数は、送信と受信の両方で構成されます。並列ISRルーチンは、着信バイトを収集し、「>」文字を受信するとフラグをスローします。
長所:
- すべてが1つの関数に含まれています。
- デバッグが簡単
短所:
- この関数はブロックされており、ペリフェラルが応答しない場合はハングする可能性があるため、タイムアウトを実装する必要があります。
- メッセージは順不同で受信できません。直列である必要があります(つまり、tx1、rx1、tx2、rx2、tx3、rx3)
オプションB 並列アプローチが採用されています。2つの別々の関数が作成されます。1つはメッセージを送信するためのもので、もう1つはISRからの応答を受信したときに頂点に達するものです。
長所:
- 解析方法を理解するためにtxメッセージのエコー印刷に依存しているため、順序が狂って戻ってくる並列メッセージを処理できます。(すなわち、tx1、tx2、tx3、rx1、rx2、rx3)
短所:
- デバッグが非常に難しい
- 複数のスレッドを生成します
- たくさんの余分なコード
- メッセージは間違いなく順番に戻ってくるので、それだけの価値はありません
現在、オプションBを行っていますが、プロジェクトを続けるうちに、これが非常に複雑になっているように感じ始めます。私はあなたたちがどう思うか興味があります。
ありがとう!
linux - /dev/tty* のデバイス ノードが uart シリアル ドライバー用に作成されない
mdev ルールを使用して、busybox を実行する組み込み Linux で単純な UART シリアル ドライバーを作成しました。ドライバー コードに " " を指定しました.dev_name。ttyC2C
ただし、ノードは作成されています
tty の mdev ルールは次のとおりです。
デバイス ノードを として取得する方法は/dev/ttyC2C?
c# - COM の問題 - Stellaris uC
Stellaris uC と通信しようとしていますが、問題があります。uC は実際にはボーレート 115200 で COM4 にデータを送信しており、Putty でそれを見ることができます。
しかし、このコードを使用して C# で読み込もうとすると、何も得られません。
シリアル ポート オプションは正しく、イベントはトリガーされません。
Tnx。
編集:これは短いバージョンですが、まだ成功していません。
EDIT2:
linux - Linux での UART シリアル ポートでの I/O 書き込み操作のブロック
RS-485 半二重シリアル回線を介してデバイスと通信しようとしています。デバイスにコマンドを送信すると、デバイスはコマンドを処理し、処理後すぐに応答します。問題は、デバイスの応答を受信するために、コマンドを送信した直後に RS-485 チップを受信モードにする必要があることです。しかし、UART の書き込み機能は非ブロッキング IO 操作であるため、RS-485 チップをいつ受信モードにするかを知る方法がありません。
すべてのバイトが実際にシリアル ライン経由で送信されない限り関数が終了しないように、UART へのブロッキング書き込み操作を行うにはどうすればよいですか?
assembly - LPC238 (Crossworks + GCC) で IRQ が正しく動作しない
現在、Crossworks ARM (2.1) を使用していますが、LPC2368 MCU の割り込みに問題があります。
アクションの 2 つのコース (UART の例):
1) 働くもの:
- uart の初期化と IRQ の実装全体は main.c ファイルにあります。
- Crossworks で必要とされるため、コードは VECTORED_IRQ_INTERRUPTS フラグを使用してビルドされます
- すべて正常に動作します (エコー テスターは応答しています)
- IRQ cpu を終了した後、モードをスーパーバイザーに変更しています (ビルド フラグも設定されていました)。これはクールで機能しています。
2) 動作していないもの:
- cpu は、main.c 以外のディレクトリ ((ProjDir)/SystemCtrl/) の別のファイルにあるルーチンによって初期化されます。
- uart init 関数は、ネストされたディレクトリ ((ProjDir)/SystemCtrl/LPC/libuart) に設定されます。
- 起動後はすべて問題ありません。ボーレートは問題なく、UART は正しく初期化されています
最初の悪い点: データが最初に受信されると、IRQ が適切に呼び出されます。ただし、受信データは異なります (つまり、送信: 0x31、受信: 0x82)。
2 つ目の悪い点: 間違ったデータが受信された場合でも、echo は PC に異なる値を送信します! (つまり、送信: 0x31、受信: 0x82、エコー送信: 0xFE)
3 つ目の悪い点: IRQ が終了し、CPSR の IRQ モードがまだ設定されている! I フラグはクリアされません。IRQ には属性((interrupt(IRQ))) があります。そして、まだ正しく動作していません。
誰にもアイデアはありますか?何が悪いのかわかりません。スタックサイズも変更しました(奇妙なスペースで何らかの形で失われたのではないかと思いました)。ディレクトリをネストすると、どのようにすべてが壊れますか? 設定を変更せずにクリーンプロジェクトでもテストされました。
c - CのUARTで未定義サイズのメッセージを受信
私は LPC2148 用の独自のドライバーを書いていますが、疑問が頭に浮かびました。サイズが指定されていないメッセージを UART で受信するにはどうすればよいですか?
頭に浮かぶのは次の 2 つだけです。1 - ウォッチドッグを構成し、時間切れになったら受信を終了します。2-メッセージが送信されるたびに、メッセージの終わりの文字が必要になるようにします。
私の意見では、最初の選択肢の方が優れているように思えますが、誰かがより良い答えを持っているかどうか知りたいです。
どうもありがとうございました