製作モジュール一覧

2019年1月20日日曜日

MIDI-CV Converter MIDI_CV_CONV 動作チェック

回路図

ファームウェア
https://github.com/ryood/MIDI_CV_CONV/tree/master/Arduino/MIDI_CV_CONV_Test06

電源 単3電池×6 8.15V
VCC 5.022V
VREF 3.298V(回路図のR5のトリムで調整)
電源電流 32mA~40mA程度

出力波形の測定


パソコンのDominoでMIDIデーターを作って測定しました。ch1はNoteOn/OffをGate1から出力し、ノートナンバーをCV値に変換してCV1から出力しました。音階はA1(#33)~C5(#72)で出力しました。これはMIDI_CV_CONVでCV変換できる最大幅です。

Modulation(CC:1)をCV2から出力しました。ch2~ch6もタイミングをずらして出力し、Gate2~Gate6から出力しています。


CV出力

ch1:CV1 ch2:CV2

Modulationは細かく出力しているので、ch2:CV2の線が一部乱れています。データーの送出が重なったとき処理落ちしてるためだと思います。

<追記:2019.01.23>

よく見るとch1の音階が最大になった後に、最小になるまでの間が引き伸ばされてます。

Dominoでループして出力しているのが原因かもしれませんが、要調査。

360ms程度の遅れ。

</追記>

Gate出力

ch1:CV1 ch2:GATE1

CV信号は3.3V系、GATE信号は5V系です。

出力振幅の測定


A1(#33)とC5(#72)を出力して、CV1の電圧を測定しました。

A1(#33) 1.3mV
C5(#72) 3.243V

C5のCV値のは
(NoteNumber - BaseNoteNumber) / 12 = (72 - 33) / 12 = 3.25V
なので誤差は約0.22%です。

メインループの処理速度


メインループの最初と最後でCheckPin1(D8)をH/Lさせています。


ch1:D8

処理時間は揺れがあり、オシロの表示値の目視で8kHz~15kHz程度です。

2019年1月19日土曜日

Nucleo-F446REでMCOを使ってみる

Nucleo-F446REの動作クロックを測定したく、MCO(Microcontroller Clock Output)を使ってみました。MCOはクロック信号をピンに出力するものです。

参考にしたのは以下の記事です。

「ガレスタさんのDIY日記」さんの「STM32のMCO機能を使ってGPIOからクロックを出してみる

「Thomas Rix」さんの「Configuring & measuring the MCO on STM32

STM32CubeMXとAtollic TrueSTUDIOは、以前「STM32CubeMX + Atollic TRUEStudioでLチカ」で動作させています。

STM32CubeMXでコードを生成


「Pinout & Configuration」で、「RCC」の「Master Clock Output1」と「Master Clock Output2」を有効化します。「Master Clock Output2」は「I2S_CKIN」とピンがかぶるらしく、アラートが出ますが今回はI2Sを使わないので無視しました。

「Pinout view」に

  • PA8 RCC_MCO_1
  • PC9 RCC_MCO_2

が現れます。

Nucleoボード上では下図のピンから出力されます。


「Clock Configuration」で出力するクロック・ソースを指定します。


赤枠で囲ったところがMCOの設定です。SYSCLK(84MHz)をそのまま出力したかったのですが、オシロスコープの帯域外の様でクロック信号を測定できなかったので「/2」して42MHzを出力しました。


ch1:D9/PA8(MCO1) ch2:PC9(MCO2)

使っているオシロスコープはOWON SDS7102で、仕様では100MHz帯域となっていますが、84MHzの信号は測定できませんでした

84MHzのSYSCLKをMCO2に出力


ch2:PC9(MCO2)

Nucleo-F446REは最大180MHzで動作しますが、分周して確認するしかないのかな(@@?

Atollic TrueSTUDIOでNucleoに書き込み


CubeMXで生成されたコードそのままでも動作しますが、動作確認のため一応メインループでLチカさせました。
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
HAL_Delay(100);
HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_SET);
HAL_Delay(100);
HAL_GPIO_WritePin(LD2_GPIO_Port, LD2_Pin, GPIO_PIN_RESET);
    /* USER CODE END WHILE */
void SystemClock_Config(void)関数内で
  HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_PLLCLK, RCC_MCODIV_2);
  HAL_RCC_MCOConfig(RCC_MCO2, RCC_MCO2SOURCE_SYSCLK, RCC_MCODIV_1);
と、それらしいHALが呼ばれています。

メモ:


「Atollic TrueSTUDIO for STM32」と「System Workbench for STM32」を同じパソコンにインストールしているとSTM32CubeMXとの連携が怪しくなります。同じEclipseベースのIDEのためでしょうか?CubeMXやTrueSTUDIOを最新版にアップデートするなどしているうちにうまく動作するようになりました。

TrueSTUDIO上で「デバッグ(ツールバーの虫のアイコン)」を開始したあと、デバッグパースペクティブで「再開(ツールバーの|>みたいなアイコン)」を押さないとターゲットボード上のプログラムが実行されない。

2019年1月17日木曜日

MIDI-CV Converter MIDI_CV_CONV はんだ付け完了

根気が続かないので、1日の実働2~3時間以内にしてはんだ付けしました。

部品面(ICなし)

部品面(ICあり

ハンダ面

動いてるところ

スマホで何枚か撮ったら、「Googleフォト」がアニメーションしてくれました。いつもは余計なお世話ですが、今回はまあまあいい出来だと思います。