【stm32CubeMX】STM32F103c8t6シリアル通信

1. シリアル通信プロトコル

  シリアル通信プロトコルには、システム間プロトコルシステム間プロトコルがあります。

  Intersystem Protocol: 2 つの異なるデバイスの通信に使用されるシステム間プロトコル。コンピューターとマイクロコントローラー キット間の通信のように。通信は、内部バス システムを介して行われます。一般的なものは、UART プロトコル、USART プロトコル、および USB プロトコルです。

  システム間プロトコル: システム間プロトコルは、回路基板上の 2 つのデバイス間の通信に使用されます。これらのインシステム プロトコルを使用しながら、インシステム プロトコルを使用せずにマイクロコントローラーのペリフェラルを拡張します。インシステム プロトコルを使用すると、回路が複雑になり、消費電力が増加します。インシステム プロトコルを使用すると、回路の複雑さと消費電力が削減され、コストが削減され、アクセス データは非常に安全です。一般的なものは、I2C プロトコル、SPI プロトコル、および CAN プロトコルです。

  プロトコル RS-232、RS-422、RS-485 など、シリアル ポート通信プロトコルには複数の規格があります。
  主に RS-232 と RS-485 について説明します。

1.UART プロトコル

  UART は Universal Asynchronous Transmitter and Receiver の略です。UART プロトコルは、2 線式プロトコルによるシリアル通信です。データ ケーブルの信号ワイヤには、Rx と Tx のラベルが付いています。通常、信号の送受信にはシリアル通信が使用されます。クラスパルスなしでデータを受信するために、シリアルポートと送信および通信します。UART はデータ バイトを受信し、個々のビットを順番に送信します。

  USAT プロトコルは通常、組み込みシステムの MCU の周辺機器として使用されます; 一般的に言えば、チップ ピンは直接 TTL レベルにつながります; 中間変換チップは RS232 レベルである場合があります。詳細はシリアル通信の規格を参照してください。

ここに画像の説明を挿入

  UART は半二重プロトコルです。半二重とは、データを送受信できることを意味しますが、同時にではありません。ほとんどのコントローラには、ボード上にハードウェア UART があります。データラインを使用してデータを送受信します。スタートビット、8ビットデータ、ストップビットを持ち、8ビットデータ送信ワンの信号がハイからローになったことを示します。例: 電子メール、SMS、トランシーバー、産業用 IoT 伝送装置のシリアル サーバー。
ここに画像の説明を挿入
      STM32 の UART 機能
1. 全二重非同期通信;
2. 正確なボー レートを提供するフラクショナル ボー レート ジェネレーター システム。3.プログラム可能なデータ
ワード長 (8 または 9 ビット);
4. 設定可能なストップ ビット (1 または 2 ストップ ビットをサポート);
5. DMA マルチバッファ通信の設定可能な使用;
6. 送信機と受信機の個別のイネーブル ビット;
7. 検出フラグ: ① 受信バッファ ② 送信バッファ空 ③ 送信終了フラグ;
8. フラグ付きの複数の割り込みソース、割り込みをトリガー;
9. その他: 検証制御、4 つのエラー検出フラグ。

2.RS-232

  RS-232 規格を使用したシリアル デバイス間の一般的な通信構造は次のとおりです。

ここに画像の説明を挿入

  上記の通信モードでは、2 つの通信デバイスの「DB9 インターフェイス」がシリアル ポート信号線を介して接続され、「RS-232 規格」がシリアル ポート信号線でデータ信号を送信するために使用されます。RS-232レベル規格の信号はコントローラーが直接認識できないため、「レベル変換チップ」を介してコントローラーが認識できる「TTLキャリブレーション」レベルの信号に変換し、通信を実現します。

  レベル標準
  通信で使用されるレベル標準によると、シリアル通信はTTL標準とRS-232標準に分けることができます.表を参照してください.TTLレベル標準は
ここに画像の説明を挿入
  一般的な電子回路でよく使用されることがわかっています.理想的には、5Vを使用して表現します. 1. ロジック 0 を表すために 0V を使用し、シリアル通信の長距離伝送と干渉防止能力を高めるために、ロジック 1 を表すために -15V を使用し、ロジック 0 を表すために +15V を使用します。RS232 と TTL レベル校正を使用して同じ信号を表す場合の比較については、図 202 を参照してください。

