UART通信で2つの信号を同時に伝送する方法とは?

このQ&Aのポイント
  • UART通信において、送信者A・Bからそれぞれ信号を同時に伝送し、受信者Cに伝送する方法を模索しています。
  • 現時点では、送信者Aの信号を正、送信者Bの信号を負として伝送し、受信者はそれを結合した信号を受け取る方法を考えていますが、コストがかかるというデメリットがあります。
  • ソフトウェアだけでこの操作を実現する方法を探していますが、通信の知識が乏しくアドバイスを求めています。
回答を見る
  • ベストアンサー

UART通信で2つの信号を同時に伝送したい

UART通信において,図に示すように,送信者A・Bからそれぞれ信号を同時に伝送し, 受信者Cに伝送したいと考えています。 現時点で考えている方法として,図(下)のように,送信者Aの信号を正,送信者Bの信号を負と して伝送し,受信者は,それを結合した信号を受け取ることで,同時に2つの信号を伝送しようと 考えています。しかしこの方法では,変調器をA/B/Cそれぞれに導入する必要があるため, コストがかかるというデメリットがあります。 そのため,このような操作をソフトウェアだけで実現できないかと模索しているのですが, 通信の知識が乏しいため,よい方法を思いつきません。 何かよい方法はないでしょうか? アドバイスお願いします。

  • nnsvm
  • お礼率16% (39/239)

質問者が選んだベストアンサー

  • ベストアンサー
  • YUI_AI
  • ベストアンサー率45% (303/661)
回答No.1

信号の同期の問題もあるので、UARTでの通信では難しいと思います。 それよりは、受信者C側にA/B毎のポートを用意して、それぞれが独立した状態で通信を行い、C側のソフトウェアで合成すればよいのではないでしょうか。

