2024年03月16日

SC18IM700とSC18IM704の差

以前にUART I2Cプロトコルブリッジのリニューアル版について紹介しました。UART I2Cプロトコルブリッジの旧バージョンはSC18IM700リニューアル版はSC18IM704となって別の製品として販売されています。

ハードウェアについてはピンアサインやGPIOモード、IO電圧、バッファサイズで変更があります。ただし、SC18IM700とSC18IM704でコマンドの互換があるものの、設定の一部は互換性がなくなっているようです。今回は変更となっているコマンド部分の差について紹介したいと思います。


■I2C CLK
 I2C CLKはデフォルトでは100kHzの設定になっており、特別な理由がない限りは変更する必要がありません。CLKを落としてより通信を安定させたい場合やCLKを上げて少しでも通信レートを上げたい場合等で変更する必要があります。

 設定自体のレジスタアドレスは同じですが、設定値が変更になっています。SC18IM700では2つのレジスタを合わせた値がCLKとして反映されてる仕様(I2CClkHとI2CClkLの差がない)でしたが、SC18IM704は2つのレジスタに16bitで設定した値がCLKとして反映される仕様(I2CClkHとI2CClkLを区別する)に変更されています。

 個人的にはI2CClkHに値を設定すると大幅にCLKが低下するため、I2CClkHの用途が限定的で以前の仕様の方が利便性は良かったと感じました・・・


・SC18IM700

700_CLK.jpg

・SC18IM704
704_CLK.jpg



■I2C CTO
 I2C通信のタイムアウト時間設定はデフォルトでは無効化されています。

 SC18IM700の場合、CTOのビットのみを有効化したするとデフォルトのタイムアウト時間は230msec程度です。

 一方、SC18IM704の場合はI2C_CLKも設定値に関係する仕様になっています。I2C_CLKがデフォルトの100kHzの場合、CTOのデフォルトは35msec程度とタイムアウト時間が短くなっています。また最大でも90msec(I2C_CLK=100kHz)程度で設定可能なCTO時間の範囲が狭くなっています。

 個人的にはI2C_CLKに依存せず、CTOの調整幅が大きいため、以前の仕様の方が利便性は良かったと感じました・・・



・SC18IM700

700_CTO.jpg

・SC18IM704

704_CTO.jpg



なお、SC18IM700とSC18IM704をソフトウェア側で区別するためにはSC18IM704に搭載された「Read version function ID」コマンドを利用することで確認することが可能です。アスキーで「VP」の文字列(0x56,0x50)を送信することで「SC18IM704 1.0.2」という感じで応答を確認することが可能です。応答がない場合はSC18IM700と区別できます。

後継のSC18IM704はIO電圧、バッファサイズ等、拡張が行われている一方でレジスタ設定については以前の仕様の方が利便性が良いと感じました。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2023年06月10日

RTC SD30XXシリーズ

以前に外付けRTC比較について紹介しましたが、昨今の円安の影響でより低価格かつ高精度なRTCについて調査していました。その中で要求を満たす中華製RTCがあったため、今回、紹介したいと思います。

深圳にあるwave社のRTC SD3031、SD3077、SD3078は温度補正機能付きのRTCで水晶発振子内蔵、精度±3.8ppm、電源/電池切り替え内蔵(電池と電源のピンがそれぞれある)、1個250円前後の低価格です。更に70byteのSRAMも利用できます。中華製なのでDigi-keyやMouser等での入手性は悪いものの、LCSCやAliexpress等で入手可能です。SD3031モジュールDigi-keyでも入手可能です。


SD3031、SD3077、SD3078のアドレスや内部レジスタ等は全て同じで、ピンアサインのみが異なります。他のRTCからの置き換えを想定してピンアサインの互換性のために3種類販売されています。ただし、既存のRTCとはソフトウェアでは互換性がなく、更にちょっと癖があるため、注意点についても紹介します。


■時刻書き込み時の注意点
・日時を書き込む際は先にCTRレジスタのWRTC1に1をセットし、続いてWRTC2,3に1をセットする必要
・hourは0~23時表現の場合は7bit目に1を立てて書き込む必要
・時刻、日付の7バイトを一括で書き込む必要
・書き込み後は先にWRTC2,3を0に戻してからWRTC1を0に戻す必要
・SRAMの書き込み時も日時同様にWRTCレジスタの書き換えが必要

■時刻読み込み時の注意点
・hourは0~23時表現の場合は7bit目の1を除く必要

■その他注意点
・汎用的なSOP8パッケージだが、NOR Flashで使用される幅が広い208milタイプ

