2022年07月23日

ST製気圧センサLPS25HB注意点

ST製気圧センサLPS25HBを使っていて、うまく気圧データを取得できないという問題に遭遇したため、その対処方法について紹介したいと思います。今回は秋月電子で販売されているLPS25HBの変換基板を使用しました。

現象としては一般的なI2Cデバイス同様にアドレス、レジスタを指定して、データをまとめて読み出すという流れでLPS25HBから気圧データを3byte分読み出すと同じ値のデータが3つ読み出され、意図した値が読み出せてないということが分かりました。データシートをよく見るとLPS25HBは一般的なI2Cデバイスと異なり、まとめてデータを読み出す際の自動アドレスインクリメントがデフォルトで無効化されているということが分かりました(データシートP.25)。自動アドレスインクリメントを有効化する場合はレジスタの最上位ビットに1をセットして読み出すと記載があります。自動アドレスインクリメントとは、2バイト以上のデータを読み出す際に先頭のレジスタのみ指定すると自動的にレジスタをインクリメントして一括で2バイト以上のデータを読み出せる機能です。

つまり、LPS25HBで気圧データ等を取得する場合、個々のレジスタを指定して1つずつ読み出すか、レジスタの最上位ビットに1をセットして読み出す必要があります。

例えば気圧データの場合、レジスタはPRESS_OUT_XL 0x28、PRESS_OUT_L 0x29、PRESS_OUT_H 0x2Aとなり、0x28を指定して3回読み出しするのでなく、レジスタの最上位ビットに1をセットした0xA8を指定して3回読み出しする必要があります。同様に温度の場合は0x2Bでなく、0xABを指定する必要があります。


他のST製気圧センサをざっと調べてみたところ、自動アドレスインクリメントがデフォルトで無効化されているのはLPS25HBのみということが分かりました。



製品名アドレスインクリメント有無
ILPS22QS
LPS22CH
LPS22DF
LPS22HB
LPS22HH
LPS25HB×
LPS27HHTW
LPS27HHW
LPS28DFW
LPS33K

LPS25HBを使用する際は自動アドレスインクリメントがデフォルトで無効化されていることに注意してください。一般的な多くのI2Cデバイスはアドレスの自動インクリメントが有効化されていますが、ごく稀に自動アドレスインクリメントがデフォルトで無効化されているデバイスがあります。LPS25HBに限らず、I2Cデバイスの読み出しで同じ値が読み出されるという場合は自動アドレスインクリメントの設定がどうなっているか確認した方が良いと思いました。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2022年07月02日

FPGA入門に最適なicestudio

今回はFPGA入門に最適なicestudioを紹介します。FPGAの開発をする場合、一般的にはメーカ提供のFPGAの開発環境をインストールしますが、開発環境のディスク容量が大きく、パッケージの追加等、インストール作業自体もなかなかハードルが高いのが現状です。

今回紹介するicestudioはメーカが提供する開発環境ではなく、OSSのプロジェクトの1つとしてFPGAの開発環境が開発、提供されています。対応しているFPGAは主にLattite社のiCE40系列、ECP5系列となっていますが、様々なiCE40系列の開発ボードに対応しています。今回はAliexpressで購入したIcesugar-nano開発ボードでicestudioを使ってみました。Icesugar-nano開発ボードはボード上にFPGA書き込みアダプタ、USBシリアル変換機能のマイコンが実装されているため、別に書き込みアダプタ等を購入せずに単体で書き込みや動作確認、デバッグ等を行うことが可能です。

話をIcesugar-nanoから戻して、icestudioの特徴は下記の通りです。
・一言でArduino IDEのFPGA版というイメージ
・Linuxはもちろんのこと、Windows、Macでも動作
・icestudioだけで論理合成、書き込みに対応
・インストールサイズが0.5GB前後と小さい
・評価ボードのサンプルが充実
・ブロックでの記述に対応、Verilogにも対応
・Verilogが分からなくとも、インストール後、すぐにLチカできる
・RISC-V等のブロック等もあり、様々な拡張が可能

今回はicestudio 0.9.0を利用してみました。


ice_studio9.jpg



0.9.0時点で対応しているボードは下記のようです。

ice_studio7.jpgice_studio8.jpg


様々なサンプルプロジェクトが準備されています。

ice_studio2.jpg

ice_studio4.jpg

ice_studio3.jpg

ice_studio5.jpg

ice_studio6.jpg


実際にLチカのサンプルプロジェクトを実行してみました。SelectからIcesugar-nanoを選択し、Examples→04.Muxes内の「01.Blinking Fixed LED」を選択します。

ice_studio1.jpg

右下のUploadボタンを押すと自動的に論理合成が行われ、合成が成功するとIcesugar-nanoに書き込みが行われます。

9zco1-uovw5.gif

上記のようにLEDが点滅したら成功です。デフォルトのブロックの他に有志でRISC-V等の様々なブロックが開発されているため、ブロックだけでちょっとしたFPGAの機能を実現できそうです。icestudioはまだ0.9.0ですが非常に完成度が高いと思いました。icestudioはもともとLinux環境でのFPGA開発環境のOSS、APIO等を開発してきたプロジェクトの1つで、以前からも注目していたため、今後のプロジェクトの発展が楽しみだと思いました。
posted by Crescent at 00:00| Comment(0) | 電子工作 | このブログの読者になる | 更新情報をチェックする