Tip / ログイン to post questions, reply, level up, and achieve exciting badges. Know more

cross mob

同じピンでUARTとMUX機能を切り替える – KBA233908

同じピンでUARTとMUX機能を切り替える – KBA233908

Infineon_Team
Employee
Employee
50 replies posted 25 likes received 25 replies posted

Translated by: 

Original KBA: Switching between UART and MUX functionality on the same pins - KBA233908

Version: **

 

・実装

このプロジェクトでは、MUX機能がPSoC™ CreatorのTopDesign.cyschのMUXコンポーネントを使用して実装されていますが、UART機能はUARTコンポーネントを使用せずに実装されています。使用したPDLのバージョンは3.1.4です。必要なソースファイルが含まれており(以下を参照)、TopDesign.cyschのUARTコンポーネントのある他のプロジェクトから再利用しています。

UART.h
UART.c
UARTSCBCLK.h
cy_scb_uart.h
cy_scb_uart.c
cy_scb_common.h
cy_scb_common.c
cyfitter.h

プログラムはCY8CKIT-062-WiFi-BTキットでテストされています。SCB_5のUART RxおよびTxピンであるP5[0]およびP5[1]ピンは、それぞれMUX入力および出力ピンとしてアサインされています。設計を簡単にするため、これら2つのピンだけが確認されるように、定数1が選択行に追加されました。CY8CKIT-062-WiFi-BTキットのオンボードスイッチP0[4] (SW2) を使用してUARTとMUX機能間の切り替えが行われるので、GPIO割込みが使用されます。実装を 1に示します。

Infineon_Team_0-1664277321856.png

1UARTMUX間での切り替え

 

 ・メインプログラムフロー

機能間の切り替えは、高速入出力マトリックス(HSIOM)を介して行われます。HSIOMを使用して、ポート5は、MUX機能向けに構成されており、UART機能用のSCBブロックに接続するように切り替えられます。これは、下で説明するように、コードスニペッズを使用して処理されます。詳細は添付のプロジェクトを参照してください。

注:異なるコンポーネント機能用のHSIOMの構成の詳細な情報は、デバイスデータシートの「Multiple alternate functions」表、およびアーキテクチャTRMを参照して、DSIを介したHSIOM接続について学んでください。また、HSIOMレジスタの値のレジスタTRMも参照してください。

ポート5のMUX構成のコードスニペッズは-

void reconfigure_MUX_and_DEMUX_to_Port5(){
      /* HSIOMを介してMUX機能をピンP5[0]とピンP5[1]に接続 */
      /*            .sel0Active = 0x00000318u */
      Cy_GPIO_SetHSIOM(UART_PORT, UART_RX_NUM, 24);
      Cy_GPIO_SetHSIOM(UART_PORT, UART_TX_NUM, 03);
}

ポート5へのUART構成のコードは-

void reconfigure_UART1_to_Port5(){   
      /* ピンへのSCB 5 UART機能の接続 */
      Cy_GPIO_SetHSIOM(UART_PORT, UART_RX_NUM, P5_0_SCB5_UART_RX);
      Cy_GPIO_SetHSIOM(UART_PORT, UART_TX_NUM, P5_1_SCB5_UART_TX);

      /* UART動作のためのピンを構成 */
      Cy_GPIO_SetDrivemode(UART_PORT, UART_RX_NUM, CY_GPIO_DM_HIGHZ);
      Cy_GPIO_SetDrivemode(UART_PORT, UART_TX_NUM, CY_GPIO_DM_STRONG_IN_OFF);

      /* UART動作のためのクロックを構成 */

Cy_SysClk_PeriphAssignDivider(PCLK_SCB5_CLOCK, UART_CLK_DIV_TYPE, UART_CLK_DIV_NUMBER);

   /* UART動作のためのボーレートを構成 */

Cy_SysClk_PeriphSetDivider   (UART_CLK_DIV_TYPE, UART_CLK_DIV_NUMBER, 35UL);
Cy_SysClk_PeriphEnableDivider(UART_CLK_DIV_TYPE, UART_CLK_DIV_NUMBER);
}

ISR内の割込みフラグの切り替えは、UARTとMUX間の切り替えを処理します。初期状態では、falseに設定されており、ピンP5[0]およびP5[1]がMUX機能のためにHSIOMに接続されている事を意味します。オンボードスイッチ(SW2)が押されると、割込みフラグが切り替わり、trueに設定され、HSIOMを介してSCB5ブロックに接続されるようにピンを再構成します。

GPIO割込みの割込みサービスルーチン

void GPIO0_4_isr_handler ()
{
    Cy_GPIO_ClearInterrupt(Pin0_4_PORT, Pin0_4_NUM);
    NVIC_ClearPendingIRQ(GPIO0_4_isr_cfg.intrSrc);
    //アプリケーションコード
    interrupt_flag = !(interrupt_flag);
}

・テスト

テストに使用される設定を2に示します。

初期状態では、LEDがCY8CKIT-147キットで点灯します。シリアル端末は、115200bpsに設定されるボーレートでUSB-UART Kitprog3ブリッジ用に構成されます。

デバイスがプログラムされた後、割込みフラグがfalseに初期化されるのでMUX機能はアクティブになります。これを確認するために、CY8CKIT-147のP0[2]のLEDが使用され、P5[1]、つまりCY8CKIT-062-WiFi-BTキットの出力ピンに接続されます。入力ピンであるP5[0]ピンは、グランドに接続されます。これでLEDがオフします。グランドがMUX機能でP5[1]に転送されることをはっきりと意味しています。この間、シリアル端末では表示は行われません。

Infineon_Team_1-1664277321861.png

2.テスト用内部設定

 

CY8CKIT-062-WiFi-BT ボードのスイッチSW2が押された時、3に示すようにシリアル端末上に「UARTモードで動作中」を表示されます。これは、UART機能がアクティブであることを示しています。この間、グランドに接続しているP5[0]ピンは、LED点灯を止めず、グランドはP5[1]に送信されず、MUXが機能していないことを意味します。

Infineon_Team_2-1664277321868.png

3UART機能のシリアル端末出力

 

スイッチが再度押されると、シリアル端末の表示が止まります。ピンが再度、MUXの入力ピンと出力ピンとして動作することを確認するために前に述べたMUX機能を確認できます。

0 件の賞賛
143 件の閲覧回数
寄稿者