2017/09/25

Blue PillでSD-SPI

STのサンプルプロジェクトにはstm32_adafruit_sdというSDドライバが入っています。
これを使ってSDカードの情報を得るところまでは良かったのですけど、直ぐに問題が発生しました。
このAdafruitのSDドライバはSDHC(~32G)をサポートしません。
一応認識は出来るのですが2Gまでしか使えないようです。
SDHCがデフォルトの世の中なのに、それが使えないというのはイマイチしっくりきません。
同じ問題で困ってる人は多いだろうと思ってST本家のフォーラムを検索したところ
「SDIOはSDHCをサポートしているから、SDIOをサポートしてるMCUを使ってくれ」というSTからの返答ばかりでした。
どうやらSTはSPIでSDHCをサポートする気は全くないようです。

Blue Pill(STM32F103C8)はハードウェアSDIOを内蔵していないのでどうしてもSPIを使わざる負えません。

8ビットのArduinoでは普通にSDHCが使えるのに32bitARMマイコンにドライバーが無いというのはなんとも困った話です。
今時SDカードなんて何ら特殊なものではなくデフォで使えて当然だと感じるのですが。
仕方が無いのでArduinoのSDドライバーを無理矢理ポートすることにしました。
ArduinoからポーティングではFatFsは使えませんが、SPIはArduinoポーティング、
SDIOはFatFsとすれば、まぁ納得できる棲み分けだと思います。

2017/05/03

Blue Pill Sound Effect Project 格安マイコンボードで作るEギター用 デジタル・ディレイ・エフェクターの製作(1)

中国製の格安マイコンボード通称Blue Pill。プログラムライターと合わせても$5~$6で手に入ってしまうという安さに加え、ブートローローダーを書き込めばArdunioもどきとしても使えるお手軽さも加わって、ネットでも少しづつこのボードに関する情報が増えています。

この格安マイコンボードを使ってサウンドエフェクターを作ってみようと考えています。E.ギター用ですけどね。これまではSTM32シリーズのNucleoやDiscoveryボードなどでテストしていたんですが、Blue Pillでも出来るんじゃないか?と思ったわけです。ですがBlue Pillは格安なだけあってスペック的には少々貧相です。

クロック72MHz
Flash 64k(128k)
SRAM 20k
ADC 12ビット 2系統

SRAMが20kしかないのは値段的にやむ負えないので我慢するとしても「DACが無い」のはかなり致命的です。そもそもDACも無いのにエフェクターを作ろうなんて考えること自体がアレですが、DACをどう実装するか?が今回の最大のポイントになります。ここを上手く切り抜ければ、格安デジタルエフェクターが作れそうな気がします。

DACについては外付けのDAC-ICを追加するのがもっともスマートな方法ですが、他にもDACを実現する方法がいくつかあります。

例えばR2R(抵抗ラダー)方式のDACです。ほぼ抵抗だけで組めるとてもシンプルな回路です。ですがこの方式はI/Oポートと抵抗を沢山必要とします。Blue Pillの場合はポート数的には問題ありませんが、16ビット精度なら33本、14ビット精度でも29本の抵抗器が必要です。そんなに沢山抵抗を使ったらエフェクターケース(1590BまたはTD6-11-3)に収まり切りません。この方法は実装が単純で比較的良い音が出せるのでスペースさえ確保できれば有力候補の一つになります。

また違う方法としては例えばArduinoではPWM DACという疑似アナログ出力方式を採用しています。タイマーのPWM出力を利用してアナログ出力を作る、いわゆるD級出力方式です。youtubeにArduino 8ビット PWMで音声再生した動画がいくつか上がっていますが、正直、音質はあまり良くありません。S/Nも悪いです。とにかく歪っぽい音なので歪率がかなり悪いです。ですがこの方式は実装部品が非常に少ないというメリットがあります。大抵はRCフィルタ(またはLCフィルタ)だけで実装できます。これはコンパクトエフェクターを作るのにはとても有利です。またハードウェアタイマーを使うのでCPUにかかる負荷が少ないという点にも注目です。外部にDAC-ICを追加した場合はI2CもしくはSPIを使ってデータを送るので、CPUにそれなりの負荷がかかります。非力なMCUには外付けDAC-ICよりPWMアナログ出力の方が良いかもしれません。

うーん、ですけどもうちょっと良い方法はないのでしょうか?ネットは広大で、世界には頭の良い人が沢山おられますから、ちょっとお知恵を拝借したいです。ということでネットを探し回っていたら、ありました!ナイスなDACの実装が!それはまた次回(つづく)

2017/04/23

SW4STM32へ移行しました

世間ではSTM32 Blue Pillがじわじわと浸透してきているように思います。
ネットの検索でもヒットするサイトやブログが増えています。
やっぱり$2という価格は大きな魅力ですね。

多くの人はより簡単にMaple mini化して使っている人が多いみたいですけど、
私は普通にST-Linkで繋いでSW4STM32でプログラムを組んでいます。
Eclipseにもやっと慣れてきた感じです。

SW4STM32をインストールするとい一緒にMinGWも入ってくるので重宝します。
それまではMinGWは別でインストールしていましたが、
コンソールだけでGUIデバッガが無かったので不便でした。
これからはSW4STM32のMinGWで楽できそうです。

2017/04/21

SW4STM32へ移行しました

