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

cross mob
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは、コミュニティ、


UARTの詳細タブの設定方法について質問させてください。

FIFO の深さを設定したい。
この場合、Tx Buffer に値を入力する代わりに、Interruput を有効にし、割り込みソースを Tx FIFO レベルとして選択した状態で FIFO レベルに変数を入力する必要がありますか。

 

NXTY_Tatebayasi_0-1707379008972.png

よろしくお願いいたします

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/PSoC-4/PSoC4-UART-Advanced-Tab-21086204/td-p/691546

0 件の賞賛
5 返答(返信)
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは @NXTY_Tatebayasi

はい、TX FIFO 変数の値を入力して、データ数が
要素 (1 データ エレメント = 8 ビット) が TX FIFO レベルの値 (8 データ エレメント) より小さい。 これがあなたの質問に答えてくれることを願っています。

さらに質問がある場合はお知らせください。

 

よろしく

ロハン

 

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/PSoC-4/PSoC4-UART-Advanced-Tab-21086204/m-p/691725

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

@Rohan136さん、

お返事ありがとうございます。

残念ながら、私の質問の出発点は間違っていました。
ここで焦点を当てるべきなのは、FIFOレベルではなく、FIFOの深さです。 そのことはすみません。

このトピックで説明されているFIFOの深さを見つけました。
https://community.infineon.com/t5/PSoC-4/PSoC4100SP-SPI-FIFO-depth/m-p/147655#M21774

FIFO の深さにはバイトモードかどうかの 2 つのオプションしかないと理解していますか。
FIFOの深さをユーザーが希望する値に設定する方法があれば、教えてください。

よろしくお願いいたします

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/PSoC-4/PSoC4-UART-Advanced-Tab-21086204/m-p/691932

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは

 

FIFOの深さは、ご存知のように、SCBでは8要素または16要素(バイトモード)です。

しかし、TX/RXバッファのサイズを大きくすることで、TX/RX FIFOよりも大きなデータをソフトウェアバッファとしてメモリにスタックすることができます。

 

MiNe_85951_0-1707445638625.png

 

UDBには最大4バイトのFIFOしかなく、それを超えると内部割り込みを使用してソフトウェアバッファで処理されます。

 

性能を考えると、TX/RXバッファサイズをFIFOより大きくすることはあまり望ましくありませんが、どうしても大量のデータを処理する必要がある場合は、TX/RXバッファサイズ(DMA)を増やす方法があります。

 

MiNe_85951_1-1707446479220.png

 

また、割り込み優先度を高く設定しないと問題になるかも知れません。

過去に UART(UDB) のこの設定で問題が発生しました。

 

たとえば、TX/RX バッファ サイズを 8 より大きい値に設定すると、空ではない DMA と FIFO がグレー表示されTESTBOARD_150PC_OUT )、割り込みも内部的にのみ構成されていることがわかります。

 

よろしく

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/PSoC-4/PSoC4-UART-Advanced-Tab-21086204/m-p/691975

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは、@MiNe_85951さん、

アドバイスありがとうございます。

Tx Bufferのサイズ自体は送信データバッファに割り当てられるサイズを指定していると思いますが、いくら設定しても、設定するとすぐにFIFOに割り当てられるRAM領域は4バイトになります。
その場合、FIFO の深さを決定する要素は、デフォルトの 8 ビット x 16 要素、またはオプションのバイト モードに設定した場合は 16 ビット x 8 要素の 2 つだけで、どちらも RAM 容量として 4 バイトです。
Rx バッファにも同じサイズが割り当てられます。

よろしくお願いいたします

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/PSoC-4/PSoC4-UART-Advanced-Tab-21086204/m-p/692103

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

こんにちは  

 

TX FIFO レベルの設定は次のとおりです。

MiNe_85951_0-1707395590381.png

このコンフィギュレーションの動作は、次に示すようにレベルを 4 に設定すると、FIFO が 4 つのデータ エレメントを下回ると割り込みが発生します。

このFIFOレベルの割り込みは、FIFOがFIFO Full(8要素)に達する前にデータを要求するために使用されます。

MiNe_85951_1-1707395672551.png

私はよく FIFO Full と FIFO Empty を使用しますが、この FIFO レベルは使用したことがありません。

 

UART割り込みを複数使用する場合は、割り込み条件をマスクして処理を書き込む必要があります。

 

よろしく

smartconx_target@Q!w2e3r4t5y6u7i8o9p0||/t5/PSoC-4/PSoC4-UART-Advanced-Tab-21086204/m-p/691780

0 件の賞賛