2020年01月04日

UART I2Cプロトコルブリッジ

あけましておめでとうございます。
2020年も電子工作をはじめとした活動を発信していきたいと思います。

以前からシリアル変換ブリッジIC(I2C/SPII2C/Uart)を紹介しましたが、今回はUARTからI2Cを制御できるUART I2CプロトコルブリッジSC18IM700を紹介します。

SC18IM700を使用するとUARTからI2Cデバイスを制御することができます。SC18IM700がI2Cデバイスマスタとなって様々なI2Cデバイスを制御することができます。

UARTをUSBシリアル変換アダプタに接続すればパソコンのTeraterm等からI2Cデバイスを制御することが可能となります。

また、スピードは期待できないものの、SC18IM700は汎用GPIOの8つを利用することも可能です。


プロトコルブリッジSC18IM700とUSBシリアル変換IC PL2303SAを組み合わせてUSB-I2C変換アダプタを作成してみました。

I2CUSB_1.jpg

I2CUSB_2.jpg

I2CにGrove互換コネクタを搭載することで様々なGroveデバイスを制御することができます。特にTeratermはマクロ機能があるため、マクロ機能を活用することで簡易なドライバ作成ができます。ちょっとしたI2Cセンサのアドレス確認や動作確認、部品の出荷テスト等でパソコン単体でセンサを接続する際の治具として活躍できそうです。

試作基板の動作確認して問題なければteratermのサンプルプログラムをいくつか準備して販売したいと思います。
追記 2/7からスイッチサイエンスにて販売を開始しました。
posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2019年12月28日

磁気エンコーダMLX90316

Melexis社製の14bit磁気エンコーダMLX90316を試食してみました。

先日紹介した3線式SPI通信を使用して磁石の角度情報を読み込んでみました。
結論から言うとMLX90316はダイヤルといったインターフェース向けのエンコーダでモータ制御にはあまり向いていないようです。

Arduinoのサンプルプログラムでは動作しますが、STM32マイコンのSPI通信で実装すると思うように位置情報が読み込めない不具合に遭遇しました。原因を追うとデータシートにその答えがありました。

MLX90316_1.jpg
 MLX90316データシートP.33から抜粋

データシートをよく見るとt1が最小2.3usということで最大クロックは300kHz程度です。さらにt2で1バイトごとに10us以上待機する必要があり、SPI通信で連続してバイトの読み書きができません。また、t5でCS=1状態で300us以上待機する必要があることが書かれています。数MHzのクロックで通信できるSPI通信のメリットがありません。

つまり、位置データ読み込みは数msに1回程度しか読み込めないということになります。MLX90316の仕様でSPI通信対応ということで細かい部分を見逃していました…

CubeMX上でClock Phaseを2Edgeに設定し、SPIのプリスケーラを256に設定してSPIのボーレートを31.25Kbit/sに設定すると正常に位置情報を読み込むことが確認できました。

MLX90316_2.jpg


 uint8_t sdata[4];
 uint8_t rdata[8];
 uint16_t dat[4];

 uint16_t res;
 uint8_t halres; 
 sdata[0]=0xAA;
 sdata[1]=0xFF;


 SPI_1LINE_TX(&hspi1);
 HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_RESET);
 halres=HAL_SPI_Transmit(&hspi1,sdata,2,0x1000);
 if(halres !=HAL_OK) printf("Transmit Err:%d \n\r",halres);
 SPI_1LINE_RX(&hspi1);
 halres=HAL_SPI_Receive(&hspi1,rdata,8,0x1000);
 if(halres !=HAL_OK) printf("Receive Err:%d \n\r",halres);
 HAL_GPIO_WritePin(GPIOA,GPIO_PIN_3,GPIO_PIN_SET);
 dat[0] = (rdata[0]<<8) + rdata[1];

 if((dat[0]&0x03)==2){
   // Err Data
  if ( dat[0] & (1 << 4)) {
   //printf("Magnetic Field is Too Strong!\n\r");
  }
  else if ( dat[0] & (1 << 5)){
   //printf("Magnetic Field is Too Weak!\n\r");
  }
 }
 else if((dat[0]&0x03)==1){
  res=(dat[0]>>2);//16bit Angle Data
  printf("RES: %d \n\r",res);
 }



