2 Replies Latest reply on May 4, 2020 3:04 AM by JuyoungJ_06

    Community Translation - Controlling UART Tx and Rx Pins through Firmware for PSoC 4 Devices - KBA 224950

    MoTa_728816

      Hi,

       

      I'd like to translate this KBA224950 into Japanese.

       

      moto

       

      Original KBA: KBA 224950

      Controlling UART Tx and Rx Pins through Firmware for PSoC 4 Devices - KBA 224950

       

      Being Translated by: MoTa_728816

      =============================

      タイトル: PSoC 4 デバイスでファームウェアから UART の Tx と Rx ピンを制御する -  KBA224950

       

      質問:

      PSoC® 4 デバイスで実行時にファームウェアから UART の Rx と Tx ピンを制御するのにはどうしたら良いでしょうか?

       

      回答:

      このナレッジベースドキュメントでは、ファームウェアから SCB_UART Tx と Rx ピンの機能を変更する方法を学びます。ユースケースではファームウェアからピンを制御する理由について記載します。ソリューションではファームウェアからピンを制御する手順を示します。コード例では推奨される API の使用方法を実装しています。

       

      ファームウェアから UART Tx と Rx ピンを制御するユースケース:

       1. UART の Rx ピンは電気的ノイズに影響を受けやすい場合があります、そのため Rx ピンの内部プルアップ抵抗を有効にするとこの問題を解決できます。

       2. 半二重と全二重モードを切り替えている間、 SCB UART に使用されていない Tx と Rx ピンを GPIO として設定しファームウェアからの制御が可能です。

       

      ファームウェアでのソリューション:

       

      通常、ピンはファームウェアからでもハードウェアからでも制御可能です。デフォルトでは UART のピンは SCB ハードウェアブロックから制御されます;そのため、ファームウェアからの制御を有効にする場合には UART のピンを SCB ブロックから切断する必要があります。

       

      Tx/Rx ピンを UART SCB から切断してファームウェアによる制御を有効にするためには以下の手順に従ってください:

       1. Tx/Rx ピンに該当するレジスタの HSIOM_PORT_SELx ビットに 'ビット 0' を書き込みます。

       2. Tx/Rx ピンのドライブモードをファームウェアを使用して設定します。

       

      詳細については、Architecture Technical Reference Manual (TRM) の I/O System (HSIOM) をご参照ください。

       

      以下のコード抜粋は Tx/Rx ピンと UART SCB 間のハードウェア接続を解除してファームウェアによる制御を有効にする手順を実装するのにご使用いただけます。

       

      抜粋コード  ユースケース 1: ファームウェアから Rx ピンを制御する

       

      例えば、UART_Tx ピン、UART_Rx ピンがそれぞれ P0.1 と P0.0 だった場合。

       

      // SCB_UART のデフォルトコンフィグレーション設定を保存する変数

       

      uint32 temp;

       

      // SCB_UART 用の HSIOM コンフィグレーションを保存する

       

      temp = CY_GET_REG32 (CYREG_HSIOM_PORT_SEL0);

       

      // UART_Rx ピンをファームウェアから制御するように設定する

       

      CY_SET_REG32 (CYREG_HSIOM_PORT_SEL0, CY_GET_REG32 (CYREG_HSIOM_PORT_SEL0) & 0xFFFFFFF0);

       

      // UART Rx ピンのドライブモードを設定する

       

      UART_pin_SetDriveMode(UART_pin_DM_RES_UP);

       

      // ここにアプリケーションコードを記述する

       

      // UART のデフォルト機能に戻す (例) Rx ピンは SCB ブロックに接続されている

      CY_SET_REG32 (CYREG_HSIOM_PORT_SEL0, temp);

       

      抜粋コード  ユースケース 2: ファームウェアから Rx ピンを制御する

      例えば、UART_Tx ピン、UART_Rx ピンがそれぞれ P0.1 と P0.0 だった場合。

       

      // SCB_UART のデフォルトコンフィグレーション設定を保存する変数

       

      uint32 temp;

       

      // SCB_UART の HSIOM デュプレックスコンフィグレーションを保存する

       

      temp = CY_GET_REG32 (CYREG_HSIOM_PORT_SEL0);

       

      // UART Tx オンリーモード

      // UART_Rx ピンをファームウェアから制御されるように設定する

       

      CY_SET_REG32 (CYREG_HSIOM_PORT_SEL0, CY_GET_REG32 (CYREG_HSIOM_PORT_SEL0) & 0xFFFFFFF0);

       

      // UART Rx ピンのドライブモードを設定する

       

      UART_pin_SetDriveMode(UART_pin_DM_RES_UP);

       

      // UART Tx オンリーモードオペレーション用コードをここに記述する

       

      // デフォルトの全二重の UART 機能をロードする (例) Rx ピンは SCB ブロックに接続されている

      CY_SET_REG32 (CYREG_HSIOM_PORT_SEL0, temp);

       

      // UART Rx オンリーモード

      // UART_Tx ピンをファームウェアから制御されるように設定する

       

      CY_SET_REG32 (CYREG_HSIOM_PORT_SEL0, CY_GET_REG32 (CYREG_HSIOM_PORT_SEL0) & 0xFFFFFF0F);

       

      // UART Tx ピンのドライブモードを設定する

       

      UART_pin_SetDriveMode(UART_pin_DM_RES_UP);

       

      // UART Rx オンリーモードオペレーション用コードをここに記述する

       

      // デフォルトの全二重の UART 機能をロードする (例) Tx ピンは SCB ブロックに接続されている

      CY_SET_REG32 (CYREG_HSIOM_PORT_SEL0, temp);

      =============================

      7-Apr-2020

      moto