がれすたさんのDIY日記

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

MIMXRT1050のUSB AudioでMIDIStreamingSubClassを使う1

現状USB MIDI機器として認識するようになったのでまとめておきます。 MCUXpressoSDK USB libのaudio_generator_lite_bmのusb_device_descriptor.cを修正する形で書いたのでそのまま置き換えればPCからはUSB MIDI機器として認識されると思います。 /* * Copyr…

MIMXRT10xxのUART DMAメモ

前回は割り込みについてやったので今回はDMAについてメモを書く 参考には公式サンプルのlpuart_edma_transferを使うのでそれを参考にしてください。公式サンプルが動作コードなので使い方的なのは解説しません DMA部分のメモ ポーリング、割り込みとは違いDM…

MIMXRT10xxのUART割り込みメモ

UARTの割り込みについて少し迷ったのでメモ代わりに残しておく。 コードに関しては公式のサンプル内にあるlpuart_interrupt_rb_transferってやつを参考に解説しているので全容はそっちを見てください。 送受信APIの確認 まず割り込みには以下に示すの二つのA…

PySide2でQtQuick(qml)使うメモ3

今回はPySide2とPySerialを組み合わせて使うメモやることとしてはQMLで作成したGUI側でイベントを発生させてシリアルで何か送信してマイコンを制御するという感じ つくったのはこんな感じのやつCOMの選択をしてオープンをすると5~7のオブジェクトが表示され…

PySide2でQtQuick(qml)使うメモ2

前回に引き続き今回もPySide2+Qtquick(qml)のメモGUIだと結構定番の電卓っぽい奴の実装 Button押下でイベント発生させてTextInputからデータもらってTextInputに返すサンプルだと思ってくれればいい Pythonコード import sys import os from PySide2 import…

PySide2でQtQuick(qml)使うメモ1

自分用のメモです。自分の動作環境は PyCharm 無料版 Python 3.7.4 or 3.6(仮想で両方で試した) Pycharm内臓のVenvでパッケージ管理 導入 PythonでQtを扱うにはPyQtとPysideの2つがある。verごとに書くとこんな感じ Qt4 : PyQt4,PyiSde Qt5 : PyQt5,PySid…

MIMXRT10xxのUARTを使ってみる(ポーリングAPI)

今回はUARTについてやっていきたいと思います。 prinfに関しては評価ボードを使う限りは初期プロジェクト作成でリンクしてくれるので説明はしません。あくまでbyte転送APIで何か送るという感じですね。環境としては以下を例に説明しますがRT1020でもRT1015で…

MIMXRT10xxのADCを使ってみる

今回はMIMXRT10xxシリーズのADCを使ってみようと思う。 ペリフェラルの特徴としてまとめると 1MS/sec sample rate 1モジュールに8つのシングルエンド入力 single conversion と continuous conversionに対応 12bit,10bit,8bitに対応 下限値、上限値、値の一…

2019年版 STM32環境構築方法

以前よりSTM32について結構な数の記事を書いてきました。 最近ではAtollicTrueStudioが無料になったり、CubeMXが5.0になったり いろいろ変わった経緯もあり2019年版と題して新しく書いたほうが良いのでは?となったわけです。現状CubeIDEになったのでこの手…

MIMXRT10xx series dcd table Tips part2

前回は解釈の仕方を書いたので今回はクロックに絞って全容をつらつら書く感じ。 ぶっちゃけ前回の記事で必要なことは書いたのでこれは読みたい人が読んでくれればいい。そんなmini tips的なやつ本記事の環境は以下の通りです。 MIMXRT1050-EVK SDK ver 2.5 …

MIMXRT10xx series dcd table Tips part1

MIMXRT10xxシリーズは内部ROMを持たないわけで起動するのにひと手間かかる。MIMXRT10xxにはIVT(image ventor table)なるものがあってそいつを設定してあげる必要がある。 そうすることで内部ROMのブートローダー(IMXRTの内蔵ブートローダーのこと)が値を解…

MCUXpressoIDE ライブラリ変更方法(ex. redlib->newlib)

library変更もProject setting項目からできるlibraryの変更プロジェクトのsetting画面からもできる(プロジェクトを右クリック->propertyをクリック)newlibを使うとmalloc関連もできる。malloc.hの利用

MCUXpressoIDE MCUのパッケージ変更を簡単に行う方法

プロジェクトのProjecting setting/MCUを右クリしてEdit packageでいける

MIMXRT1052CVL5Bを使う際のTips

MIMXRT1052の場合 コンシューマ向けのは600MHz、工業用途の場合528MHz駆動となっている。 MCUXPressoIDEで新規プロジェクトを作った際にはMIMXRT1052DVL6B向けの設定で吐きだされる。 今回はMIMXRT1052CVL5B向けのプロジェクトの設定や変更しないといけな部…

MCUXpresso SDK Shellの使い方

MCUXpresso SDK Shellはなんぞ? 組み込み用Shellのことです。Shellの動作例SDKに最初から組み込まれているので選択するだけで楽に使えますしprintfとのリンクもIDEがやってくれるので便利です。使い道としては 信号処理のパラメータの変更 内部データのダン…

CMSIS DSP とコンパイル最適化オプション

(adsbygoogle = window.adsbygoogle || []).push({}); 色々試してたらGCCの場合最適化しないとFPU命令呼んでくれないっぽい optimize入れるとちゃんと呼ばれてる i.MX RT1020(CortrexM7 DP FPU)のSQRTしか試してないのであれですが入れとくに越したことはな…

Eclipse expression機能のメモ

(adsbygoogle = window.adsbygoogle || []).push({}); mallocとかで確保した変数のスコープをする方法 //変数名がsdram_bufferとすると (*sdram_buffer@200) @の後の数字で何個表示するか設定できる。

MIMXRT10xxでwavファイルを組み込む方法

(adsbygoogle = window.adsbygoogle || []).push({}); 今回は組み込みでbinファイルだったり、wavファイルを組み込む方法を紹介しようと思います。 RT1020と書いていますがSTM32とかでも同様なことができます。環境は以下の通り MCUXpresso IDE v10.3.0 [Bui…

MCUXpresso IDEのペリフェラルコンフィグツールを使ってみる

(adsbygoogle = window.adsbygoogle || []).push({}); MCUXPresso IDEがアップデートされてペリフェラルコンフィグツールが実装されたのでそれを使っていろいろやってみたいと思います。 STM32でいうCubeMXみたいなもんですね。今回のシステム要件は以下の通…

はてなで数式やコードを扱う時のTips

自分なりに気を付けてることのメモ 編集モードははてな記法 (adsbygoogle = window.adsbygoogle || []).push({}); 数式について 数式を記述する際は [tex: ]を使うわけだが 以下のように一回書いておけばmath機能が有効になるみたい <p style="display: none;">[tex: ]</p> すると \begin{e…

Python:scipy.signal.spectrogramを使ってスペクトログラムを描画する

(adsbygoogle = window.adsbygoogle || []).push({}); 今回は信号の時系列変化を可視化できるスペクトログラムを描画してみたいと思う 使うメソッドはPython:scipy.signal.spectrogramである。オプションパラメータがたくさんあるが f,t,Sxx = signal.spectr…

Python: Swept-sine信号を作成する

今回はシステム同定入力(主にインパルス応答の測定)として使われる掃引正弦波を生成していきたいと思う。 昔はTSP信号なんて言われていたが場合によってはそぐわない可能性もあるので最近ではSwept-sineに統一されつつあるみたい Swept-sine signalは信号の…

scipy.signal.iirfilterを使ってIIRフィルタを設計する

前回はiirdesignメソッドで設計したがもう一つのほうのメソッドも紹介しておく。 前回の記事はこちら (adsbygoogle = window.adsbygoogle || []).push({}); gsmcustomeffects.hatenablog.com scipy.signal.iirfilter メソッドの引数はこのような感じ scipy.s…

Python:scipy.signal.iirdesignを使ってIIRフィルタを設計する

(adsbygoogle = window.adsbygoogle || []).push({}); 今回はscipy.signal.iirdesignメソッドを使ってIIRフィルタを設計してみる。 ScipyのVerは1.2を使用している前提で進めるgoogle colabの場合は !pip install --upgrade scipy をしてからランタイムのリ…

Python:scipy.signal.bodeでボード線図を引く

(adsbygoogle = window.adsbygoogle || []).push({}); 今回はScipyのsignal.bodeを使って周波数応答を描画してみる。 使うメソッドは scipy.signal.lti scipy.signal.bode である。 scipy.signal.lti 線形時不変システムを作成できるメソッド。引数の渡し方…

Python:scipy.signal.freqzのテスト

PythonでMATLABみたいなfreqzが使えるみたいなのでためしてみたRBJ cookbookの公式を用いてPEAKフィルタを構成した。fc1:150Hz カット fc2:400Hz ブーストみたいな感じにした。 カットオフ帯域ゲインとbwあるけどパラメータはご自由に wがそのままだと正規…

Python:pysoundfileを使って読み込んだwavデータをFFTをする

自分用メモです。これ一つで取りあえずはwav読み込みとFFTのサンプルかねてるので参考になれば import soundfile as sf import numpy as np import matplotlib.pyplot as plt from scipy import fftpack fname = 'whitenoise.wav' # mono data, samplerate =…

モデルに関するメモ

非線形オーディオエフェクト実装においてよく使われるモデルの一口メモ Wienerモデル、Hammersteinモデル Wiener model, Hammerstein model(Schmitz Thomas[2016]) Hammerstein:NLシステム->LTIシステム Wienner:LTIシステム->NLシステム LTI->NL->LTIのこと…

Python:lmfitを使ったカーブフィッティングその2

はじめに 今回は前回の続きでlmfitを使ったフィッティングを試して行きたいと思う。 ほとんどここのパクリだがバグの修正含め解説も入れているので勘弁してほしいPeak fitting XRD data with Python - Chris Ostrouchovさっそくやって行こうと思うが 実用的…

Python:lmfitを使ったカーブフィッティングその1

実験データのフィッティングについて頻繁に使う機会があったので自分メモとしてまとめておきます。 フィッティングを行うにあたり、Numpy , Scipyには便利なライブラリがあります。 Numpy :polyfit Scipy:optimize.leastsq Scipy:optimize.curve_fit 以上3つ…