がれすたさんのDIY日記

電子回路、Python、組み込みシステム開発、自作エフェクターを語るblog

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

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

Python:ディレイの実装

今回はディレイを実装していきます。 いわゆる遅延系エフェクトでやまびこ効果とか言われるやつです。 ディレイの実装には参考文献に示すようにフィードバックの仕方によっていろいろな種類がありますが一般的なフィードバックありミックスありの通常のタイ…

Python:ビブラートとコーラス:2

前回の記事ではPythonでビブラートエフェクトとコーラスエフェクトを実装した。 今回はFM変調とBessel関数に関して面白い記述*1があったのでほとんどパクりだけど(情報は多いほうがいいに決まってるw)それについてみていく FM変調 FM変調は以下の式で示さ…

Python:ビブラートとコーラス:1

今回はFM変調を用いたビブラートとコーラスを実装していきたいと思います。 原理 遅延回路(アナログで言うところのBBD)のクロックをLFO(変調波形)で変えることにより周波数方向に揺れた音を作るエフェクトです。基本式は以下のようになります。 A:原音信…

Python:正弦波合成

デジタル信号処理での正弦波の作り方 create_func.py import numpy as np def create_sin(amplitude,freq,frame,*,sampling = 48000): data = np.zeros(frame,dtype = np.float) for n in np.arange(1,frame): sine = amplitude * np.sin(2 * np.pi * freq *…

Python:リングモジュレーターの実装②

前回はリングモジュレータを実装したのでもう少し細かく見てみようということで数式をあげながら理論を追ってみる前回の記事は此方 gsmcustomeffects.hatenablog.com (adsbygoogle = window.adsbygoogle || []).push({}); 原理 被変調波(原音)をと置くとリ…

Python:ScipyでFFTを行う

scipyのfftメソッドは二つありますがscipy.fftを使うことが推奨されてるようです。 コード import matplotlib.pyplot as plt import numpy as np from scipy.fft import fft, fftfreq f0 = 1000 fs = 96000 N = 5000 addnum = 5.0 def create_sin_wave(ampli…

Python:リングモジュレーターの実装①

(adsbygoogle = window.adsbygoogle || []).push({}); 今回はリングモジュレータを実装していく。 リングモジュレータ 入力と関係ない音程を出すエフェクター。マルチ・エフェクターに組み込まれていることもある。かなり前衛的な演奏ができる。(weblio引用 …

Python:ステレオwavファイルをLRに分ける

基礎編です。 信号処理をやって行くにあたりまずは入力となるwavファイルについて知っておく必要がある。 フォーマットに関してはここを読んでほしい http://sky.geocities.jp/kmaedam/directx9/waveform.htmlまあ簡単に言えばヘッダー情報の後はLRLRLRと信…

logicool K380の紹介

最近キーボードがタンブラー転倒により水没したので買い替えました。 Amazonで2700円ぐらいでした。 最近机の上にマイクロスコープだったりリワークステーションだったが増えてきて邪魔になりつつあったのでBluetoothかつ小ぶりなものを選んだ。結構使いやす…

2018開発環境の紹介

ツールだったり調達先だったりをまとめてくれと前々から言われていたので簡単にまとめてみようと思う。 ハードウエア環境、基板メーカー、部品調達先、ソフトウエア環境な感じで紹介していく感じにしようかなと というわけで今回はハードウエア面のことをや…

自作エフェクタデザインのぺーじ

(adsbygoogle = window.adsbygoogle || []).push({}); ここ最近エフェクターの創作アイデアをゆきょんくん(@Yukyoooon)と一緒にやってるのでそれの紹介 僕が適当に構図指定するとそれを送ってくれるので非常に助かってます。デザインは上から順に新しいの…

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アクセラレータの機能を使って信号処理の高速化をやって…

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

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

STM32のUSBCDCでMicroShellを動かす

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

WEAKシンボルについて

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

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

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

ZOOM MS50g,MS70CDRのMIDI制御

今回はZOOM社のマルチストンプのMIDI制御についてです。一年前ぐらいにUSBHOSTでMIDI制御しましたがいろいろ発見があったので今回こうして書いているわけです。 (adsbygoogle = window.adsbygoogle || []).push({});

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({});…

STM32のMCO機能を使ってGPIOからクロックを出してみる

MCO機能 マイクロコントローラクロック出力(MCO)機能では、外部 MCO ピンにクロックを出力することができます。5 つのクロック信号のうちの 1 つを MCO クロックとして選択できる。実際の使用例ではNucleoなんかがそうですね、 STLINKのF103からボード上の…

STM32でUARTをやってみる5(MicroShell

こんかいもUARTのネタです中村さん作のMicroShellの話でございます。実を言うと中村さんには一度SignalBottomでお会いしたことがあります。 その時は中村さんの作品を一つしか使ったことなかったので次回お会いできる機会があれば聞いて見たいことをいっぱい…

STM32でUARTをやってみる4(Chanさんのxprintf)

今回はやっとこの話題を書いていく。 uart_getc uart_putc uart_puts が必要なのでそれを読んでほしいgsmcustomeffects.hatenablog.com Xprintf 組み込み用printfモジュールである。 まあ組み込みだと素のprintfが使えないことが多いしましてやUARTに吐くと…

STM32でUARTをやってみる3

前回と前々回でUARTのくっそ簡単な送受信について書いたんだけど今回はグローバル変数いちいち作るのダサいしそんなのあんましつかわんよね見たいな感じだったので LPCマイコンのAPIで用意されてるやつをSTMでも作ってみようということで uart_getc uart_put…

STM32でUARTをやってみる2

はじめに 前回はすごく簡単なUARTのHelloWorldをやったので今回は受信とかやってみようと思う。ちなみに前回の記事はコレgsmcustomeffects.hatenablog.comCubeMXの設定は前回と同じ Ac6での作業 今回やること 'a'を受け取ったらボード上のLEDが点灯 'b'を受…