Replicant Nucleo UNIT3
Nucleo UNIT2と同サイズでピン配置も同じにしました。青いのがUNIT2で、白いのが今回のUNIT3です。ちなみに、以前から思ってましたがこの白レジストはElecrowでは仕上がりがイマイチですね。ところどころ切れてますしSolderMaskのキレがイマイチです。白だから余計目立つと言うことかもしれませんが。
VisualStudioでシリアル送受信
mbedでシリアル通信部分を作成し、Teratermで送受信するのはよくやることであるが、大量のデータあるいは、もっと高速にするとなると、teratermの画面表示がボトルネックで追いつかなくなる。たとえば、PCの清野にもよるだろうが、1ms間隔でデータを受け取るなど。。
そこで、pyserialを使ってpythonで受信する方法があるが、これはこれで遠くに課題はないのだが、唯一止めたいときに、consoleでCTRL-Cを押してブレークしないといけないところ。また人にこうやってというにはpythonの導入から始まりどうやって使うかを教えてあげないといけないという敷居がある。そこで、アプリにできないかな、と考えた。
SerialPort
VisualStudio2022のそのままだと、SerialPortのToolが出てこない。ググった結果、プロジェクトにあるNugetパッケージの管理で追加でパッケージを入れればよいようだ。
まずは、何か適当なプロジェクトを作って、Nugetパッケージ管理を選ぶ
K64FからVisualStudioでシリアル受信する
受信だけできるようにするのにかなり手間取りました。
SerialPort
普通にインストールしたら、SerialPortというツールボックスが出てこない。
USBSerialの送受信
これ、もしかしたらK64Fだけかもしれないが、SDA経由のCOMだと普通に送受信できたのに、USBSerialだと、teratermでは送受信できるのにVisualStudioからだと、だんまり。
どうも、ハンドシェークが必要らしい(そういう意味じゃないのかもしれないが)
serialPort1.DtrEnable = true;
serialPort1.Open();
serialPort1.DiscardInBuffer();
ここに似た情報があった。
とりあえず、ここまで。
M5Stack用Sigfoxモジュール
SNOCのSigfox Breakout Board [BRKWS01]が購入できなくなった。今だけかもしれないが市場にはなさそうである。共立にたくさん在庫があったようだが、販売終了になっていた。開発キットを拡販することはもう終わりにして事業収益に特化するような動きになっているのかもしれない。
23年5月時点で入手できたものに、M5Stack用のモジュールがある。スイッチサイエンスで、現時点で在庫が10個。売り尽くしたら販売終了となると考えられる。
mbedオンラインコンパイラ リタイア済?
今日、1月4日ですが、例の場所にあったリンク先がなくなって旧オンラインコンパイラにアクセスできませんね。。。
mbed Compiler終息ファイナルアナウンス?
最終アナウンスかな。どうやって、保存しとけばいいのかなぁ。
Sigfox使い始めた
やっと使い始めたのに、Sigfox経営難で破産しているね。。段階的にメッセージの保管期間も短縮される予定だそうです
https://www.kccs.co.jp/sigfox/blog/technical/2022/0225/
う〜っむ、何かやろうとするといつもこれだな、旬な時すぐ飛びついてやらないからだね。まぁ、そういう技能がないからだという話もあるけど。スイッチサイエンスにはたくさん在庫があるようなので、購入して登録、1年間の無料期間ということになっている。
mbedから接続してAT$SF=なんかpayloadを送信。。sigfoxクラウドで見ることはできた。
で、コレをどうすんだということだが、とりあえず、macに入っているphpとApacheで、urlを取得してみた。
Nucleo SPI CLK
Nucleo(F411RE)のSPIクロックが想定通りにならなかった。2MHzで1.5MHzs、1.5MHzで750KHz・・・。半分というとそうでもない。。。
コミュニティーで答えをもらったのだが、結論としては、データシートをよく読みなさいということだと思われます。mbedで遊んでいると、ターゲットを変えるだけで普通に動いてhしまうため、そこがどうしても、気づかなくなってしまう。それに、KL25の時はあまり気にせずほとんどがその通りに動いていた。(実際、今回の件もあり確認したが細かく設定できる)
printf(“SystemClock=%d[Hz]\r\n”, SystemCoreClock);
クロック出力できるとのことでmNucleo-F411では内蔵発振、外部水晶時ともに、96MHzと出力される。
Nuleo-F411では、SPIクロックソースは内部クロックの分周を利用するがその設定が3ビットしかないとのことである。データシート
Nucleo 今度は外部クロック
今度は外部クロックでハマった。こっちのブックに記載。
mbed-osのなかで、内部クロックが有効にされているため外部振動子を実装しても外部クロックに切り替わってくれないということのように思う。
最初に参考にしたページ
https://os.mbed.com/questions/79122/Nucleo-F303K8MSO/
Nucleo クロックソース
Nucleo基板(F411RE)には、水晶振動子が二つあり、そのうち32.768KHz(X2)は実装されている。mbedのTickerで時間を刻むと、少し短めになった。1msに対して985usあたり、1~2%の誤差であり、これはセンシング精度としては大きい。会社業務で使用していたため、問題があった。回路図を見ると、X3は8MHzであるが実装されてない。NucleoのDocumenntには、実装すれば自動で切り替わると書いてある。Target基板を作った際、実装できるようにしてあったので、X3を実装したもののTickerの時間精度が上がらず(変わらず)外部クロックが機能していないようだった。
オシロスコープで発振子の振動波形を見たところ、まったく振動していない。しかも、X2もまったく振動していなかった。mbedの中で外部クロックが有効とされずに内部クロックで動いているように思えた。
target.json の中の"STM32F4"に、"clock-source"の記述でHSIを使うようになっていたので、記述をまねして、下記のようにプロジェクトの中のmbed_app.jsonに記述する。