SlideShare a Scribd company logo
1 of 29
Download to read offline
ご注文はSTM32の開発ですか??
~Is the order a development of STM32 ??~
目次
• 自己紹介
• STM32の開発
• なぜSTM32CubeHALなのか
• 高機能ペリフェラル例、様々なミドルウェア
• STM32開発のはじめ方
• Lチカしてみよう
• ちょっと便利な機能
• CANをCubeHALで使ってみる
• CAN-FDをCubeHALで使ってみる
• STM32G4について
• ブログの紹介
自己紹介
• ロボカップジュニア(2006~2015)
• 静岡大学ロボットファクトリー所属 電装班
• レスキューロボットコンテスト レスキュー工学大賞 他4件
• ロボットグランプリ 大道芸部門 準優勝、ランサー 技術賞
• 計測自動制御学会 SI2018 優秀講演賞
• ロボカップ小型リーグ(SSL) “ibis”
• ロボマスター “Setouchi Salamander“
• ベンチャー企業(C-Point)にて電動バイク開発
STM32の開発
• STM32CubeIDE
なぜ、STM32Cube・HALなのか
• GUIでピン設定、クロック設定を行い、
HALのひな型を吐いてくれる
→GUIでピンを決められるのでミスが少
ない&ソフト的にどこに使うかわかっ
たうえで回路が引ける
• STM32のすべての機能を使え、低レイヤ
まで触ることができる
→高機能ペリフェラルやメモリ管理が
しっかりできる。しかもポチポチだけで
→mbedではない機能もたくさん使える
高機能ペリフェラル例1(DMA)
• DMA(のダイレクト・メモリ・アクセス・コントローラ)
CPUに負荷をかけることなく、ペリフェラルおよびメモリ間 の
効率のよいデータ転送に対応できる
→感覚的にはDMAでペリフェ
ラルを動かすと入力であれば
勝手に配列にデータが入って
いて、出力であれば配列に
データを入れておけば勝手に
転送しておいてくれる感じ
使用例:UART、ADC、I2C
出典:
https://www.st.com/content/ccc/resource/sales_and_marketing/presentation/product_presentation/62/aa/eb/62/d5/a9/4b/bc/07.STM32L4-System-
Direct%20Memory%20Access%20(DMA)%20Final_JP.pdf/files/07.STM32L4-System-
Direct%20Memory%20Access%20(DMA)%20Final_JP.pdf/jcr:content/translations/en.07.STM32L4-System-Direct%20Memory%20Access%20(DMA)%20Final_JP.pdf
高機能ペリフェラル例2
(ARTアクセラレータ)
TCMバス経由でのフラッシュの読み出しウェイトを事実上0にす
るキャッシュ群みたいなもの
→実際flashの速度って80MHz程度が限界なので高速動作でき
ない。
→flashから大量に先読みして
バッファする
出典:https://eda360insider.files.wordpress.com/2011/09/stm32-f4-art-accelerator-block-diagram.jpg
高機能ペリフェラル例3
(タイマー)
• PWM
• エンコーダー入力
出典:https://www.stmicroelectronics.com.cn/content/ccc/resource/sales_and_marketing/presentation/product_presentation/group0/31/ad/bf/68/28/3b/46/fc/43.General-purpose%20timers%20(GPTIM)/files/43.STM32L4-WDG_TIMERS-
General%20Purpose%20Timer%20(GPTIM)%20Final_JP.pdf/jcr:content/translations/en.43.STM32L4-WDG_TIMERS-General%20Purpose%20Timer%20(GPTIM)%20Final_JP.pdf
さまざまなミドルウェアが使える
• LWIP:EthernetでIP通信するためのミドルウェア
• FatFs:ファイル操作
• FreeRTOS:組み込みシステム用のオープンソース
のリアルタイムオペレーティングシス
テム
• USB:USBいじるためのやつ(使ったことない)
出典:http://elm-chan.org/docs/fat.html
出典:https://es.wikipedia.org/wiki/FreeRTOS
STM32開発のはじめ方
①https://www.st.com/ja/development-tools/stm32cubeide.html
からSTM32CubeIDEをダウンロード&インストール
以上!!!!!!!!!
(まじで落としてインストールするだけで使える)
メリット :開発環境が一つにまとまってよい。STの公式サポート。
C++に対応した。
デメリット:ペリフェラル設定画面(以前のCubeMX画面)が1個までしか開けな
くて見比べながらとかができない。
その他の開発環境
• TureStudio+CubeMX:ちょっと前の最強の組み合わせ(個人的)
macだと動かないらしい(Eclipseなのにね)
• CoCoX:使ったことないけど中華製だけあってなんかびみょかった
• SW4STM32:STの有志社員が作ったからバグだらけ
• Keil:フリー版だと書けるサイズに上限があって使えない。
有料版買えた値段じゃない。高すぎ。けどバグはほぼない。
手始めにLチカしてみよう
ここでC++プロジェクトにして
おけば後で.cppに変えれる
ピン設定
• GPIOC,GPIO_PIN13:INPUT
(USERボタン)
• GPIOA,GPIO_PIN5:OUTPUT
(USER_LED)
• SYS →SWD
• RCC → BYPASS or Crystal
BYPASS:ST-Linkに載ってる水晶
からクロックをもらう
Crystal:外部水晶からクロックを
もらう
クロック設定・ジェネレート
内部、外部
選択
ベースクロック指定
Ctr+Sでジェネレートできる
コーディング
if(HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13)){ //ボタン状態取得
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_SET); //ボタンが押されてないときLDE点灯
}
else{
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET); //ボタンが押されたらLED消灯
}
Rename Resourceで.cから.cppに変えることでC++で書けるようになる。
→しかしながらCubeをジェネレートするとそこに上書きされずにmain.cが再
登場する。
書き込み(デバッグ開始)
ビルド
リビルド(初めからすべてビルド)
デバッグ
デバッグ設定(ビルドを一回してからまずここで設定
デバッグ
ブレイクポイントまでプログラムを流す
デバッグ終了
もう一度ビルドしてデバッグ再開
Expression(変数の内容が見れる)
レジスタの内容が見れる
緑になっているところの前まで実行した
ステップオーバー(1行進める)
ちょっと便利な機能1
• カーソルを関数のところに
載せると中身がみれる
• カーソルを変数のところに
合わせると定義が見れる
• F3を押すと定義や関数の
中身に飛べる
ちょっと便利な機能2
• ビルドアナライザー:
メモリの使用率が見れる
• デバッグ画面中のSFRs:
レジスタの生の値見れる&書き換えれる
• デバッグ画面中の式:
変数の値をステップしながら見れる
→ArudinoとかmbedでのPrintfによる
デバッグからの脱却
CANを使う
CANを使う その2
• 用意する変数、構造体等
CAN_TxHeaderTypeDef TxHeader; 送信ハンドラー
CAN_RxHeaderTypeDef RxHeader; 受信ハンドラー
uint8_t TxData[8]; 送信データ配列
uint8_t RxData[8]; 受信データ配列
uint32_t TxMailbox; 送信箱
• 送信フィルタ
TxHeader.StdId = 0x456; 送信ID
TxHeader.RTR = CAN_RTR_DATA;
TxHeader.IDE = CAN_ID_STD;
TxHeader.DLC = 3; 送信byte数
TxHeader.TransmitGlobalTime = DISABLE;
• 受信コールバック関数:
void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan)
• 受信読み出し関数:
HAL_CAN_GetRxMessage(&hcan1, CAN_RX_FIFO0, &RxHeader, RxData)
• 受信開始指令関数:
HAL_CAN_ActivateNotification(&hcan1,CAN_IT_RX_FIFO0_MSG_PENDING)
• 送信関数:
HAL_CAN_AddTxMessage(&hcan1, &TxHeader, TxData, &TxMailbox)
• CANフィルタの記述
→受信IDのフィルタは5bit左シフトして使う
CANを使う その3
CAN-FDを使う
出典:http://www.tij.co.jp/product/jp/TCAN1051G-Q1
• 用意する変数
FDCAN_TxHeaderTypeDef TxHeader;
FDCAN_RxHeaderTypeDef RxHeader;
uint8_t TxData[50];
uint8_t RxData[50];
uint32_t TxMailbox;
• 送信フィルタ
TxHeader.Identifier = 0x123; →送信ID
TxHeader.IdType = FDCAN_STANDARD_ID;
TxHeader.TxFrameType = FDCAN_DATA_FRAME;
TxHeader.DataLength = FDCAN_DLC_BYTES_32; →32byte一気に送れる
TxHeader.ErrorStateIndicator = FDCAN_ESI_ACTIVE;
TxHeader.BitRateSwitch = FDCAN_BRS_ON;
TxHeader.FDFormat = FDCAN_FD_CAN;
TxHeader.TxEventFifoControl = FDCAN_STORE_TX_EVENTS;
TxHeader.MessageMarker = 0x52;
CAN-FDを使う その2
CAN-FDを使う その3
• 受信コールバック関数:
void HAL_FDCAN_RxFifo0Callback(FDCAN_HandleTypeDef *hfdcan, uint32_t RxFifo0ITs)
• 受信読み出し関数:
HAL_FDCAN_GetRxMessage(hfdcan, FDCAN_RX_FIFO0, &RxHeader, RxData)
• 受信開始指令関数:
HAL_FDCAN_ActivateNotification(&hfdcan1,FDCAN_IT_RX_FIFO0_NEW_MESSAGE, 0)
• 送信関数:
HAL_FDCAN_AddMessageToTxFifoQ(&hfdcan1, &TxHeader, TxData)
• CANフィルタの記述
STM32G4について その1
• DSPおよびFPU命令による高い性能と高度な機能を備えた
ミックスド・シグナル・マイコン
• 最大170 MHzで動作するArm® Cortex®-M4(DSPおよび
FPU命令に対応)、3種類のハードウェア・アクセラレータ
• CAN-FDに対応
• CORDIC演算に対応 →双曲線関数と三角関数を計算する
ための単純で効率的なアルゴリズム
• 安い(G474が高いだけでそれ以外は大体600円程度)
STM32G4について その2
っで実際どうなの?編
• CAN-FDについて
→とりあえず使えてる。ボーレートもちゃんと2MBps出せた。
→今までのCANとは全然設定項目・名前が違った
→データ長は0~8、12、16、20、24、32、48、64バイトが選択
→実際に32バイト一気に送れた
• CORDIC演算
→とりあえず動いた。
→sin計算はmath.hの38倍くらいはやかった。
→固定小数点なので人間がパッと見て数値がわからん
→DMAで専用ハードに条件投げるだけなのでメインの処理
に関係なく演算ができる
ブログの紹介
• CubeHALのテストしたときの記事
のまとめ(リンク集)があります。
• その他STM32開発の記事を多めに
書いてます。
→URL埋め込まれてる
QRコード
ありがとうございました

