DMA
DMAを使うときの注意
stm32ではDMA転送に使うメモリの先頭アドレスはアラインメントの境界にしておく必要あり、stm32は32bitマイコンなので、アラインメントは4byte(32bit)である。
stm32において変数の大きさの呼び方
- WORD 4byte
- Half WORD 2byte
- Byte 1byte
CubeMXのDMA転送の設定にもこう記載されているね。
WORDはそのプロセッサのサイズによって変わってくる。
stm32は32bitマイコンなのでWORDは32bitすなわち4byte
Word size of stm32l100
aligned
変数属性をつけることで変数や構造体フィールドの最小境界列をバイト単位で指定可能。
4byteの境界で整列させたい場合は以下の通り
uint8_t dmabuf[bufsize] __attribute__ ((aligned(4)));
調査メモとして
STM32のUARTをDMAで使う時の注意
MIZUHO/firmware/src/peripheral/uart.c
STM32F429I-DISCOとUARTとDMA
STM32: Implementing UART in DMA mode
stm32FのDMA Circular mode を使ったUART受信
STM32F4 UART DMA
STM32 tutorial: Efficiently receive UART data using DMA
['Best' way to load UART data to ring buffer with STM32/HAL](http://www.eevblog.com/forum/microcontrollers/_best_-way-to-load-uart-data-to-ring-buffer-with-stm32hal/msg1071268/#msg1071268