ふためも

技術のさまざまをメモ

STM32H7でDMAを使う(uVision)

| 0件のコメント

巷にあふれるSTM32でDMAするコードを参考にするとHAL_DMA_ERROR_TEで止まる。

データを受信してもメモリに転送できずに失敗している模様情報が無かったので残す

H7ではDMAのメモリ確保が面倒だったので、メモ

CubeIDEから吐いたコードはDTCM領域を使ってメモリを確保する。

後ろにあるSRAMは使わないw

たっぷりメモリあるのになんて無駄な。。。定義ぐらい書けばいいのに。

なので、リンカを書き換える

; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************

LR_IROM1 0x08000000 0x00100000 { ; load region size_region
ER_IROM1 0x08000000 0x00100000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
}
RW_IRAM1 0x20000000 0x00020000{ ; RW data
.ANY (+RW +ZI)
}

}

コレを・・・

; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************

LR_IROM1 0x08000000 0x00100000 { ; load region size_region
ER_IROM1 0x08000000 0x00100000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
}
RW_IRAM1 0x20000000 0x00020000{ ; RW data
.ANY (+RW +ZI)
}
RAM_D2 0x30000000 0x00020000{
* (.RAM_D2)

}
}

こう!

コレでSRAM領域を使うので

__attribute__ ((section(“.RAM_D2”))) __attribute__ ((aligned (4)))

を設定してやると、バッファがSRAMに配置される。

リンカの設定も.sctファイル使うようにしておく。

コメントを残す

必須欄は * がついています