More Related Content

Similar to ご注文はSTM32の開発ですか?

Re-collection of embedded software qa in the last decade
Re-collection of embedded software qa in the last decadeRe-collection of embedded software qa in the last decade
Re-collection of embedded software qa in the last decadeYasuharu Nishi
 
NHKロボコンにおける機械開発
NHKロボコンにおける機械開発NHKロボコンにおける機械開発
NHKロボコンにおける機械開発MasayaMorinaga
 
中島毅, SQuaREシリーズの将来⽅向 スタディグループ報告と国際標準化加速プロジェクトの紹介
中島毅, SQuaREシリーズの将来⽅向 スタディグループ報告と国際標準化加速プロジェクトの紹介中島毅, SQuaREシリーズの将来⽅向 スタディグループ報告と国際標準化加速プロジェクトの紹介
中島毅, SQuaREシリーズの将来⽅向 スタディグループ報告と国際標準化加速プロジェクトの紹介Hironori Washizaki
 
RTBにおける機械学習システムの実装と運用
RTBにおける機械学習システムの実装と運用RTBにおける機械学習システムの実装と運用
RTBにおける機械学習システムの実装と運用Atsuhiro Narita
 
ROBOMECH2021 RTM講習会 第1部
ROBOMECH2021 RTM講習会 第1部ROBOMECH2021 RTM講習会 第1部
ROBOMECH2021 RTM講習会 第1部openrtm
 