ここに画像の説明を挿入

  コントローラは一般に TTL レベルの規格を使用するため、MA3232 チップを使用して TTL と RS-232 レベルの信号を相互に変換します。

特徴

(1) インターフェースの信号レベルが高く、インターフェース回路のチップを破損しやすく、TTL レベルに対応していないため、レベル変換回路を使用して TTL 回路に接続する必要があります。
(2) 伝送レートが低く、非同期伝送時のボーレートは 20Kbps です。
(3) インタフェースは信号線と信号リターン線で接地伝送形態を形成しているが、この接地伝送はコモンモード干渉を受けやすいため、耐ノイズ干渉が弱い。
(4)伝送距離に制限がある 最大伝送距離の規格値は50フィートですが、実際には50メートル程度しか使用できません。

3、RS-485

  RS-485 バス規格では、バス インターフェイスの電気的特性規格、つまり論理状態を示す +2V ~ +6V の間の正のレベルと、-2V ~ +6V の間の負のレベルの 2 つの論理状態の定義が規定されています。 -6V、別の論理状態を示します; デジタル信号は差動伝送方式を採用しており、ノイズ信号の干渉を効果的に低減できます。ただし、RS-485 バス規格は、通信ネットワーク内の関連するアプリケーション層の通信プロトコルに関する明確な規制を行っていないため、ユーザーまたは関連する開発者は、独自の通信ネットワーク機器に関連する適用可能な高度な通信を確立することができます。 プロトコル規格 -. 同時に、RS-485 バス通信ネットワークが産業用制御の分野に適用されているため、分散型産業用ネットワーク制御ユニットの数が多くの場合、多数を占めており、さまざまな産業用機器の分散は比較的遠くにあります。フィールドバス内の多数のリモートコントロールユニットにつながります通信ネットワークにはさまざまな干渉があり、通信ネットワーク全体の通信効率と信頼性が高くなく、ネットワーク全体のデータ伝送の信頼性が直接低下します485 バス通信システムの通信信頼性は、フィールドバス通信システム全体の信頼性に影響を与えるため、RS に関する研究は実用的な意味を持ちます。

特徴

(1) インターフェースの信号レベルが高く、インターフェース回路のチップを破損しやすく、TTL レベルに対応していないため、レベル変換回路を使用して TTL 回路に接続する必要があります。
(2) 伝送レートが低く、非同期伝送時のボーレートは 20Kbps です。
(3) インタフェースは信号線と信号リターン線で接地伝送形態を形成しているが、この接地伝送はコモンモード干渉を受けやすいため、耐ノイズ干渉が弱い。
(4)伝送距離に制限がある 最大伝送距離の規格値は50フィートですが、実際には50メートル程度しか使用できません。

2.USBからTTLへ

  USB-to-TTLシリアルポートモジュールは非常に実用的なツールで、モジュールのUARTシリアルポート通信をテストし、シングルチップマイクロコンピュータのUARTインターフェースを介してプログラムをシングルチップマイクロコンピュータにダウンロードできます。
ここに画像の説明を挿入

USB to TTL の詳細な手順については、ここをクリックしてください。
知らせ:
1. CH340 モジュールが USB2.0 ポートに接続されている場合、5V ピンヘッダー出力ポートの電流は約 500MA にすぎません.比較的高電力の大型モジュールを接続する場合は、USB3.0 または USB3.0 に接続することをお勧めします別の外部電源をハイパワー モジュールに接続し、グランドを共有します。
2.STM32F103C8T6で接続
ここに画像の説明を挿入

PA9–RXD
PA10–TXD
3.3V–3V3
GND–GND
3、ダウンロード時に BOOT0 を 1 に設定し、ダウンロード完了後に BOOT0 を 0 に設定します。(そうしないと、ダウンロードの電源がオフになった後にプログラムが保存されません)

3. CubeMX を構成してプロジェクトをビルドする

1. 新築;
ここに画像の説明を挿入
ここに画像の説明を挿入

2. クロック ソースを構成します。RCC 内の HSE は水晶発振器クロックで構成されます。
ここに画像の説明を挿入