CoIDEのGUIの不安定さに嫌気がさして、ついにSW4STM32へ移行することを決めました。要はEclipseですけど、自分にとってはEclipse鬼門なので、また悪戦苦闘の日々が始まります。あの分かりづらいGUIを克服しなければならないと思うとウンザリします。

ところでSW4STM32のフォーラムを見ていたら、C++が使える様になったという書き込みがあったので試してみました。SW4STM32ではC++はエラー出まくりなのとCubeMXとの連携が出来ないという2つの問題があってC++の利用は諦めていました。フォーラムによればエラー出まくりなのはオプション設定で止められるとのこと。ただ毎回プロジェクトのオプションを書き直さないといけないので、ちょっと面倒です。CubeMXとの連携が出来ない問題というのはmain.cppを書き換え対象にしてくれないからで、これはmain.cを残して別ファイルの新たなメインループ関数を呼び出すことで解決しました。これも一々別ファイルを作るので面倒ではありますが・・・それでもC++が使えるというのはC++ユーザーにとっては至福なのです。

2016/09/03

FusionPCB

久しぶりにFusionPCBに注文した基板が郵便書留シンガポール経由で11日で到着しました。今までの最短記録です。注文から4日でShippedになったので今回は気合入ってるな~と思ったんですけど、ちょっと方針変わったんでしょうかね?それともただの気まぐれでしょうか?

実はFusionPCBが余りにも遅いのでElecrowに乗り換えようと思ってアカウントを作ったところなんです。これまでFusionPCBは郵便書留では3週間より早く着いたことは一度もありませんでした。3週間以上もかかると感覚的に1か月に近いです。何を注文したのか忘れてしまった頃に基板が届きます。そんな頃にはもう製作意欲が完全に別の物に移ってしまっているので、イマイチタイミングが悪いんです。もちろん速く欲しければEMSで送って貰えば良いんですが¥1000の基板に¥2000以上の送料てのはちょっとね・・・FusionPCBも毎回こんな感じでサクッと送ってくれれば、言うことなしなんですが、次回はどうなんでしょーか?

2016/08/14

さてどうする・・・

DigikeyからNucleo-L432KCとNucleo-F767ZIを入手したんですが、どっちもCoIDEは未対応じゃないですか!といってもCoFlashのフラッシュアルゴリズムが無いだけですけどね~。それでもフラッシュに書き込めなきゃ意味ないですから、自分でフラッシュアルゴリズムを作るか?フォーラムにお願いするか?・・・フラッシュアルゴリズムって自分で書いたことないんですよね(面倒臭そうだから)

話は変わって、中華ショッピングサイトのbanggood.comが最近結構速く荷物を送ってきます。注文からほぼ1週間で商品が到着します。中国経済が少し減速していますから出荷センターがヒマなのかもしれません。ユーザーとしては嬉しいことです。

banggood.comはお気に入りなのでちょくちょく買い物をしています。前に突然アカウントが消失してしまったことがありますけど、今のところそれ以外はほぼトラブルはありません。でもbanggood.comばっかりで買うのもアレなので、他の中華サイトを開拓しよう!と思ってネットを探したんですが、電気・電子関係に強いサイトってあんまりありませんね・・・強いて言えばDXとebayくらいでしょうか・・・DXは中華サイトにしてはちょっと値段高めですけどbanggood.comでは扱っていない商品があるのが魅力です。ebayは安いんですけど安いのは大抵中国からの出品で結局は中国発送になるのでAliexpressへ頼むのと大して変わらない気がします。Aliexpressは相変わらす混沌としていて怪しさ満載ですけど。banggood.comでトラブったという記事もたまに見かけますのでパーフェクトではないにしろ、まぁ合格点ではないかと思います。

ところでbanggood.comで売っているArduino用の2.4"TFTシールドが妙に気に入ってしまって、今週4個目のArduino用TFTが到着しました。何個も同じものばっかり買っても仕方ないんですけど・・・実は同じものではありません。

裏側を見るとプリントパターンが全て違うことが分かります。もちろんTFTも違うので色合いとか全部違います。タッチスクリーンもADCで拾う値が全部違います。当然ドライバーも違います。4枚の内2枚はDeviceIDを返さないので、コントローラが何なのか正確には分かりません。とりあえず動くドライバーで動かしているだけです。banggood.comへArduino用2.4"TFTシールドを注文すると、その度に似て異なるものを送って来るのですwww
お陰でたった600円のTFTで随分と苦し・・・楽しませて貰いました。バカな子ほど可愛いというんでしょうか?次はどんなTFTが来るんだろうと毎回ワクワクしています。

2016/07/29

相変わらずDigikeyは速い件

滅多に注文しないDigikeyですが、まだ国内へあまり入って来ていない
NucleoF767(144) とNucleoL432(32)を注文してみました。
NucleoF767は在庫ゼロ表示だったので、時間がかかると思いきや、
注文から4日で到着。そういえば前に注文した際も4日で来ましたね。
毎回アメリカとの距離を全く感じさせない速さで送られてきます。
実はDigikeyは国内にあるんじゃないかと疑ってしまいます。

中華Aliexpressは最長2か月かかったことがありますし、
banggood.comは最短7日くらいです。
一番遠い米国が一番速いという皮肉な現実。
もっともDigikeyはUPSなので速くて当然なんですけど
送料は無料なんですよね(7500円以上買えば)
同じ送料無料でも随分な違いがあります。