テストスイートアーキテクチャへのアーキテクチャ検証手法ATAMの 適用
テストスイートアーキテクチャへのアーキテクチャ検証手法ATAMの 適用テストスイートアーキテクチャへのアーキテクチャ検証手法ATAMの 適用
テストスイートアーキテクチャへのアーキテクチャ検証手法ATAMの 適用tomohiro odan
 
Open capi meetup20180305
Open capi meetup20180305Open capi meetup20180305
Open capi meetup20180305Yutaka Kawai
 
Bee Style:vol.020
Bee Style:vol.020Bee Style:vol.020
Bee Style:vol.020spicepark
 
SCG-AT:静的コード生成のみによる自動チューニング実現方式
SCG-AT:静的コード生成のみによる自動チューニング実現方式SCG-AT:静的コード生成のみによる自動チューニング実現方式
SCG-AT:静的コード生成のみによる自動チューニング実現方式Takahiro Katagiri
 
開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜
開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜
開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜Takahiro Yamaki
 
200520 ユビキタスロボティクス特論
200520 ユビキタスロボティクス特論200520 ユビキタスロボティクス特論
200520 ユビキタスロボティクス特論NoriakiAndo
 
131017 cnr研究会 ando
131017 cnr研究会 ando131017 cnr研究会 ando
131017 cnr研究会 andoopenrtm
 
SORACOM STUDY GROUP 九州 | IoTプラットフォームSORACOM
SORACOM STUDY GROUP 九州 | IoTプラットフォームSORACOMSORACOM STUDY GROUP 九州 | IoTプラットフォームSORACOM
SORACOM STUDY GROUP 九州 | IoTプラットフォームSORACOMSORACOM,INC
 
160705-w01 RTミドルウエア講習会・早稲田大
160705-w01 RTミドルウエア講習会・早稲田大160705-w01 RTミドルウエア講習会・早稲田大
160705-w01 RTミドルウエア講習会・早稲田大openrtm
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)シスコシステムズ合同会社
 
大阪市南港ATC イメディオ IoT・ M2Mセミナ資料(web公開用)
大阪市南港ATC イメディオ IoT・ M2Mセミナ資料(web公開用)大阪市南港ATC イメディオ IoT・ M2Mセミナ資料(web公開用)
大阪市南港ATC イメディオ IoT・ M2Mセミナ資料(web公開用)Yukio Kubo
 
ワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeployワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeployRyutaro YOSHIBA
 
AIスピーカーとオープンネットワーク機器LonWorks・EnOcean・DALI 接続実証実験
AIスピーカーとオープンネットワーク機器LonWorks・EnOcean・DALI 接続実証実験AIスピーカーとオープンネットワーク機器LonWorks・EnOcean・DALI 接続実証実験
AIスピーカーとオープンネットワーク機器LonWorks・EnOcean・DALI 接続実証実験TomohisaYamazoe
 

Similar to ご注文はSTM32の開発ですか? (20)

Re-collection of embedded software qa in the last decade
Re-collection of embedded software qa in the last decadeRe-collection of embedded software qa in the last decade
Re-collection of embedded software qa in the last decade
 
NHKロボコンにおける機械開発
NHKロボコンにおける機械開発NHKロボコンにおける機械開発
NHKロボコンにおける機械開発
 
中島毅, SQuaREシリーズの将来⽅向 スタディグループ報告と国際標準化加速プロジェクトの紹介
中島毅, SQuaREシリーズの将来⽅向 スタディグループ報告と国際標準化加速プロジェクトの紹介中島毅, SQuaREシリーズの将来⽅向 スタディグループ報告と国際標準化加速プロジェクトの紹介
中島毅, SQuaREシリーズの将来⽅向 スタディグループ報告と国際標準化加速プロジェクトの紹介
 
RTBにおける機械学習システムの実装と運用
RTBにおける機械学習システムの実装と運用RTBにおける機械学習システムの実装と運用
RTBにおける機械学習システムの実装と運用
 
ROBOMECH2021 RTM講習会 第1部
ROBOMECH2021 RTM講習会 第1部ROBOMECH2021 RTM講習会 第1部
ROBOMECH2021 RTM講習会 第1部
 
テストスイートアーキテクチャへのアーキテクチャ検証手法ATAMの 適用
テストスイートアーキテクチャへのアーキテクチャ検証手法ATAMの 適用テストスイートアーキテクチャへのアーキテクチャ検証手法ATAMの 適用
テストスイートアーキテクチャへのアーキテクチャ検証手法ATAMの 適用
 
Bee Style:vol.042
Bee Style:vol.042Bee Style:vol.042
Bee Style:vol.042
 
Open capi meetup20180305
Open capi meetup20180305Open capi meetup20180305
Open capi meetup20180305
 
Bee Style:vol.020
Bee Style:vol.020Bee Style:vol.020
Bee Style:vol.020
 
SCG-AT:静的コード生成のみによる自動チューニング実現方式
SCG-AT:静的コード生成のみによる自動チューニング実現方式SCG-AT:静的コード生成のみによる自動チューニング実現方式
SCG-AT:静的コード生成のみによる自動チューニング実現方式
 
開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜
開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜
開発リードタイム短縮への挑戦 〜とある現場のパターン・ランゲージ〜
 
200520 ユビキタスロボティクス特論
200520 ユビキタスロボティクス特論200520 ユビキタスロボティクス特論
200520 ユビキタスロボティクス特論
 
Bee Style:vol.027
Bee Style:vol.027Bee Style:vol.027
Bee Style:vol.027
 
131017 cnr研究会 ando
131017 cnr研究会 ando131017 cnr研究会 ando
131017 cnr研究会 ando
 
SORACOM STUDY GROUP 九州 | IoTプラットフォームSORACOM
SORACOM STUDY GROUP 九州 | IoTプラットフォームSORACOMSORACOM STUDY GROUP 九州 | IoTプラットフォームSORACOM
SORACOM STUDY GROUP 九州 | IoTプラットフォームSORACOM
 
160705-w01 RTミドルウエア講習会・早稲田大
160705-w01 RTミドルウエア講習会・早稲田大160705-w01 RTミドルウエア講習会・早稲田大
160705-w01 RTミドルウエア講習会・早稲田大
 
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(応用編)
 
大阪市南港ATC イメディオ IoT・ M2Mセミナ資料(web公開用)
大阪市南港ATC イメディオ IoT・ M2Mセミナ資料(web公開用)大阪市南港ATC イメディオ IoT・ M2Mセミナ資料(web公開用)
大阪市南港ATC イメディオ IoT・ M2Mセミナ資料(web公開用)
 
ワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeployワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeploy
 
AIスピーカーとオープンネットワーク機器LonWorks・EnOcean・DALI 接続実証実験
AIスピーカーとオープンネットワーク機器LonWorks・EnOcean・DALI 接続実証実験AIスピーカーとオープンネットワーク機器LonWorks・EnOcean・DALI 接続実証実験
AIスピーカーとオープンネットワーク機器LonWorks・EnOcean・DALI 接続実証実験
 

ご注文はSTM32の開発ですか?