ふためも

技術のさまざまをメモ

STM32のADCをDMAで使うときにはまった話

| 0件のコメント

初期化順が よろしくなかった。

ADCの設定方法は検索すれば、たくさん出てきます。

どのサイトに従っても、1wordしか変換できず。途方にくれてました。

しかも、L0ってレギュラ変換で複数chする場合DMAは絶対なんですよね。

それで色々やった結果思い出した。

初期化順が違うと変換できなかったよな!?!?

ってことで

これを…

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_ADC_Init();
  MX_I2C2_Init();
  MX_SPI2_Init();
  MX_USB_DEVICE_Init();
  MX_DMA_Init();
  MX_TIM6_Init();

こう!!!

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_I2C2_Init();
  MX_SPI2_Init();
  MX_USB_DEVICE_Init();
  MX_DMA_Init();
  MX_ADC_Init();
  MX_TIM6_Init();

ADCが先に初期化されると、DMAがまともに動かなくて、データサイズ分を一度転送するとオーバランとか完了してサーキュラ動作しない。

3度くらいはまったのでメモしておく。

追記20220203

CubeIDEを使ってるとき恒久的に順番を変えるにはprojectの.iocからProjectManager→AdvancedSettingで

ADC選択してDownStepでDMAより後に持っていく。

コメントを残す

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