3. 構成プログラム書き込みピン SYS は SWD モードです。
ここに画像の説明を挿入

4. GPIO ポートを構成し、LED ライト (私のボードは PA1) を構成して、シリアル ポートがデータを正常に受信したことを示します。
ここに画像の説明を挿入

5. シリアル トランシーバー ピンを構成する
ここに画像の説明を挿入

ここで使用する通信方式はUART通信(非同期全二重シリアル通信)で、PA9をTX、PA10をRXとして使用します。構成するビジュアル ブロック ダイアグラムで対応するピンを直接クリックします。
ここに画像の説明を挿入
ここまでの構成で、レンダリングは次のようになります。

構成後に TX および RX ピンが黄色であることがわかります。これは、構成が完了していないことを意味し、構成は以下に続きます。

6. 左の「Connectivity」でUSART1モードの非同期全二重通信モードを選択
⮚USATR1をクリック
⮚MODEを非同期通信(Asynchronous)に設定
ここに画像の説明を挿入

⮚基本パラメータ: ボーレートは 115200 ビット/秒です。送信データ長は 8 Bit です。パリティなし、ストップ ビット 1、受信と送信の両方が有効
ここに画像の説明を挿入

⮚GPIO 端子設定(事前設定) USART1_RX/USART_TX
ここに画像の説明を挿入

⮚NVIC Settings カラムで受信割り込みを有効にする
ここに画像の説明を挿入

ここに簡単な拡張があります:
STM32F103 シリーズ マイクロコントローラには合計 5 つのシリアル ポートがあり、そのうち 1 ~ 3 はユニバーサル同期/非同期シリアル インターフェイス USART (ユニバーサル同期/非同期受信機/送信機)、4、5 はユニバーサル非同期シリアル インターフェイス UART です。 (ユニバーサル非同期受信機/送信機)。

7. クロック ツリーを構成します。最高の 72MHz まで駆動します。
ここに画像の説明を挿入

8. プロジェクトの設定を行い、最後にコードを生成すると、CubeMX 部分が完成します
ここに画像の説明を挿入
ここに画像の説明を挿入
9. プロジェクトを開くをクリックして、プロジェクトを開きます
ここに画像の説明を挿入

10. main.c にコードを追加します。

  while (1)
  {
    
    

HAL_UART_Transmit( &huart1,temp_buf,15,10);
    
    
  }

4. シリアル通信の実現

1. usb to ttl を使用してダウンロードします
ここに画像の説明を挿入
2. 書き込みます
ここに画像の説明を挿入
3. シリアル ポート アシスタントを開いて設定します
ここに画像の説明を挿入

4.シリアルポートを開く
ここに画像の説明を挿入

実験は成功した

五、keilシミュレーション観測シリアルポート出力波形

シミュレーション設定
ここに画像の説明を挿入

  オシロスコープがない場合は、Keil のソフトウェア シミュレーション ロジック アナライザー機能を使用してピンのタイミング波形を観察できます。これは、動的な追跡とデバッグ、およびコードの障害点の特定に便利です。この機能を使用して、シリアルポートの出力波形を観察し、波形に反映されたタイミング状態が正しいかどうか、および高低レベル変換期間 (LED 点滅期間) が実際にどのくらいであるかを分析します。

ここに画像の説明を挿入

ただし、実験の結果、PA9 と PA10 の波形はフラットで変化がないことが判明し、その後、LED の高レベルと低レベルを表示に使用していないことが判明したため、ここでは IO ポートを使用して接続する必要があります。 LED 表示に変更し、コードを少し変更し、GPIOC13 を点滅に設定すると、シミュレーションは次のようになります。
ここに画像の説明を挿入

6. まとめ

今回の実験は比較的スムーズに進みましたが、シミュレーションのおかげで何度も実験を重ねても波形の変化はなく、あとでLEDライトで観察したほうがいいということがわかったので、コードを少し変更してGPIOC13を点滅させました。

7.参考文献

シリアル通信プロトコルとは何ですか、どのシリアル通信プロトコルが含まれていますか

おすすめ

転載: blog.csdn.net/qq_52201641/article/details/127289094