×

1号の足跡(2) 新しいLazuriteの自動テスタをラズパイで作る

2016-06-30

8月に発売を予定している新しいLazuriteのテスターをRaspberry Piを使って開発していこうと考えています。
ブログではその過程を公開していこうと思います。体当たりで開発をしながらブログを書いていくので、うまくいかない場合は方針転換があるかもしれませんが、ご容赦ください。

さて、本題ですが「Lazuriteの出荷用自動測定器をraspberry pi3で作るぞ!!」という事で、それに関連する記事を書いていきたいと思います。

IMG_0445

目指しているシステム構成はこの通りです。

IMG_0522

今日は第1日目、まず最初の開発のテーマはUSBシリアル変換チップ FT232のD2XXモードをRaspberry pi3で使うです。

FTDIのD2XXドライバは、USBをシリアルIOとして使用するのではなく、GPIOやメモリとして使用する事ができるドライバです。(シリアル制御以外の機能も実現できる優れものです。)

LazuriteではFT232に内蔵されているEEPROMにボードの識別コードを書き込んでいます。また、FT232のGPIOを動かしてマイコンボードをリセットしたりプログラム書き換えモードに変更する制御を行っています。

さて、早速FTDIのホームページのD2XXドライバのページを見てみると、(suits Raspberry Pi)との文字が!!

スクリーンショット 2016-06-30 21.03.44

早速、マニュアル通りにインストールしてみましたが、上手くいきませんでした。

ネットで調べてみると、どうやら使ったライブラリは初代Raspberry piのものだった様です…

初代Raspberry Pi用:1.3.6 ARMv6 hard-float(suits Raspberry Pi)
Raspberry Pi2/3用:  1.3.6 ARMv7 hard-float

気をとり直してインストールしてみたら、無事に動作させるの事が出来ました。

インストールの方法はダウンロードしたファイルを解凍するとできる、「release¥ReadMe.txt」というファイルを開くとフォルダの構成と設定方法が記載されており、その下にサンプルプログラムの実行方法まで記載されています。

スクリーンショット 2016-06-30 21.14.59

 

実行したら次の通り動作させることができました。ManufactureやDescriptionにLazurite用のコードが記載されているのが確認できます。


pi@raspberrypi ~/develop/miniTester/ftdi_test/lib/release/examples/EEPROM/read $ sudo ./read
Library version = 0x10306
Opening port 0
FT_Open(0) failed
pi@raspberrypi ~/develop/miniTester/ftdi_test/lib/release/examples/EEPROM/read $ sudo lsmod
Module                  Size  Used by
ftdi_sio               31193  0
usbserial              22115  1 ftdi_sio
brcmfmac              186478  0
brcmutil                5661  1 brcmfmac
cfg80211              427817  1 brcmfmac
joydev                  9024  0
evdev                  11396  4
rfkill                 16018  2 cfg80211
snd_bcm2835            25029  3
snd_pcm                75826  1 snd_bcm2835
snd_timer              19160  1 snd_pcm
snd                    51844  9 snd_bcm2835,snd_timer,snd_pcm
i2c_bcm2708             4770  0
spi_bcm2835             7286  0
bcm2835_gpiomem         3040  0
bcm2835_wdt             3225  0
uio_pdrv_genirq         3164  0
uio                     8000  1 uio_pdrv_genirq
i2c_dev                 5859  0
fuse                   83461  3
ipv6                  347473  30
pi@raspberrypi ~/develop/miniTester/ftdi_test/lib/release/examples/EEPROM/read $ sudo rmmod ftdi_sio
pi@raspberrypi ~/develop/miniTester/ftdi_test/lib/release/examples/EEPROM/read $ sudo rmmod usbserial
pi@raspberrypi ~/develop/miniTester/ftdi_test/lib/release/examples/EEPROM/read $ sudo ./read
Library version = 0x10306
Opening port 0
FT_Open succeeded.  Handle is 0xf6f2b0
FT_GetDeviceInfo succeeded.  Device is type 5.
FT_EE_Read succeeded.

Signature1 = 0
Signature2 = -1
Version = 2
VendorId = 0x0403
ProductId = 0x6001
Manufacturer = LAPIS
ManufacturerId = A1
Description = LAZURITE Sub-GHz Rev2
SerialNumber = A1Z3R8F6
MaxPower = 90
PnP = 1
SelfPowered = 0
RemoteWakeup = 1
232R:
-----
	UseExtOsc = 0x0
	HighDriveIOs = 0x0
	EndpointSize = 0x40
	PullDownEnableR = 0x0
	SerNumEnableR = 0x1
	InvertTXD = 0x0
	InvertRXD = 0x0
	InvertRTS = 0x0
	InvertCTS = 0x0
	InvertDTR = 0x0
	InvertDSR = 0x0
	InvertDCD = 0x0
	InvertRI = 0x0
	Cbus0 = 0xA
	Cbus1 = 0xA
	Cbus2 = 0x0
	Cbus3 = 0x1
	Cbus4 = 0x5
	RIsD2XX = 0x0
Returning 0
pi@raspberrypi ~/develop/miniTester/ftdi_test/lib/release/examples/EEPROM/read $ 

実行コマンドは「./read」ではダメで、「sudo ./read」にしないと動作しないのですが、sudoを付け忘れてしまい、少しだけハマってしまいました。

最後に初日のポイントです。

1.正しいUSBドライバをインストールする
初代Raspberry Pi用:1.3.6 ARMv6 hard-float(suits Raspberry Pi)
Raspberry Pi2/3用:  1.3.6 ARMv7 hard-float

2.USBシリアルのドライバをrmmodを使用して無効にする

です。皆様に新しいボードを早く届けられるよう、開発を加速していきます!!