MLX90316_SPI_Wide.jpg




磁気エンコーダをモータ制御として使用する場合、少なくとも1msに1回、理想は100usに1回読み込みたいのでMLX90316の仕様は満足しないことが分かりました。ダイヤルといったインターフェース向けのエンコーダとしては低コストかつシンプルなコマンドで通信できるため、非常によいと思いました。

14bi磁気エンコーダとして癖がなく、高速な処理に対応しているのはやはりAMS社のAS5048Aが個人的にベストな磁気エンコーダだと改めて思いました。
posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2019年12月07日

FTDI2232を用いたJTAG通信 Machxo2書き込み

Lattice社のFPGAの開発環境はインストールパッケージが1GB前後と軽いのが特徴です。それもあってLattice社を好んで使っています。また書き込みツールがFTDIの2232Dなどでそのまま純正書き込みソフトで書き込むことが可能なため、高価な書き込みツールが不要なのも特徴です。
※Machxoシリーズに対応した開発環境Diamond、iCE40に対応したiCECubeともにそれぞれ1GB前後です

今回はLattice社のFPGA、Machxo2(LCMXO2-256HC-4TG100C)の書き込みについて少し紹介します。

秋月のサイトにもMachxo2の書き込み方法(PDF)について紹介されていますが、安定した書き込みができず少し苦労しました。



Machxo2のJTAGポートは弱いプルアップやプルダウンがありますが、安定化のための十分でないため、外部に別途プルアップやプルダウンが必要です。

TDO、TDI、TMSはプルアップ、TCKはプルダウンですが、抵抗値もポイントです。すべて4.7kohmでは安定した書き込みができませんでした。

評価用ボードの回路を確認すると理由が分かりました。TDO、TDI、TMSはプルアップが4.7kohmというのは同じでしたが、TCKのプルダウン抵抗が違いました。純正の評価ボードのTCKは2.2kohmでプルダウンしていました。



jtag_pull.jpg


純正の評価ボードに合わせてTCKを2.2kohmでプルダウンすると安定して書き込みできることが分かりました。
ただ、正直、Machxo2(LCMXO2-256HC-4TG100C)を書き込む際には2232DよりもTinyFPGAプログラマが簡単です。
TinyFPGAプログラマ専用のソフトウェアでの書き込みになりますが、書き込み速度も高速で便利です。
TinyFPGA AX2 Boardでなくても書き込みできました。
なお、Machxo3は識別コードが異なるため、TinyFPGAプログラマ専用のソフトウェアそのままでは書き込みできませんでした。
posted by Crescent at 00:00| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2019年10月19日

電子ペーパーモジュールV2

Waveshare製1.54inch e-Paper Module電子ペーパーモジュールがアップデートされて、互換性がなくなったようです。

◼︎ハードウェア
概ね互換性があるようです。No.4がNCに変更、L1インダクタンスが若干変わっています。
他は同じため、部品実装を未実装、部品の変更のみで基板は今までと同じ基板を利用できそうです。

V1.jpgV2.jpg
データシートから抜粋

◼︎ソフトウェア
イニシャライズシーケンス、描画コマンドが大きく異なるようです。
残念ながらコードの互換性はなさそうです。実際にV1コードでV2のイニシャライズは出来ず、逆も出来ませんでした。それぞれで対応したコードを実行する必要があります。

V1、V2の最新のコードはこちらのgithub上からダウンロードして使用します。wiki上のサンプルコードはV1のみで19年10月時点ではV2コードがなく、メンテナンスがされていないようです。


◼︎e-Paper I2C モジュール
スイッチサイエンスで販売中のe-Paper I2C モジュールについても次のロット以降はV2のバージョンになる予定です。ソフトウェアについてはV1と互換性がなくなるため、モジュール本体にV2のシールを貼り付けて出荷する予定です。V2対応のサンプルコードについては準備中です。詳細やアップデートについては引き続きe-Paper I2C モジュールのgithubサイトでお伝えします。

posted by Crescent at 17:27| Comment(0) | 電子部品 | このブログの読者になる | 更新情報をチェックする

2019年10月05日

販売製品一覧

販売中のCrescent製品を紹介します。
※2020年9月更新

■ProjectionBall IoT (Version 5)
 ProjectionBallはベクター方式の簡易レーザープロジェクタで、
 簡単な図形や英数字などを描画できます。
 Running Electronics様で販売中です。

■ProjectionBall (Version 3)
 ProjectionBallはベクター方式の簡易レーザープロジェクタで、
 簡単な図形を描画できます。
 クラウドファンディングサイト、
 きびだんごのショッピングサイトで販売中です。完売。
 ※WiFi通信、任意文字列や時計の描画機能に非対応

■磁気エンコーダモジュール
 AMS社製磁気エンコーダAS5048Aを2.54 mmピッチへ変換する基板です。
 専用の磁石を同梱。

■磁気エンコーダピッチ変換基板
 AMS社製磁気エンコーダAS5048AやAS5047Dなどを
 2.54 mmピッチへ変換する基板です。
 基板のみでエンコーダIC、磁石は同梱されていません。

■STM32F303CC搭載DIP変換基板
 Nucleo等の評価ボードが発売されていない48ピンIC STM32F303CC
 LQFP48を2.54 mmピッチへ変換した基板です。

■STM32F373CC搭載DIP変換基板
 Nucleo等の評価ボードが発売されていない48ピンIC STM32F303CC
 LQFP48を2.54 mmピッチへ変換した基板です。
 スイッチサイエンスで販売中

■アナログ出力MEMSマイク変換基板
 搭載した、ピッチ変換モジュールです。ピン間隔は2.54 mm。
 可聴音から超音波まで(100 Hz〜80 kHz)の幅広い帯域を
 高感度にセンシングすることが可能です。
 超音波センサや超音波通信などに使用可能です。

■アンプ内蔵アナログ出力MEMSマイク変換基板
 50倍のアンプを搭載した、ピッチ変換モジュールです。
 ピン間隔は2.54 mm。
 可聴音から超音波まで(100 Hz〜80 kHz)の幅広い帯域を
 高感度にセンシングすることが可能です。
 超音波センサや超音波通信などに使用可能です。

■デジタル出力MEMSマイク変換基板
 搭載した、ピッチ変換モジュールです。ピン間隔は2.54 mm。
 可聴音から超音波まで(100 Hz〜80 kHz)の幅広い帯域を
 高感度にセンシングすることが可能です。
 超音波センサや超音波通信などに使用可能です。

■LattepandaArduino変換基板
 LattepandaのLeonardoポートをArduino Leonardoピッチへ
 変換する基板です。Arduinoのシールドが使えるようになります。
 表面実装部品のみ実装済みです。
 ピンヘッダ、ソケット、リセット用のタクトスイッチは別売です。

■PS/2 USB逆変換アダプタ
 USBキーボードをPS/2化する変換アダプタです。
 標準ドライバで動作可能なUSBキーボードをPS/2キーボードとして
 使用できるように変換します。
 プログラミング専用こどもパソコンIchigoJamやサーバマシンなど、
 PS/2キーボードのみをサポートしている場合に本製品を使用して、
 USBキーボードをPS/2化します。

■e-Paper I2Cモジュール
 e-Paper I2CモジュールはWAVESHARE製200x200, 1.54inch
 E-Inkディスプレイを搭載したモジュールです。WAVESHARE製200x200,
 1.54inch E-InkディスプレイはSPI接続ですが、配線の容易性を実現するために
 SPI I2CプロトコルブリッジIC SC18IS602Bを搭載してI2C化しています。

■nanopi neo/neo2 拡張ボード
 FriendlyElec製NanoPi Neo/Neo2の拡張ボードです。
 ピンヘッダ上にあるUSB2ポート、I2Cポート(Grove)のコネクタを
 搭載しています。標準USBの1ポートで足りないという場合やGrove
 で拡張したいという場合に最適です。
 また、I2Cポートには純正NASキットと同じRTC DS1307が搭載しています。

■Digital Video Shield
 SPIからDVI出力(HDMIコネクタ)するArduinoシールドです。
 FTDI製ビデオエンジンBT816とDVIトランスミッタTFP410を搭載しています。

