ガレスタさんのDIY日記

電子回路、Web、組み込み、自作エフェクターを語るblog

STM32

STM32CubeProgでUARTを使ったフラッシュ書き換えを試す

STM32に関しては久しぶりですが 今回はSTからリリースされたSTM32CubeProgというソフトについてみていこうと思います。 STM32CubeProg www.st.com簡単に説明するとSTlink utility とかflash loaderとかdfuツールとかそういうのが一緒になってWindows,Mac ,Li…

STM32F767 SAIについてメモ1

今回はSerial Audio Interfaceの話です タイトルはF7となっているがSTがラインナップごとにCubeHALの仕様変えなければ同じように考えることができると思います。まずSAIについて基礎的なことはこの辺を読んでくださればわかると思います。 http://www.st.com…

EclipseのTODO機能が意外に便利やぞって話

タイトルの通りTODO機能がいいですって話です。 (adsbygoogle = window.adsbygoogle || []).push({}); ものとしてはコメントにTODOを打つとTaskに追加されてやることが整理されるって機能。 使い道 疑似コード書いといて整理したい時とかに使える。 とりあえ…

ARMのData Watchpoint and Trace Unitを使って処理時間計測をしてみよう

毎度おなじみのARM共通の機能を使ってみようの記事です。 (adsbygoogle = window.adsbygoogle || []).push({}); GPIOを使った処理時間の計測 まあオシロスコープがある方はこういう計測方法をよくやると思います。 MCU_GPIO_WRITE(GPIO_PORT_A,GPIO_PIN_13,T…

STM32 ARTアクセラレータで高速化してみる。

stm32 Advent Calendar 2017 16日目の記事です。100MHz越えのマイコン使ってるけど思ったより計算速度が出ない・・・・っていう問題があって色々調べたらフラッシュの速度が原因だった。 そこでSTのARTアクセラレータの機能を使って信号処理の高速化をやって…

CMSIS DSP:FIRフィルタをやってみる

公開してるがかなり追記の予定 (adsbygoogle = window.adsbygoogle || []).push({}); 前回はIIRについてやったので今回はFIRについてやってみます。 今回もリアルテック氏(@realteck_KY )に協力してもらってます。 みればわかるとおりに移動平均の数を増や…

CMSIS DSP:biquad-low-passをやってみる

今回はフィルタのお話です。 今まで作ってたSAIペリフェラルを使ったデジタルエフェクタのプラットフォームがある程度動作するようになったので部屋にこもってオシロスコープとお友達になりながら格闘していました。 んなわけでいくつかエフェクト使った後に…

AtollicにRunボタンがないのでそれっぽいデバッグ設定を作る

皆さんこんばんわ僕はいままでSW4STM32を使っていたのですがひょんなことからAtollicTrueStudioに切り替えました。 そうしたら上のほうにあったRunボタンがないんですね・・・ このRun機能書き込みリセットだけを行う機能でわざわざデバッグ起動しなくてもプ…

STM32のタイマークロックについて

ここ最近タイマーを結構使うようになってクロック源について悩んだのでメモ僕が普段使っているSTM32F7のタイマーのクロック源としてはAPB1、APB2の二つがある。 んでCubeでクロック設定をしている僕は気にしていなかったのだけどたくさん使うようになってど…

NVIC_SetVectorについて

久々にST限定じゃなくARM全般の話ですね。 NVIC_SetVectorについて Set Interrupt Vectorともあるように割り込みベクターを再セットするAPIです。主にこうやって使います。 NVIC_SetVector(SPI3_IRQn, (uint32_t)my_irq_handler); 第一引数は割り込み番号で…

AtollicTrueStudioのC++コンバート機能を使ってSTM32 CubeMX生成プロジェクトをC++で開発

経緯 ここ最近外部I2Cデバイスのドライバやらを書いていたのだがオブジェクトな書き方をCでやろうとするとポインタ型の代入が大量に発生するのでややこしいしめんどい C++ならメンバ関数が使えるのでインスタンスを生成すればIDEの補完機能でPrefixから呼べ…

STM32のUSBCDCでMicroShellを動かす

前回まででUSBCDC(コミュニケーションデバイスクラス)でVCP(VirtualCOMPort)の動作は確認できたので今回はこれにMicroShellを使える状態していく作業になります。 CDCのやり方はこの記事みてくれ gsmcustomeffects.hatenablog.comやることは 1文字送受信…

Eclipseでファイル比較を使う

ここ最近USB系やっていてサンプルを参考にしつつ書くことが多い。 その中で2ファイル中の差異を比較できたら便利だと思って比較機能を使ってみることにした。やり方はこういう感じでファイルをCtrl推しながら選んで右クリックで相互を選ぶ(当方の環境はAtol…

Eclipseでファイル横断サーチする

僕はARMマイコン開発でもっぱらEclipseベースIDEを使用するわけなんですがその途中でワード検索よく多用します。 Ctrl+Fの検索機能は一般的なサーチです。しかしこれではファイル内しか検索できませんので単一ソースの確認しかできません 最近のマイコンの場…

自分用メモ デバイスディスクリプタ

デバイスディスクリプタはディスクリプタ階層の一番上に属する。一応書いておくと以下のような感じだ ┏デバイスディスクリプタ ┝コンフィグレーションディスクリプタ ┝インターフェイスディスクリプタ ┝エンドポイントディスクリプタ役割としては主にVID,PID…

自分用メモ コンフィグレーションディスクリプタ

前回CDCやったのでそれの補足ディスクリプタは以下のような構成になっている。┏デバイスディスクリプタ ┝コンフィグレーションディスクリプタ ┝インターフェイスディスクリプタ ┝エンドポイントディスクリプタデバイスディスクリプタについては前回やったの…

STM32F767NuceloでUSBCDCをやってみる。

前回の日記でCDCやってるということ書いたのでとりあえずやり方メモ STM32F767Nucleo144 を利用してます CubeMXでの操作 CubeMXを開いてUSB_OTG_FSをデバイスに設定次にクロック設定 USBペリフェラルに48MHzになるように持っていく 他は適当にやって行くその…

WEAKシンボルについて

ここ最近ARM系のお勉強を頑張っています。 今日はWEAK修飾子についてです。 STを例に話すと割り込み後に呼ばれるコールバックってのがWEAKマクロを使って記述されてます。 定義先に行くと __weak void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *hti…

STM32F042K6T6のUSB付きの基板を作った

前回はこんなの作った話をした gsmcustomeffects.hatenablog.comそれにUSBで電源とれるようなの作った。 目的はUSBコネクタのリフローの練習だけというねw なので信号線はつながってない。というかF030にはUSB機能がない (adsbygoogle = window.adsbygoogle…

SAIペリフェラルでトークスルーを動かす

前回こういう記事を書きました。 gsmcustomeffects.hatenablog.comこれは酔漢氏が作成された手順に基づき何から何までプラットフォームにお世話になって実現しているものです。 なので今回はちょっと変えてみようという考えに基づきやってみた第二段というわ…

FusionPCBでSTM32F042K6T6の基板を作ったよって話

今回はFusionPCBのレビューも兼ねて基板作ったのでそれの話です。とはいっても話すことは特になくてクーポンもらえたので基板ちゃちゃっとかいた感じです。

STM32でSPI通信をやってみる1(ポーリングでマイコン同士で通信編)

今回はCubeHALライブラリを用いてSPI通信をやってみる記事です。STM32のSPIは全二重、半二重、単方向、マルチマスターモードなどいろいろ対応してますが今回は一般的な全二重でやってみようと思います。 Pin Name description MOSI マウターアウトスレーブイ…

CubeMX4.20のHSEクロック関連出力コードのバグ?

CubeMX4.20のコード出力バグッぽいの見つけたのでかいときます。 前までのVerで動いてたいのですがHSE(外部クロック)を選択した際動かなくなったのでいろいろ調べてたら海外で同じような事例を発見http://www.openstm32.org/forumthread4665 RCC_OscInitSt…

AtollicTrueStudioでHex,binを生成する方法(自分用メモ

当たり前のことなので自分用メモとしておきます。 Hex,binの生成方法 プロジェクトのプロパティを選択C/C++Buid>>Setting>>ToolSetting>>Other>>Output formatIntelHexを選択あとはリビルド コマンドから作る方法 C/C++Buid>>Setting>>BuildSteps>>PostBuild…

STM32でADCをやってみる2(DMAを使ったレギュラ変換)

前回は単一チャンネルの変換を行ったが今回はDMAを使ったものをやって行こうと思う。 とりあえずADCおさらい ADCは変換終了フラグ(EOC)を見てDRレジスタを見に行くことで変換データを得ることができる。上記の図のようにシーケンスの終了でもフラグが立つ…

STM32でADCをやってみる1(レギュラ変換)

今回は一番簡単なやつやってみます。やったことを雑に書くとこんな感じ レギュラ変換 ADC2の1CHだけを使った連続変換 PB4ピンにポテンショメータをつなぎそれを読む 変換値をUARTでTeratermに表示する。 CubeMXでの設定 今回は一個しか読まないのでこのよう…

STM32でCMSIS DSPを使ってみる その1

今回は高速に三角関数とかを計算できるARM社提供ライブラリであるCMSIS DSPライブラリを使ってみる話です。 こいつを使うとsin,cosとかよく使う三角関数やaddとかを高速に処理できます。 そのほかFIR,IIRと言ったデジタルフィルタ用のAPIだったり制御用のAPI…

STM32でUARTをやってみる6(float型printfをUART経由で出力)

何だかんだこのシリーズも6個目ですねw前回まででUARTの基本的な使い方はマスターしたと思います。 今回はCubeMXでの出力は詳しくは解説しないのでまだの方は1から読んでみてくださいgsmcustomeffects.hatenablog.comgsmcustomeffects.hatenablog.comgsmcus…

ARMのソフトウエアトリガ割り込みについて

ARMのソフトウエア駆動割り込みの覚え書きです。ARMの割り込みはNVIC(統合ネスト型ベクタ割り込みコントローラ)で管理されていますがその中でSTIRというレジスタがあります図で言うと赤の部分ですね詳細はこちらになります Write to the STIR to generate …

STM32でI2C通信をやってみる

この記事は現在一緒に開発やってくれてるオカダ twitter.com と共同でデバッグしてた時の記録です。一応動いていますがHALのバグなのか正しい使い方なのかは不明です。やる際は自己責任でお願いします。 (adsbygoogle = window.adsbygoogle || []).push({});…