LPC845 DMAはGPIOを0xA0000000で書き込めないようです
GPIO書き込みを実行しようとすると、DMA0 ->ERRINT=1 というエラーが発生します。
トラブルシューティングの手順として、宛先アドレスをRAMに変更したところ、ERRINTフラグは発生しなくなりました。
これが本当に不可能なのかどうかを断定できる情報源は見つかりませんでした。
決定的ではないものの、その可能性を示唆する参考文献を見つけました:
https://community.nxp.com/t5/LPC-Microcontrollers/Lpc-824-DMA-to-GPIO/m-p/650903
どなたか確認してもらえますか?
こんにちは、 @phatpaul
ご質問ありがとうございます。
はい、LPC845 DMAコントローラはアドレス0xA0000000のGPIOレジスタ空間に直接書き込みできません。The GPIO ペリフェラル is コネクテッド through the Cortex-M0+ I/O bus for fast CPU アクセス, whereas the DMA コントローラ アクセス memories and supported ペリフェラル through the AHB/APB bus インフラ.
さらに、LPC845のデータシートには次のように記載されています。
「DMAコントローラーはすべてのメモリとUSART、SPI、I2C、DAC、そしてキャパシティブタッチにアクセスできます。」
GPIOはDMAがアクセス可能なペリフェラルには含まれていません。したがって、GPIOレジスタ空間へのDMA転送はサポートされておらず、転送エラー(ERRINT)が発生します。これは、お客様が観察された動作と一致しています。
よろしくお願いします。
BR
アリス