■ロードスイッチ変換基板
  Vishay製超低漏洩電流ロードスイッチSiP32431を搭載した変換基板です。
 1.5 V~5.5 V、最⼤1.4 Aまでの負荷の電源管理が可能です。
 FETを使⽤する場合に⽐べ、漏れ電流が10 pAと非常に⼩さいことが特徴です。

■ISO 14443 Type A RFID付きEEPROMモジュール
 デュアルインタフェースEEPROM M24SR64とアンテナを搭載したI2C Groveモジュールです。
 64k bit EEPROMにI2CとRFIDの2つの通信で内部のデータにアクセスできます。
 EEPROM M24SR64はISO 14443 NFC/RFID tag NFC forum Type 4 に対応しています。

■BLE5モジュール変換基板
 SiliconLabs製BLE5モジュールBGX13Pを搭載した変換基板です。
 BLE5の制御ソフトウェアが予め書き込まれているため、容易にBluetooth通信を使⽤できます。
 3.3 Vシリアル通信(UART,初期115200 bps)で外部機器からパラメータを設定できます。
 TELEC(技適)認証済 工事設計認証番号 209-J00282

■WiFiモジュール変換基板
 SiliconLabs製WiFiモジュールAMW037を搭載した変換基板です。
 WiFi制御ソフトウェアが予め書き込まれているため、容易にWiFi通信を使⽤することができます。
 3.3 Vシリアル通信(UART,初期115200 bps)で外部機器からパラメータを設定することが可能です。
 TELEC(技適)認証済 工事設計認証番号 201-180092

■I2C-Uart変換基板
 マイコンのI2CポートをUART通信ポートに変換するアダプタです。
 マイコンからI2Cデバイスとして制御し、UARTのボーレート設定、送信、受信処理をすることができます。

■I2C-RS232C変換基板
 マイコンのI2CポートをRS232C通信ポートに変換するアダプタです。
 マイコンからI2Cデバイスとして制御し、UARTのボーレート設定、送信、受信処理をすることができます。

■USBシリアルI2C変換基板
 USBシリアルをI2Cマスタに変換する基板です。
 シリアルCOMポートを介してPCやRPI等からI2Cデバイスを制御できます。
 I2Cデバイスの動作確認やラピッドプロトタイピングに最適です。

■デュアル出力昇圧コンバータ基板
 ADP1612スイッチングコンバータを使用した昇圧電源です。
 1.8V~5.5Vの入力で±15.1Vの出力が得られます。
 1.8Vから使用可能なため、電池駆動のアンプ電源に最適です。

■高感度磁界センサ変換基板
 TI製高感度磁界センサDRV425を使用した高感度磁界センサ基板です。
 高感度±0.5 mT、帯域最大47 kHzで磁界をアナログ出力として得ることができます。

■USB-PDM変換基板
 2個のデジタルPDM出力MEMSマイクをUSBオーディオデバイス(ステレオ)に変換します。
 24 bit、44.1 kHz/48 kHzサンプリングで変換します。
 デジタルPDM出力MEMSマイクの評価や動作確認に便利です。

■USB-SMBUS/I2C変換基板
 CP2112を使用したUSB-SMBUS/I2C変換基板です。
 Simplicity Studioを使用してVIDやPID等のパラメータを設定変更できます。
 USB-PDM変換基板のパラメータ書き換えに最適です。

■AC電流センサ基板
 ホール素子を用いた低侵襲AC電流センサ基板です。
 一般的な電源ケーブルを加工せずに近接させて使用します。
 電源ケーブルの電流に応じて比例してアナログ電圧が出力されます。

■可変アンプ内蔵アナログ出力MEMSマイク変換基板
 増幅回路TLV316とKnowles社製アナログ出力MEMSマイクSPU0410LR5Hを搭載した基板です。
 可聴音から超音波(100Hz〜80kHz)までの幅広い帯域を高感度にセンシングすることが可能です。
 RV1により約1倍〜約50倍まで増幅率を変更することが可能です。




posted by Crescent at 00:00| Comment(2) | 電子部品 | このブログの読者になる | 更新情報をチェックする