USBシリアル変換ICのCH347からLPS22をI2C通信で読み出しして結果をPCに表示してみました。
CH347のI2Cには、Adafruitの4633のLPS22が載ったボードを接続しました。
WHO_AM_I (0Fh)を読みだしたときに0xB1(固定値)が出ることを確認するためのプログラムです。
hello.cpp
#pragma comment(lib, "CH347DLLA64.LIB")
#include <windows.h>
#include <stdio.h>
#include "CH347DLL.H"
int main(void)
{
unsigned long serialnum = 0;
CH347OpenDevice(serialnum);
CH347I2C_Set(serialnum,2);
unsigned char bufferwr[4096];
unsigned char bufferrd[4096];
bufferwr[0]=0xBA;
bufferwr[1]=0x0F;
CH347StreamI2C(serialnum,2,bufferwr,1,bufferrd);
printf("%02X\n",bufferrd[0]);
CH347CloseDevice(serialnum);
return 0;
}
serialnumは、CH347Demo.exeで調べました。DevListの#の手前の番号がその数値のようです。
PowerShellで実行するとB1と表示されたので読み出せたことが分かりました。
ちなみに、以下のmake.batファイルでx64 Native Tools Command Prompt for VS 2022を使ってhello.exeファイルを生成しました。
@cd C:\Program Files\Microsoft Visual Studio\2022\Community
@set destdir=%~dp0
cl /Os /c /Fo%destdir%hello.obj %destdir%hello.cpp
link %destdir%hello.obj /OUT:%destdir%hello.exe ^
/MACHINE:X64 /SUBSYSTEM:CONSOLE /LIBPATH:%destdir%lib
ファイル構成は以下の通りです。
chi2ctest/
├ lib/
│ └ CH347DLLA64.LIB
├ CH347DLL.H
├ hello.cpp
└ make.bat