ガレスタさんのDIY日記

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

i.MX RT1050 FlexRAMについて その1

ここ最近本格的にこのチップでの開発を始めて数ヶ月経った。 こいつはRAMオンリーということもあり初期設定のままではコードが入らなくなって来た。(初期設定ではコード、データ、ヒープスタックがITCMにリンクされるようになってるため) どうやら色々調べて…

MIMXRT1050-EVKでスイッチ入力を使う手順

今回は今後よく使うであろうスイッチ入力をやって行く。 まずボードにあるタクトスイッチは以下の四つである SW2 ON/OFFスイッチ SW3 リセット SW4 デバッガチップリセット or bootloader mode SW8 ユーザースイッチ ここで SW2はON/OFFスイッチになっており…

i.MX RT1050 SAI概略

一番最初に書くべきだったけど許してください SAI(Synchronous Audio Interface) マルチなプロトコルに対応したオーディオペリフェラルのこと。 最近のSTM32「Serial Audio Interfaceと呼ばれてる」とかにも載っている.図を見てもらえればわかる通りに二つの…

i.MX RT1050 SAIメモ2

今回はレジスタのまとめ TCR.....とかRCR......とかで実際に何してるかわからんので概略でも示せたらなと思ってまとめた。 一応Tx側だけ書いてみた。暇があればRx側もやろうかな VERID(Version ID) Verを示すレジスタ。 この辺はMCUXpressoSDK使う分に勝手に…

i.MX RT1050 SAIメモ1

自分用メモです。 割り込みに関してFIFO Request Flag FIFO Warning Flag FIFO Error Flag Sync Error Flag Word Start Flag がある。 ここでよく使うものについてだけ触れておこうと思う。 FIFO Request Flag FIFO闘値の割り込みのこと。 あらかじめ設定し…

MCUXpresso SDK attribute sectionマクロについて

自分用メモです。(皆さんの参考になれば幸いです。ものとしてはcr_section_macros.hにて定義されている配置変更マクロについてです。 本来はgnuの拡張機能で __attribute__ ((section("セクションの名前”))) と言う書き方をする。これを簡易化するためのマ…

i.MX RT1050 : XIPで起動する

題名にある通り今回はXIP機能を使って外部のHyperFlashからプログラムを実行して行く 実習環境 MIMX RT1050-EVK(OpenSDA firmwareは最新のものでHyperFlash版にアップデートしたもの) MCUXpresso IDE(10.1.0_589) MacbookPro 2012 (MacOS HighSierra) XIP(eX…

割り込み有効、無効オペコード

自分用メモです。ARMのスタートアップルーチンで呼ばれている謎記述 __asm volatile ("cpsid i"); 調べたらオペコードらしいdisable/enable irq関数内でこれと同じことしてるのでまあこう行った使い方なんだろう

i.MX RT1050のデバッグ速度が遅い問題について

こんばんわ最近進捗なくてすいません・・・・ 一応開発は続けています。というわけで今回はRT1050のデバッグが明らかに遅いと言う問題に遭遇したのでそれについて書いていきます。まず前提条件について このチップに関してはROMレスということもあり起動方法…

あけましておめでとうございます

おめましておめでとうございます。ついに2018年になりましたね。 今年もこのブログとともに頑張っていきたいと思っておりますのでよろしくお願いします。とうわけでリアルテック君(リアルテック (@realteck_KY) | Twitter)から進められて年の瀬からPyt…

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

stm32 Advent Calendar 2017 5日目の記事です。ARM CMSIS DSPライブラリを使ってみようという記事です。以前書いたCMSIS DSPの記事の追記です。 2017/12/4時点でのMacOS,SW4STM32,STM32F7環境でのCMSIS DSP導入説明です。 gsmcustomeffects.hatenablog.com前…

i.MX RT1050の評価ボードがとどいた。

早速ですが届きました。デケェわ pic.twitter.com/NccJCLhKZx— . (@GarageStyleMsc) 2017年11月16日簡単にいえば600MHz動作できるCortexM7マイコンが乗ってるボードです。 以前キャッシュの話をしましたがこいつは32KBのキャッシュがあるので強いなぁと感じ…

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

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

デジタルエフェクター:トレモロの実装例

ここ最近実装エフェクト数が増えてきたのでまとめておきます。 今回はトレモロです。 音量を周期的に揺らすエフェクトですね。 (adsbygoogle = window.adsbygoogle || []).push({}); トレモロの仕組み 何かに追従して可変できる抵抗 Strymon様より引用 図に…

biquadBPFの処理負荷が高い・・・・・・

どうもがれすたさんです。通常のLPFとHPFができてからいろいろ遊んでいたのですがBPFを作って計測してみると唖然・・・・・ 22%も持ってくのお前・・・・・・まあ理由もある程度分かってます。alpha = sin(w0)*sinh( ln(2)/2 * BW * w0/sin(w0) ) (case: BW)…

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

Eclipseのリファクタ機能が意外に便利だった

最近気づいたんだけどリファクタ機能が結構便利だったものでそれの紹介 一括リネーム 変えたい変数のうえで右クリしてRefactor->Renameそうすると一括変更が出来ちゃうねって話 べた書きを関数化 こういうくそコードを Refactor->Extract functionおしまい今…

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から呼べ…

ZOOM MS50gのハードウエア構成を見てみる

僕のブログではこんなことやったりして普通の使い方と違う使い方をやっていますが・・・・・ gsmcustomeffects.hatenablog.com 今回も普通の使い方というより教材として使う的なニュアンスでみていこうと思います。まず全体図メイン基板と各種スイッチ基板や…

KiCadのないとりーびるどでビアが好きに打てるようになってた

こんな感じに打てる(例がくそすぎwwwメニューはここその他UIがモダンになってます

ぼちぼち

最近更新できてませんなんでかっていうとアニメ見てるのと本読んでるのでwてなわけではじめてのギャル面白いhajimete-no-gal.jp

Kinetis K64 ピン割り込み

今回は前回に引き続きなんですがGPIO関連ということでピン入力割り込みについてやって行きたいと思います。Reference ManualのChapter11のPort Control and Interrupts (PORT)を参考資料としてつかうのでそれを用意してただいて作業をすると一段わかりやすく…

Kinetis K64 GPIOメモ

GPIOいじるときにすぐ忘れるのでメモしておこうとおもった。KSDK V2を使った場合で説明する流れとしては PORTにクロック供給 PINMUXの設定(GPIOへ設定) ピン方向の設定(構造体の定義) ピン方向の設定(InitAPIのコール) ピン操作APIのコール こうなる。…

自分用メモ Kinetisやる際によむとこ

SDK内のフォルダのDocの中のこれDriverExampleのReadmeリファレンスマニュアルSDKのGettingStartおよびファイル構造解説基本ここ読めばだいたいのコツはつかめる。 あとはInit系のAPIはマクロ化でウザったいので注意