一般的なRTCではレジスタに日時を書き込めばそのまま更新できますが、SD30XXの場合、事前にレジスタで書き込み有効化の処理が必要であり、手間がかかります。また、時間は24時間表記固定でなく、12時間モード/24時間モードの両方に対応している分、書き込みと読み込みに処理が必要です。これらを考慮して、USBシリアルI2C変換基板を使用したSD30XXシリーズ用のWebシリアルの設定/確認ツールを作成してみました。日本における入手性が悪い点と扱いにちょっと癖のあるRTCですが、低価格で高精度なのは非常に魅力的だと思いました。
posted by Crescent at 00:00| Comment(2) | TrackBack(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2023年02月25日

RTC用MEMS発振器

今回は安価に高精度を実現するMEMS発振器を紹介したいと思います。RTCの精度が悪い場合、RTCの時刻が頻繁にずれ、時刻調整やネットワークから時刻を取得する頻度を多くする必要があります。

マイコンで時刻や日付を保持するためのRTCを利用する場合、内蔵RTC機能を使用するか、外付けRTCを利用することになります。外付けの場合はRV-8803-C7やDS3231といった温度補正があるRTCを利用することで高精度に時刻保持することが可能ですが、部品が増え、コストが高くなりがちです。内蔵RTCの方が通信ラグがなく、比較的安価に実装することが可能です。ただし、精度は一般的な32.768kHz水晶発振子では20ppm前後とあまり期待できません。また、水晶発振子の外部負荷容量によっては更に精度が悪化する場合があります。一般的な水晶発振子の精度と時刻ずれの関係は下記の通りです。実際は昼夜の温度変化、季節の温度変化の影響、負荷容量によって更に大きくずれることが想定されます。

20ppmの場合、1年で11分前後
5ppmの場合、1年で3分前後
1ppmの場合、1年で30秒前後

今回は内蔵RTCで安価に高精度を実現する方法として、温度補正機能内蔵のMEMS発振器、SiT1552を紹介したいと思います。23年2月時点で1個200円~300円で温度補正機能を内蔵し、5ppmの精度を実現しています。データシートを見る限り、SiT1552AC-JEでは5ppm以内を謳っており、実力値としては1~2ppm前後あるようです。また、1.5V~3.63Vの広い電源範囲と1uA以下の消費電力でRTC用途にも最適です。

32.768kHzの水晶発振子を接続する代わりにXINにSiT1552のクロック出力を接続し、電源を供給して使用します。XOUTは未接続にします。マイコン側に水晶発振子か、発振器の設定パラメータがある場合は発振器に変更します。水晶発振子と異なり、MEMS発振器はそのままクロックが出力されます。そのため、負荷容量の調整や配線長を水晶発振子ほど考慮しなくてもよく、設計負荷が減ります。

SiT1552はCSPパッケージで非常に小さく、そのままでは扱いにくいため、ブレイクアウト基板を設計してみました。

osc1.jpg

osc2.jpg

実際にSiT1552を実装して、使い勝手が良ければまた、製品として提供を開始する予定です。今回は温度補正機能付きのMEMS発振器を利用することで比較的安価に内蔵RTCで高精度を実現する方法を紹介しました。内蔵RTCで安価に高精度を実現する方法として、今回紹介した方法の他にマイコン内蔵の温度計を使用して温度補正する方法もありますが、水晶発振子毎の温度特性のばらつきもあるため、調整が難しいのが難点です。RTCの部品を減らしつつ、より低コストに高精度を実現したいという場合に最適だと思いました。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2022年11月12日

BLE5モジュールV2

プログラミングなしで簡易なコマンドを用いてBLE通信をすることが可能なモジュールがSilicon Labs社からWireless Xpress BGX13シリーズとして2018年から提供されていました。しかしながら先日、2022年8月に生産完了予定(生産終了は2023年3月予定)が発表されました。

BGX13シリーズは発売から4年程度経過しており、生産完了もやむを得ずという状況ですが、BGX13シリーズの上位として発売されたBGX220シリーズは2021年に発表されてから1年ほどでBGX13シリーズと一緒に生産終了となりました。WiFiモジュールでも生産完了になっており、方針変更で無線系のXpressシリーズから撤退となったようです。上位版のBGX220シリーズも生産完了となり、後継機種も販売されないことから既存のユーザに対する影響を考慮し、BGXシリーズについてはLaird社からLyraシリーズとしてBGXシリーズと同じハードウェアとXpressファームウェアが提供されることが分かりました。今回はBGXシリーズとLyraシリーズの違いについて調査した結果(アンテナ内蔵Pシリーズを対象)を紹介したいと思います。

BGXシリーズとLyraシリーズの違いについてはLyraシリーズの公式サイトにBluetooth Xpress (BGX) Migration Guideとして公開されています。詳細はそちらを参考にしてください。

lyra.jpg

■ハードウェア
ハードウェアとしてフットプリントは同じため、そのまま同じフットプリントとして利用できます。一方、ピンアサインはBGXシリーズとLyraシリーズで互換性がありません。LyraシリーズのピンアサインはBGX220に合わせたようで、BOOTピンが異なります。BGX13とはBOOTピンの他、電源やUARTのピンも異なります。

電源電圧については1.8V~3.3Vとなっており、最低2.4VのBGX13よりもより低電圧で動作できる仕様となっています。

■ソフトウェア
ソフトウェアについては互換性有ということのようです。ただ、BGXシリーズでは出荷時から既にXpressファームウェアが書き込まれた状態でしたが、Lyraシリーズは出荷時にXpressファームウェアは書き込まれておらず、ユーザ側で公開されているXpressファームウェアを書き込む必要があります。

ファームウェアはBOOTピンをGNDにした状態で電源投入させることでUARTから書き込むことが可能です。Github上でWindowsのコマンドラインからシリアルUARTを介してファームを書き込むための書き込みツールuart_dfu.exeが公開されています。uart_dfu.exeはUART-DFU_XXX-XXXXX.zipとして圧縮ファイルとして提供されています。

コマンドライン上から例えば下記のようにコマンドを実行するとファーム書き込みが可能です。

uart_dfu.exe COM8 115200 LYRA-P_Bluetooth_Xpress_UART.gbl

実際にファーム書き込みした際に分かった点として、書き込みツールuart_dfu.exeはUSBシリアル変換のGND, TX, RXの他にCTS、RTSの配線も必要な点です。通常のマイコンとの通信等ではGND, TX, RXだけでも十分ですが、uart_dfu.exeの書き込みツールはCTS、RTSの信号変化も確認しているようで手持ちのGND, TX, RXだけのUSBシリアル変換アダプタでは動作しませんでした。GND, TX, RXの他にCTS、RTS端子も備えた別のUSBシリアル変換アダプタを使用するとすんなり書き込むことができました。

Wireless XpressシリーズはUARTシリアルで設定変更できるため、プロトコル実装なしでマイコン側のファーム書き換えのみで様々な機能を実現できるというのは非常に魅力的です。BGXシリーズは生産完了になったものの、Laird社からLyraシリーズとして今後もある程度入手できるようで安心しました。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2022年08月13日

1-WireマスタコンバータDS2485

1-WireはGNDと電力を兼ねた信号線1本だけで低速なデータ転送を行うシリアルインターフェイス規格です。I2CやSPIと違って基板内や基板同士の通信でなく、外部に延長することを目的としていたシリアル通信規格のため、最長で数百m以上ケーブルを伸ばしてセンシングすることが可能です。

今回、紹介するのはI2Cから1-Wireデバイスを制御するための1-Wireマスタコンバータ、DS2485です。126Byteのバッファ、0.75kbit(32Bytex3)のEEPROMを搭載しています。I2Cから1-Wireに変換するコンバータとして、従来のDS2482、DS2483、DS2484等がありますが、DS2485は細かいタイミング調整やバッファ、EEPROM等を備えています。一方、コマンド等は従来と互換性がなくなっています。また、標準では3.3V系専用で5V系には対応していません。5V系で動作させるためにはレベル変換が必要です。なお、DS2485に備えられたGPIOはユーザ側でオープンドレインIOとして利用可能ですが、データシート内のP.38のP-Channel Enableビット等があることから仕様上はストロングプルアップのP-FET制御用のIOを想定しているようです。


マイコンから直接、1-Wireを制御する場合に比べて、1-Wireマスタコンバータを使用するとI2Cからコマンドを書き込んだり、値を読み込んだりするだけで通信できるため、マイコン側の負荷が低減できます。特に1-Wireはタイミングにセンシティブなため、一般的なマイコンで実装すると1-Wireの通信中は処理が占有されてしまいがちです。そのような場合に便利なのが1-Wireマスタコンバータです。

1-Wireマスタコンバータ、DS2485の変換基板を作成して、有名な1-Wire温度センサ、DS18B20を接続してみました。


1Wire.jpg

1-Wireで必要なコマンドが1-Wireマスタコンバータに予め実装されているため、簡易に1-Wire機能を実装することが可能です。実装後の動作確認ではすんなり動作せず、原因を追ったところ、初期設定が必要なレジスタがあることが分かりました。1-WireマスタコンバータDS2485として電源投入後、Master Reset 62hコマンドくらいで、その他のタイミング等はデフォルト値で問題ありません。ただ、RPUP/BUFコマンドについてはエラッタなのか、デフォルト値から変更が必要なことが分かりました。RPUP/BUF Registerの初期値は803Chとなっており、一般的な条件では0006hに設定変更が必要です。他のレジスタはデフォルトで0006hになっているにも関わらず、RPUP/BUFだけは0006hに変更が必要なため、分かりづらく、注意が必要だと思いました。

1-Wireは省配線でありながら、1-Wire温度センサ、DS18B20の他、熱電対やEEPROMメモリ、I2C/SPIブリッジ等の様々なデバイスがあることから、色々試してみたいと思いました。
posted by Crescent at 00:00| Comment(0) | TrackBack(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする