ArdSCSino Plus (STM32F4) の PlatformIO でのビルド
前提:ArdSCSino(STM32F1) がビルドできるていること。
これは ネット情報など調べれば難しくないと思いますので省略。
1.PlatformIOのパッケージ(framework-arduinoststm32-maple)ソースを修正
(1)platformio-build-stm32f4.py
フォルダ:C:\Users\ユーザ名\.platformio\packages\framework-arduinoststm32-maple\tools
追加修正内容:
<貼り付け用テキスト>
"netduino2plus": "discovery_f407",
"genericSTM32F401CC": "blackpill_f401",
"genericSTM32F411CE": "disco_f411",
<貼り付け用テキスト>
"build.arduino.error_led_pin", "PC13"))
# "build.arduino.error_led_pin", "PD14"))
(2)blackpill_f401.h
フォルダ:C:\Users\ユーザ名\.platformio\packages\framework-arduinoststm32-maple\STM32F4\variants\blackpill_f401
追加修正内容:
<貼り付け用テキスト>
#define BOARD_SPI1A_NSS_PIN PA15
#define BOARD_SPI1A_SCK_PIN PB3
#define BOARD_SPI1A_MISO_PIN PB4
#define BOARD_SPI1A_MOSI_PIN PB5
#define BOARD_SPI3A_NSS_PIN PA4
#define BOARD_SPI3A_SCK_PIN PC10
#define BOARD_SPI3A_MISO_PIN PC11
#define BOARD_SPI3A_MOSI_PIN PC12
#define BOARD_SPI4_NSS_PIN PB12
#define BOARD_SPI4_SCK_PIN PB13
#define BOARD_SPI4_MISO_PIN PA11
#define BOARD_SPI4_MOSI_PIN PA1
#define BOARD_SPI5_NSS_PIN PB1
#define BOARD_SPI5_SCK_PIN PB0
#define BOARD_SPI5_MISO_PIN PA12
#define BOARD_SPI5_MOSI_PIN PA10
#define BOARD_SPI5A_MOSI_PIN PB8
#define BOARD_SDIO_D0 PB4
#define BOARD_SDIO_D1 PA8
#define BOARD_SDIO_D2 PA9
#define BOARD_SDIO_D3 PB5
#define BOARD_SDIO_CLK PB15
#define BOARD_SDIO_CMD PA6
フォルダ:C:\Users\ユーザ名\.platformio\packages\framework-arduinoststm32-maple\STM32F4\variants\disco_f411
追加修正内容:
<貼り付け用テキスト>
#define BOARD_SPI4_NSS_PIN PB12
#define BOARD_SPI4_SCK_PIN PB13
#define BOARD_SPI4_MISO_PIN PA11
#define BOARD_SPI4_MOSI_PIN PA1
#define BOARD_SPI5_NSS_PIN PB1
#define BOARD_SPI5_SCK_PIN PB0
#define BOARD_SPI5_MISO_PIN PA12
#define BOARD_SPI5_MOSI_PIN PA10
#define BOARD_SPI5A_MOSI_PIN PB8
2.パッケージのバージョン?が違う場合
“1.”の変更でエラーなくビルドできるのですが、手順を書こうと新環境でビルドしたものでは SDカードが認識されませんでした。
旧環境と比較すると、パッケージの framework-arduinoststm32-maple のバージョンが違う??
・新環境(通常手順で自動構築?)のソースの日付:2020年12月頃
・旧環境のソースの日付:2022年9月頃
実は、PlatformIOでF4(maple)をビルドするための情報が無く、正常にビルドができる環境を構築するのに 数週間は試行錯誤していたので どこの時点で新しいものに更新されたのか、元々だったのか、思い出せないというか、判りません。。
【追記】
元ソース、判りました。Arudino IDE の開発環境 構築で使用したファイル群をコピーして置き換えたものでした。どちらのパッケージが良いかは判りませんが参考までに。
・androda/Arduino_STM32 https://github.com/androda/Arduino_STM32
もし、2020年12月頃のパッケージの場合、とりあえず以下のような修正をすれば良さそうです。
・SPI.cpp
フォルダ:C:\Users\ユーザ名\.platformio\packages\framework-arduinoststm32-maple\STM32F4\libraries\SPI\src
追加修正内容:
<貼り付け用テキスト>
if ( transmitBuf==NULL ) {
if ( receiveBuf!=NULL ) {
dmaTransfer(ff, receiveBuf, length, flags);
}
return;
} else {
if ( receiveBuf==NULL ) {
dmaSend(transmitBuf, length, flags);
return;
}
PRINTF("<dTb-");
dmaWaitCompletion();
_currentSetting->dmaTxBuffer = transmitBuf;
_currentSetting->dmaTrxLength = length;
_currentSetting->dmaTrxAsync = (flags&DMA_ASYNC);
dmaTransferSet(receiveBuf, (flags&(DMA_CIRC_MODE|DMA_TRNS_HALF)) | DMA_MINC_MODE);
dmaTransferRepeat();
PRINTF("-dTb>\n");
}
<貼り付け用テキスト>
if ( receiveBuf==NULL ) {
dmaSend(tx_data, length, flags);
return;
}
コメント
コメントを投稿