CP2114はSilicon Labs社のUSB I2Sブリッジチップです。このチップのMac用SDKのCP211x_InterfaceLibraryというフォルダーにライブラリ(dylib)とヘッダーが入っています。このディレクトリで以下のコードで動作確認できました。
Mac OS Xの雪豹で試しましたが、10.5以降のHIDインターフェース使っているようなので、10.5でも使えるようです。dylibにはppc7400(G4)なバイナリも入っています。
# include "Types.h"
# include "SLABHIDtoUART.h"
# include "CP2114_Common.h"
# include "SLABCP2114.h"
main()
{
HID_UART_DEVICE dev;
BYTE api, fw;
BYTE ramconf[32]; // for B1 revsion
HID_UART_STATUS stat;
stat = HidUart_Open(&dev,0,0x10c4,0xeab0);
if (stat == HID_UART_SUCCESS) {
CP2114_GetVersions(dev, &api, &fw);
printf("MORI MORI %d %d¥n", api, fw);
CP2114_GetRamConfig(dev, (PCP2114_RAM_CONFIG_STRUCT)&ramconf);
printf("MORI MORI %02x %02x %02x %02x¥n",
ramconf[0], ramconf[1], ramconf[2], ramconf[3]);
ramconf[3] = 0;
CP2114_SetRamConfig(dev, (PCP2114_RAM_CONFIG_STRUCT)&ramconf);
CP2114_GetRamConfig(dev, (PCP2114_RAM_CONFIG_STRUCT)&ramconf);
printf("MORI MORI %02x %02x %02x %02x¥n",
ramconf[0], ramconf[1], ramconf[2], ramconf[3]);
HidUart_Close(dev);
}
}
bash-3.2$ cc -o main main.c -lSLABHIDtoUART -L.
bash-3.2$ ./main
MORI MORI 5 7
MORI MORI 20 00 01 ff
MORI MORI 20 00 01 00
関数の説明はAN433にあります。
RAM Configurationでコンフィグレーション試してOTPに焼くって感じみたいですが、USBCLK,SYSCLK,SYSCLKはRAM Configurationで設定しても無効なのでOTPに焼いて、そのコンフィグレーションでbootする必要があるようです。
CP2114(B1)は若松通商のページに在庫ありになっていたのですが、探してもらってどうにか入手できました。パッケージがQFNですが、がんばって秋月で購入した変換基板に手半田しました。
当初ライブラリを使わず自力でHIDを叩いていたのですが、うまく動かないところがあって、ライブラリを試してみました。
CP2114はCQ出版の「音遊び!Blackfin DSP基板でディジタル信号処理初体験」という雑誌に同梱された基板でも使われているようです。
いろいろいじってみようと思っていたのですが、PIC32MXなDAIができたので、あまりいじってません。
後から気がついたのですが、サンハヤトさんがCP2112を使ったUSB I2C変換モジュールを作られているようです。このモジュールでもこのライブラリは使えるような気がしますが、試してません。