USBシリアル変換ICのCH347TのGPIO1を操作してみました。Windows11PCとUSB接続して操作しています。
以下のピン設定をこのようにしたのでモードはMode1となります。
RTS1:Pull-down
DTR1:Open
プログラム(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);
CH347Uart_Open(serialnum);
printf("GPIO1/RTS0/MISO/TDO/Pin7\n");
printf("GPIO1:HIGH\n");
CH347GPIO_Set(serialnum,0x02,0x02,0xEF);
Sleep(500);
printf("GPIO1:LOW\n");
CH347GPIO_Set(serialnum,0x02,0x02,0xED);
Sleep(500);
printf("GPIO1:HIGH\n");
CH347GPIO_Set(serialnum,0x02,0x02,0xEF);
Sleep(500);
printf("GPIO1:LOW\n");
CH347GPIO_Set(serialnum,0x02,0x02,0xED);
Sleep(500);
printf("GPIO1:HIGH\n");
CH347GPIO_Set(serialnum,0x02,0x02,0xEF);
Sleep(500);
printf("GPIO1:LOW\n");
CH347GPIO_Set(serialnum,0x02,0x02,0xED);
Sleep(500);
printf("GPIO1:HIGH\n");
CH347GPIO_Set(serialnum,0x02,0x02,0xEF);
printf("Close\n");
CH347Uart_Close(serialnum);
CH347CloseDevice(serialnum);
return 0;
}
serialnumは、CH347Demo.exeで調べました。DevListの#の手前の番号がその数値のようです。
PowerShellで実行すると以下のように表示され、GPIO1ピンがHIGH、LOWを繰り返しました。
GPIO1/RTS0/MISO/TDO/Pin7
GPIO1:HIGH
GPIO1:LOW
GPIO1:HIGH
GPIO1:LOW
GPIO1:HIGH
GPIO1:LOW
GPIO1:HIGH
Close
ちなみに、以下の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
ファイル構成は以下の通りです。
chledtika/
├ lib/
│ └ CH347DLLA64.LIB
├ CH347DLL.H
├ hello.cpp
└ make.bat
CH347DLLA64.LIB(amd64)とCH347DLL.Hは以下のフォルダに入っていました。
CH341PAR\LIB\CH347