マイコン工作実験日記

Microcontroller を用いての工作、実験記録

USB3330

2017-04-22 19:11:49 | Weblog


連休中に遊んでみるつもりで、随分と前(半年くらい前?)に買ったまま放置されていたUSB High speed PHYを引っ張り出しました。この記事にも書いたように、STM32シリーズではSTM32F7x3を除けば USB High speedに対応しているデバイスでもUSB PHYは内蔵していないので、外部にPHYが必要となります。実験に便利なように出来合いのボードを探したのですが、評価ボードを除けばこのWaveshareのボードしか見つけられませんでした。STM32のForumを調べても、このボードを使っている人が多いようです。

STM32とはULPIというインターフェースでつながりますが、データ線8本とクロック、制御信号を持ったパラレルのインターフェースのようです。USB2.0のHigh speedでは480Mbpsの転送速度をサポートしますが、8ビットパラレルに変換することで、マイコンとのインターフェース速度は60Mに低減できるというわけですね。ボード上には24MHzのクリスタルが載ってていますが、USB3300がこのクロックから60MHzのクロックを生成してULPIのCLKOUT信号として供給してくれます。

つなげ先としてはNucleo-F446REを使う予定です。
コメント
この記事をはてなブックマークに追加

ESP-IDF 2.0

2017-04-11 12:45:09 | Weblog
気づくともう一月記事を書いていませんでした。なんか仕事や体調不良が続いて、自分の作業には全くの進展なしです。

秋月でESP32-DeviKitCの取り扱いが始まったので、自分も人並みにESP32を触ってみようかという気になってきています。少しは勉強しなければいけないかなと思っていたら、ESP-IDF 2.0がリリースされた事を知りました。なるほど、実際にどんなAPIが用意されているのかは、IDFの内容をチェックすればいいのですね。見るとやはりWiFi/BLEが中心という感じです。Classic Bluetoothはまだサポートされていないんですね。ちょっと期待してたのに。。

探してみたらBtstackのESP32へのポートがあることが判明。とりあえずSPPまでは動くみたいですが、タイミング的にIDF 2.0の出る直前なので、IDF2.0で動くかどうかは確認必要でしょうか。別に急がないので、しばらく様子見かなぁ。
コメント
この記事をはてなブックマークに追加

32F723EDISCOVERY

2017-03-03 12:13:34 | Weblog


遅まきながら、32F723EDISCOVERYが発表されてすでに販売されていることを知りました。今までのDISCOVERYと大きく印象が異なるのは、STMod+とか呼ばれる拡張コネクタとそれを使って、Grove, Click board, ESP-01に対応していることですね。Groveのモジュールは秋月などでも入手可能ですので、便利そうです。Clock boardはMicroChipを筆頭に採用するボードが増えてきているようなのですが、残念ながら国内の大手販売店ではまだ取り扱いがないようです。

STM32F723についてちょっと興味を引かれるのは、USB High Speed PHY を内蔵しているという点。STM32シリーズでは今のところこのラインの製品だけがPHY内蔵なんじゃないでしょうか。実は、HIgh Speedに挑戦してみたくなって、先日USB PHYを購入したところで手付かずのままになっています。なかなか動かすための作業ができないでいるのですが、近いうちに、USB PHYだけでも紹介する記事を書こうかと思います。
コメント
この記事をはてなブックマークに追加

Etherもあったのか!

2017-02-12 11:38:56 | OLIMEX


Olimexの新しいESP32評価ボードを見て、少なからぬ違和感を感じました。ESP32というと BT + WiFiのイメージを刷り込まれていたので、RJ45ジャックが付いていることに違和感を感じてしまうのです。最初は、Wiznetとか使ってEtherとつなげているのかと思いましたが、改めてデータシートを確認してみるとESP32がEthernet MACを内蔵しているではありませんか。RJ45のそばにあるのはPHYだったのですね。MII/RMIIをサポートしており10/100MHz対応となっています。

「あれぇ?Etherなんか入っていたっけ?!」と驚いて、2017/1/26の日付が付いている最新のESP32 Technical Reference Manualに目を通してみたものの、Ethernetのセクションがそもそもありません。IO_MUXの章にはピン割り当ての説明があるものの、それ以上の説明が一切ないようです。Olimexもこれからソフトを用意するということなので、Olimexが販売を開始するころには、Ehthernet MACの説明が追加された新しいマニュアルが公開されるのかもしれません。

コメント
この記事をはてなブックマークに追加

Aの次はZ

2017-02-04 15:48:01 | Weblog
デスマ進行中のため、ブログ記事にするネタも作れずにいます。今日は、仕事で使っているSTM32F767でハマった事について書いておくことにします。

大まかにプロジェクト全体の構成が一通り出来上がって、動き始めたところで、Idle Taskを追加してMCUが走らない時の消費電流を削減するようにしたところ、それまで動いていた通信ができなくなってしまいました。Idle Taskと言ったって、単に__WFI()しているだけのタスクです。これを追加しただけで動かなくなってしまうので、しばらく悩んでいました。スタックのオーバフローが発生しているわけでも無いし、JTAGを使うと問題は再現できません。ソフト的な原因が思い浮かばないので、「もしや」と思って Eratta を読んだところ問題の原因を見つけました。

なんと、「MCUがSleep modeにある期間は、DTCM-RAMに対してのリードアクセスができない」というのです。STM32F767/769ではRAMの最初の128KBがDTCM-RAMとなっており高速にDMAアクセスすることができます。MCUがSleepしている間は、この空間に置いたDMAバッファからデータを読みだして送信しようとしている周辺機器(例えばUART)は、アクセスしてもデータの値として0x00しか読み出せずに、正しい通信が行えないというのです。どうやら書き込みは問題無いようのなので、受信はできるけど送信ができないという問題となって表面化します。「逃げ手」としてDTCM-RAMからのDMA読み出しが必要な場合には、DTCM-RAMではなく、AXI SRAM1またはSRAM2を使うようにと説明されています。これじゃ、せっかくのDTCMが有効活用できませんし、何より今回の用途ではDTCMを使わないと処理が間に合わなくなってしまうのでした。。。仕方ないので、DMAするときにはsleepしないようにすることを考えます....

Erattaシートによれば、このシリコンバグは、Revision Aにはあるけど、Revision Zでは修正されているとのこと。わたしが使っているチップは確かにRev. Aでした。しかし、Revision Aの次が、Revision Zってどういうことよ。残りのバグは今後も修正されず、改版するつもりはないと宣言しているってことですかぁ!?
コメント
この記事をはてなブックマークに追加