3 Replies Latest reply on Jul 5, 2020 10:26 PM by MoTa_728816

    Community Translation - Route Non-Dedicated Pins as SAR ADC Inputs through AMUXBUSA/B for PSoC 6 MCU in MTB 2.0 – KBA229989

    MoTa_728816

      Hi,

       

      I'd like to translate KBA229989 into Japanese.

       

      Please confirm to my work.

       

      moto

        • 2. Re: Community Translation - Route Non-Dedicated Pins as SAR ADC Inputs through AMUXBUSA/B for PSoC 6 MCU in MTB 2.0 – KBA229989
          MoTa_728816

          Original KBA: KBA229989

          Route Non-Dedicated Pins as SAR ADC Inputs through AMUXBUSA/B for PSoC 6 MCU in MTB 2.0 – KBA229989

           

          Translated by: MoTa_728816

           

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

          タイトル:MTB 2.0 で PSoC 6 MUC の AMUXBUSA/B を経由して専用ピン以外のピンを SAR ADC の入力に接続する - KBA229989

           

          ヴァージョン:**

           

          MTB 2.0 の Device Configurator GUI では、PSoC 6 の SAR ADC の入力として選択できるのは専用ピン (Port10) のみです。これはMTB 2.0 にはデバイスに搭載されているリソースを自動的に SAR に接続させる機能がまだ実装されていないためです。専用ピンではないピンを SAR の入力に接続する為には AMUXBUSA/B を経由しての接続を行うコードをファームウェアに追加する必要があります。

           

          下図に Port1 の pin 2 と pin 4 を SAR ADC の三つの異なるチャネルに接続する例です。

           

          001-pastedImage_0.png

           

          #define CHANNEL_EN           7u

          #define CHANNEL_0_CONFIG    ((uint32_t)CY_SAR_CHAN_SINGLE_ENDED           /* Single-ended channel. */\

                                      | (uint32_t)CY_SAR_CHAN_SAMPLE_TIME_1         /* Use Sample Time 1 for 1 us acquisition time. */ \

                                      | (uint32_t)CY_SAR_POS_PORT_ADDR_SARMUX_VIRT /* Set the Vplus port address to SARMUX_VIRT for the AMUXBUSA/B.*/\

                                      | (uint32_t)CY_SAR_CHAN_POS_PIN_ADDR_2)       /* Set pin address to 2 for AMUXBUSA. */

          #define CHANNEL_1_CONFIG    ((uint32_t)CY_SAR_CHAN_SINGLE_ENDED           /* Single-ended channel. */\

                                      | (uint32_t)CY_SAR_CHAN_SAMPLE_TIME_1 /* Use Sample Time 1 for 1 us acquisition time. */ \

                                      | (uint32_t)CY_SAR_POS_PORT_ADDR_SARMUX_VIRT  /* Set the Vplus port address to SARMUX_VIRT for the AMUXBUSA/B.*/\

                                      | (uint32_t)CY_SAR_CHAN_POS_PIN_ADDR_3)       /* Set pin address to 3 for AMUXBUSB. */

          #define CHANNEL_2_CONFIG ((uint32_t)CY_SAR_CHAN_DIFFERENTIAL_PAIRED    /* Differential paired channel. */\

                                   | (uint32_t)CY_SAR_CHAN_SAMPLE_TIME_1 /* Use Sample Time 1 for 1 us acquisition time. */ \

                                   | (uint32_t)CY_SAR_POS_PORT_ADDR_SARMUX_VIRT  /* Set the Vplus port address to SARMUX_VIRT for the AMUXBUSA/B.*/\

                                   | (uint32_t)CY_SAR_CHAN_POS_PIN_ADDR_2)       /* Use AMUXBUSA (pin address 2) for Vplus and AMXBUSB (pin address

          3)for Vminus. Note, differential input pair. */

          #define CHANNEL_CONFIG      {(uint32_t)CHANNEL_0_CONFIG \

          ,(uint32_t)CHANNEL_1_CONFIG \

          ,(uint32_t)CHANNEL_2_CONFIG \

          ,0uL,0uL,0uL,0uL,0uL,0uL,0uL,0uL,0uL,0uL,0uL,0uL,0uL} /* Channels 3 through 15 are unconfigured. */

          #define MUX_SWITCH          CY_SAR_MUX_FW_AMUXBUSA_VPLUS        /* Close switch between Vplus and AMUXBUSA for Channels 0 and 2. */ \

                                      | CY_SAR_MUX_FW_AMUXBUSB_VPLUS      /* Close switch between Vplus and AMUXBUSB for Channel 1. */\

                                      | CY_SAR_MUX_FW_AMUXBUSB_VMINUS     /* Close switch between Vminus and AMUXMBUSB for Channel 2. */ \

                                      | CY_SAR_MUX_FW_VSSA_VMINUS)        /* Close switch between Vminus and VSSA for single-ended Channels 0 and 1. */

          #define MUX_SWITCH_SQ_CTRL  (CY_SAR_MUX_SQ_CTRL_AMUXBUSA        /* Enable SARSEQ control of AMUXBUSA switch. */ \
                                      | CY_SAR_MUX_SQ_CTRL_AMUXBUSB       /* Enable SARSEQ control of AMUXBUSB switch. */ \
                                      | CY_SAR_MUX_SQ_CTRL_VSSA)          /* Enable SARSEQ control of VSSA switch. */

           

          Cy_GPIO_SetHSIOM(GPIO_PRT1, 2u, P1_2_AMUXA);    /* Connect P1_2 to AMUXBUSA. */

          Cy_GPIO_SetHSIOM(GPIO_PRT1, 4u, P1_4_AMUXB);    /* Connect P1_4 to AMUXBUSB. */

          /* Set drive mode of P1_2 and P1_4 to analog high-z. */

          Cy_GPIO_SetDrivemode(GPIO_PRT1, 2u, CY_GPIO_DM_ANALOG);

          Cy_GPIO_SetDrivemode(GPIO_PRT1, 4u, CY_GPIO_DM_ANALOG);

          /* To connect the SARMUX to Port 1 requires additional HSIOM switches, AMUX_SPLIT_CTL[1] and AMUX_SPLIT_CTL[6].

            * See the device TRM about AMUXBUS splitting. */

            HSIOM->AMUX_SPLIT_CTL[1] = HSIOM_AMUX_SPLIT_CTL_SWITCH_AA_SL_Msk \

                                       | HSIOM_AMUX_SPLIT_CTL_SWITCH_AA_SR_Msk \

                                       | HSIOM_AMUX_SPLIT_CTL_SWITCH_BB_SL_Msk \

                                       | HSIOM_AMUX_SPLIT_CTL_SWITCH_BB_SR_Msk;

            HSIOM->AMUX_SPLIT_CTL[6] = HSIOM_AMUX_SPLIT_CTL_SWITCH_AA_SL_Msk \

                                       | HSIOM_AMUX_SPLIT_CTL_SWITCH_AA_SR_Msk \

                                       | HSIOM_AMUX_SPLIT_CTL_SWITCH_BB_SL_Msk \

                                       | HSIOM_AMUX_SPLIT_CTL_SWITCH_BB_SR_Msk;

           

          注意:

           

          • 下表に異なる入力への接続に対して必要な POS_PORT_ADDR と POS_PIN_ADDR の設定を示します。上記のコードスニペットでは SARMUX と AMUXBUSA/B の間を接続するために特定の POS_PORT_ADDR と POS_PIN_ADDR が使用されています。

          接続する入力

          POS_PORT_ADDR

          POS_PIN_ADDR

          SARMUX 専用ポート

          CY_SAR_POS_PORT_ADDR_SARMUX

          CY_SAR_CHAN_POS_PIN_ADDR_0 から CY_SAR_CHAN_POS_PIN_ADDR_7

          DieTemp センサ

          CY_SAR_POS_PORT_ADDR_SARMUX_VIRT

          CY_SAR_CHAN_POS_PIN_ADDR_0

          AMUXBUSA

          CY_SAR_POS_PORT_ADDR_SARMUX_VIRT

          CY_SAR_CHAN_POS_PIN_ADDR_2

          AMUXBUSB

          CY_SAR_POS_PORT_ADDR_SARMUX_VIRT

          CY_SAR_CHAN_POS_PIN_ADDR_3

          CTB0 Opamp0 1x 出力

          CY_SAR_POS_PORT_ADDR_CTB0

          CY_SAR_CHAN_POS_PIN_ADDR_2

          CTB0 Opamp1 1x 出力

          CY_SAR_POS_PORT_ADDR_CTB0

          CY_SAR_CHAN_POS_PIN_ADDR_3

           

          • 異なるピンを正しく接続するためには AMUX_SPLIT_CTL[x] レジスタを使用して適切に AMUBUS を分割する必要があります。
            上記のコードスニペットでは Port1 の pin 2 と pin 4 のために、AMUX_SPLIT_CTL[1] と AMUX_SPLIT_CTL[6] が使用されています。

            デバイスの Registers TRM では特定のレジスタに関する詳細な説明はありません;しかし、MTB 2.0 の Device Configurator ® Analog-Routing GUI で確認することが可能です。そのためには、目的のピンと SAR ADC の間を AMUXBUSA/B の最短経路で繋いでいることを確認する必要があります。マウスポインタを経路上のスイッチノードに置くと;特定のノード番号が表示されます。

          002-pastedImage_25.png

           

           

          上図では Port0 の pin 2 と pin 4 への経路上のスイッチノードが赤くハイライトされています。具体的なノードは:amuxt1_aa_sr / amuxt1_aa_sl / amuxt1_bb_sr / amuxt1_bb_sl / amuxt6_aa_sr / amuxt6_aa_sl / amuxt6_bb_sr / amuxt6_bb_sl です。

           

          コードスニペットのように AMUX_SPLIT_CTR[1] と AMUX_SPLIT_CTL[6] の該当するビットをセットすることが可能です。

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

           

          15-May-2020

          moto

          • 3. Re: Community Translation - Route Non-Dedicated Pins as SAR ADC Inputs through AMUXBUSA/B for PSoC 6 MCU in MTB 2.0 – KBA229989
            MoTa_728816

            Dear Jenna-san,

             

            Oh, I've done it again.

             

            In the title, I made typo where PSoC 6 MCU as PSoC MUC.

            (Wrong)

            タイトル:MTB 2.0 で PSoC 6 MUC の AMUXBUSA/B を経由して専用ピン以外のピンを SAR ADC の入力に接続する - KBA229989

             

            Could you correct the title as below?

            (Correct)

            タイトル:MTB 2.0 で PSoC 6 MCU の AMUXBUSA/B を経由して専用ピン以外のピンを SAR ADC の入力に接続する - KBA229989

             

            Best Regards,

            6-Jul-2020

            Motoo Tanaka