Generate CY_U3P_UART_EVENT_TX_DONE Event in UARTLpRegMode Firmware Example – KBA224172

Version 4

    Author: abhinavg_21           Version: **

     

    Translation - Japanese: https://community.cypress.com/docs/DOC-20637

     

    Question:

    How to generate CY_U3P_UART_EVENT_TX_DONE in UartLpRegMode firmware example?

     

    Answer:

    In the current implementation of UartLpRegMode firmware, which is in the following SDK path:

    EZ-USB FX3 SDK\1.3\firmware\serialif_examples\cyfxuartlpregmode, the TX_DONE event cannot be generated since it is not enabled in the library. You need to modify certain registers to enable TX_DONE event.

    1. Define following variables in the starting of your firmware code which store the addresses of registers:

         uvint32_t *uart_config = (uvint32_t*)0xE0000800;

         uvint32_t *uart_int_mask = (uvint32_t*)0xE000080C;

     

    2. In CyFxUartLpApplnInit(), add these code lines after CyU3PUartSetConfig():

                             *uart_config &= ~((1u << 31));

                             *uart_int_mask |= (1u << 3);

                             *uart_config |= ((1u << 31));


         Your code should look like this:
                                                     

    This step enables the CYU3UART_EVENT_TX_DONE event.

     

    3. Check for the CY_U3P_UART_EVENT_TX_DONE event in the callback function CyFxUartLpApplnCallback()

    質問:

    UartLpRegModeファームウェアの例でCY_U3P_UART_EVENT_TX_DONEを生成する方法は?

     

    回答:

    UartLpRegModeファームウェアの現在の実装では、次のSDKパスにあります。

    EZ-USB FX3 SDK\1.3\firmware\serialif_examples\cyfxuartlpregmode

    TX_DONEイベントはライブラリで有効になっていないため、生成できません。TX_DONEイベントを有効にするには、特定のレジスタを変更する必要があります。

    1. レジスタのアドレスを格納するファームウェアコードの先頭に次の変数を定義します。

         uvint32_t *uart_config = (uvint32_t*)0xE0000800;

         uvint32_t *uart_int_mask = (uvint32_t*)0xE000080C;

     

    2. においてCyFxUartLpApplnInit() 、後にこれらのコード行を追加)(CyU3PUartSetConfig

    *uart_config &= ~((1u << 31));

    *uart_int_mask |= (1u << 3);

    *uart_config |= ((1u << 31));


         コードは次のようになります。
     

    この手順により、CYU3UART_EVENT_TX_DONEイベントが有効になります。

     

    3. コールバック関数CyFxUartLpApplnCallback()CY_U3P_UART_EVENT_TX_DONEイベントを確認します