I2Cドライバ書いてて、テキトーにI2Cスレーブが欲しかったんだけど、よくある24系のEEPROMが見当たらなかったので、試しにTSYS01を使ってる。
温度センサだけど、3.3V動作(5V不可)で-5 - +50℃時の精度が±0.1℃、I2CとSPIの両方に対応、というすごいやつ。QFNパッケージなので基板の温度監視とかなんだろうけど、何に使うつもりなんだろうか。サーミスタの置き換えみたいな用途を想定しているらしいんだけど、それにしてはオーバースペックすぎない?
データシート曰く、「まずリセットしろ」とのこと。リセットコマンドを送ると、続けて読み出しとかしてもNAKになる。リセットと係数の読み出しの間に適当なディレイが必要なので、ここの実装がちょっと面倒。アプリケーション側でRTOSのディレイを入れるか、ドライバ側でRTOSに依存するか。
アドレスはレジスタごとに連続しているので、複数レジスタを連続して読み出せるのかと思いきや、それはできない。ちゃんと1本ずつ(16or24bitずつ)読み出す必要がある。
あと、レジスタ指定の書き込みと読出しの間にSTOPコンディションを挟む必要がある。リスタートだと駄目っぽい。
温度は直読みできなくて、ちょっと面倒。とはいえ、データシートには計算式が書いてあるが、割り算が不要で、浮動小数点の積和ができれば計算できる。データシートだと累乗が使われているけど、整数の累乗なので、単純に複数回積を取ればいいので、math.hも不要。
一つ不思議なのが、計算式では24bitのADC値の内、下位8bitを読み捨てている点。分解能0.01℃を満たすには、16bitではちょっと物足りない気がする。メーカーのGitHubにCのドライバがあるけど、これも下位8bitを捨てている。なんとも腑に落ちない。さほど難しい計算をしているわけでもないので、24bit丸々使うように書き換えれば24bit使えるんだろうけど。
***
とりあえず、I2Cドライバは動くようになったので、まぁ、満足。少し前に作ってたやつ手直しした程度なので今日はほとんど作業してないんだけど。。
今回、物は試しにとF4用のドライバをF3で使おうと思ったんだけど、F3とF4はI2Cペリフェラルも構造が変わっているので、コピペして動くようなものではないようだ。なんのためにHALライブラリ挟んでるんだか。。。
シリーズ間で移植できないならわざわざHAL使う意味も少ないよなぁ。
ロジアナでI2Cを見ていると、立ち上がりエッジで暴れがち。プロトコルデコーダがエラー吐くのでデコードできない。Proだとそのあたりうまくやってくれるんかなぁ。LAP-C Pro買うよりSIGLENTの4chオシロ買うほうが安いっていうね。。。I2CやSPI見るのが目的なら高性能なロジアナ買うよりオシロ買うほうが良さそう。GUIで操作できる分LAPのほうが便利そうだけど、SIGの4chならWebサーバ内蔵してるし。使い物になるかは知らんが。
たまに暇つぶしにTektronixのyoutubeの動画見てるけど、MSOシリーズ、いろいろ機能が方法で面白そうな反面、タッチ操作のレスポンスが悪いのが気になるところ。結構ストレスたまりそう。昨今のオシロってだいたいこんなものなんだろうか?
***
星空撮るのも飽きてきたので、別のネタ探し中。USB PD? あんまり気がのらないなぁ。
缶サットとかやりたいけど、ロンチビークルがないからなぁ。よし、まずは投石機を作るところから……
ペイロードが1kgとして、それを高さ50mまで上げるには、50kgの物体を1m落としたに等しいエネルギーが必要。損失を考えると、その数倍。150kgの物体を1m落としたくらい。結構凄まじいエネルギーになりそう。まず持ち上げるのが大変。しかしまぁ、バスターズはダクトテープとツーバイ材で作ってるし、ベアリング軸受使ったりビス使ったり、縛りプレイ無しなら作れそうではある。まぁ、作ったところで、投石機を使えるような敷地はさすがに無いんだが。。。
0 件のコメント:
コメントを投稿