関連するQ&A

  • ESP32開発基板のUART1,2信号

    ESP32 Dev Board PINMAPを見ていて思ったのですが、 https://scrapbox.io/hada/ESP32_DEVKIT_%E3%83%94%E3%83%B3%E9%85%8D%E7%BD%AE UART0の信号はPINMAP表では TX0(GPIO1) RX0(GPIO3) にアサインと表示されていますが、 UART1、UART2のアサインが表示されていません。 このESP32開発基板ではUART1、UART2の信号は使用できないということでしょうか? 下記のESP32のデータシートを読んでみたところ、 https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf UARTの信号のPINは”Any GPIO Pins”と表記されているのですが、 何かプログラミングでUART1,UART2の信号を好きなGPIOのPINに割り当てることがかのうということでしょうか? その方法など、ご教示の程よろしくお願い致します。

  • 無線通信の信号はなぜアンテナで拾えるの?

    無線通信において、アンテナの長さは電波のキャリア周波数によって決められているといいますが、信号(情報)をキャリア周波数に乗せて変調すると、信号の周波数はキャリア周波数と異なるので、そのアンテナの長さでは信号を受信することは困難になるように思います。 実際には変調→復調、して通信が行われているので、信号の周波数も受信されていることになるのですが、この、信号周波数もアンテナで受信できる理屈を教えてください。

  • データ通信ネットワークのブロードバンド伝送方式について

    データ通信にはブロードバンド伝送方式というものがあり、 位相0とπを2値信号に対応させるPSKに関して、 QPSK、DPSKがあると思いますが、 それぞれの変調方式や特徴がいまいちよくわかりません。 よろしくお願いいたします。

  • 以下の問題が解けません。「情報通信」

    閲覧ありがとうございます。 以下の問題が解けません。画像をみてお答えいただければ光栄です。 計算式があるのなら載せていただけると自分で確認しながら復習できるのでうれしいです。 a)は搬送波、b)は信号は、c)は(b)の信号波を(a)の搬送波で変調した変調波、の波形をそれぞれ示しています。 問) c)の変調波の周波数スペクトラムはどのようになるか?図を描いてしますこと。 問) c)で表された信号を電話回線で送ることができるか?理由も述べよ。 問) a)の搬送波で周波数帯域幅が4.2Mhz(0Hz~4.2Mhz)あるテレビ映像信号を変調することができるか?理由も述べよ。 以上3つの問題を教えてください。よろしくお願いします。

  • スレッドAで信号を送り、返答があったときにスレッドBを起動、スレッドAの信号のデータを初期化する方法

    VC6.0で開発しています。 今、次のような処理をどうすればよいか悩んでいます。ヒントになる回答を頂けたら幸いです。 データをやり取りする際、どのような処理を行うか命令するもの(以下、命令A)と、命令された通りのデータを送るもの(以下、送信B)、そして、AとBの通信部分を担うもの(以下、通信C)があります。 データのやりとりは、マルチスレッドで行っています。 データをやりとりするために、スレッドが通信C上で2つ起動しています。1つ目のスレッド(以下、スレッドA)は、送信Bが命令Aから送られる特定のデータ(以下、データA)を受け取れるかをどうかの信号を、命令Aに送るためのものです。2つ目のスレッド(以下、スレッドB)は、データAを通信Cが受け取り、送信Bに渡すときに起動するスレッドです。 スレッドAで、送信Bから命令Aへ、受信の準備ができたことを伝える信号が送られます。その後、命令AよりデータAが送られ、通信CでスレッドBが起動するのですが、データAを通信Cで受信したとき、スレッドAで送っている信号を初期化しなければいけません。 データAを受信したときにはスレッドBが起動しますので、スレッドAとスレッドBの間での処理ということになります。 スレッド処理について、まだまだ不勉強なのですが、よいアイディアがあれば教えてください。 よろしくお願いします。

  • ベースバンド伝送の信号

    ベースバンド伝送では単にケーブルを接続するだけでデータ伝送できる、とあります。確かにRS-232Cインターフェースでパソコン同士を直結するとこれはベースバンド伝送です。このときの信号レベルはMAX+15V~-15Vの複流RZの直流電圧パルスです。これはベースバンド伝送の説明としては私のような通信ビギナーにもわかりやすい。ところがものの本に「ベースバンド伝送とは元の信号波形の周波数スペクトルをほかの周波数に移動することなく、ある周波数帯域全部を使用してひとつのディジタル信号を伝送する方式」などと、厄介なフーリエ変換の理論を使って説明されたりします。ベースバンド伝送の信号形態はは単なる直流のパルス信号だ、と思っていた質問者はこの説明の前に困惑するばかりです。そこでご質問です。 ・ベースバンド信号とは、単なる電圧パルス信号とは違う信号形態である。(とすると なにものか?) ・ベースバンド信号とは、単なる電圧パルス信号であるがこれを専門的に説明すると周 波数スペクトルのお話になる。 質問者としては後者の答えを期待しますが、そんなに簡単なお話でもないような?どなたかご回答いただけたら幸甚です。

  • 半二重通信の伝送路のインピーダンス整合について

    半二重通信は1つの伝送路で上りと下りの通信を行うので、 信号源と伝送路の間にR、L、Cを用いてインピーダンス整合すると、 上りと下りでインピーダンスが変わってしまうと思います。 実際どのようにしてインピーダンス整合を行っているのでしょうか。 どなたか教えて下さい。 よろしくお願いします。

  • 電圧→TTL信号~TTL信号→電圧

    困っています。 電圧をTTL信号に変調して、無線で2mmほどとばしたいのです。 そのTTL信号を受信してまた電圧値に変調したいです。 電圧値の変化がすごく小さいので周波数信号にかえてから送信して、 その信号を受信してから電圧値に変えることは可能ですか? まったくこの系統の知識がなく、困っています。 皆さんの知識をお貸しください。 どこか参考になるページや工作キット、秋葉原でこんなものをそろえて作るとかいう情報があれば、お願いします。

  • DMAを使ったUARTの受信が一度しかできない

    STM32F3 シリーズにて DMA を利用した UART 通信の受信を行ってます。 通信するデータは 7Byte 1Set の固定データで、連続して送信されます。 デバッグを開始して最初の 7Byte は受信できるのですが、それきり受信が止まってしまいます。 何か考えられる原因はありますか? 該当すると思われる箇所のコードを以下にピックアップします。 UART_HandleTypeDef huart1; DMA_HandleTypeDef hdma_usart1_rx; #define USART1_RX_LEN 7 uint8_t USART1_RXD_Buffer[USART1_RX_LEN]; int main(void) { HAL_Init(); SystemClock_Config(); HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_1); HAL_NVIC_SetPriority(SysTick_IRQn, 0, 1); MX_GPIO_Init(); MX_DMA_Init(); MX_USART1_UART_Init(); HAL_UART_Receive_DMA(&huart1, &USART1_RXD_Buffer[0], USART1_RX_LEN); while (1) { } } ちなみに、最初に 7Byte を正常に受信した後、 huart1.Lock = HAL_UNLOCKED huart1.State = HAL_UART_STATE_READY huart1.ErrorCode = HAL_UART_ERROR_NONE hdma_usart1_rx.Lock = HAL_UNLOCKED hdma_usart1_rx.State = HAL_DMA_STATE_READY となってます。 (この状態で受信も受信による割り込みも発生しない状態になってしまいます。)

  • 光ファイバの光伝送路について

     今日、光通信を授業で学びました。歴史から学びましたが、専門の言葉が飛びまい混乱しました。  また光ファイバもやって、最後に課題を出されたのですが、課題の意味がよくわかりません。    青い光、赤い光にそれぞれ別の音声信号を乗せ、一本の光伝送路(光ファイバ)で伝送し、一個の受信機で受信する。  光ファイバの中では赤と青の光が混ざっているので紫色の光となっている。 1.赤い光に乗せた音声信号のみを取り出すにはどうすればよいか? 2.青い光に乗せた音声信号のみを取り出すにはどうすればよいか?  赤と青の信号の切り替えを1秒以内にできるような仕組みを考案して下さい。(難しい装置を使わずに)    <<ひとつのファイバに2つの光を入れる仕組みと混ざった2つの光から任意の1つの光を選んで受信機に入れる仕組みの両方を書く必要があります。具体的にどういうものを使って、どのようにするか?方法を書いて下さい。>>             二つの光があるなら、二つの送信機と受信機が必要ではないのですか? 一つの光だけを取り出すのは、現実として難しいと思います。  切り替えを1秒以内に行おうとするなら、コンマの世界に行くので、そこまで行く機械など存在するのでしょうか? よくわかりません……。