前回の記事に書いたように、USARTの送受信にDMAを使うようにした結果、通信速度として240Kをサポートすることができるようになりました。DMAの単位は40バイトとしてありますが、それだけだと、40バイト分のデータがそろわないとDMAが開始/終了しないことになってしまいます。そこで、1ms毎のタイマ割り込みも併用して、タイマ割り込み時に送信データがあればDMAを開始し、受信のDMA転送が進んでいれば、転送済みのデータ分だけば上位レイヤのバッファに渡すようにしています。
受信データについては、最悪1msの処理遅れが発生してしまうことにことになりますが、割り込み回数は大幅に低減されて受信の取りこぼしはなくなったようです。
受信データについては、最悪1msの処理遅れが発生してしまうことにことになりますが、割り込み回数は大幅に低減されて受信の取りこぼしはなくなったようです。