PSoC 4 デバイスでファームウェアから UART の Tx と Rx ピンを制御する -  KBA224950 - Community Translated (JA)

Version 1

    Community Translated by  MoTa_728816          Version: **

     

    質問:

    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);