Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob

Generate CY_U3P_UART_EVENT_TX_DONE Event in UARTLpRegMode Firmware Example – KBA224172

Generate CY_U3P_UART_EVENT_TX_DONE Event in UARTLpRegMode Firmware Example – KBA224172

Community-Team
Employee
Employee
50 questions asked 10 questions asked 5 questions asked

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:
                                                  pastedImage_6.png

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

pastedImage_9.png

質問:

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


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

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

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

pastedImage_9.png 

0 Likes
289 Views
Contributors