学习了Labview,然后记录下labview调用CH347DLL实际操作教程,不详细的地方麻烦留言,我再做补充~
Labview版本:2025 Q3 社区版
CH347硬件:官方购买的CH347F评估板,板上带有flash和eeprom器件,便于验证
CH347DLL下载地址: Nanjing Qinheng Microelectronics Co., Ltd.
先下载如上驱动文件,并保存到无中文路径目录下解压。
一、创建Labview工程
1、打开软件之后创建工程


2、右键My Computer-->New-->VI,新建VI文件并保存

导入CH347DLL步骤
1、准备导入DLL,选择Tools->Import-->Shared Libarary(.dll)...

2、默认选项,点击Next

3、此处需注意选择“CH347DLL_EN.H”英文版本,部分labview版本可能不识别中文,DLL文件来自文章开头的CH341PAR下载获取。

4、选择头文件路径,并添加变量预处理,调用C/C++ DLL,需要对其变量做下预处理才可正常解析
ULONG = unsigned long;VOID = void;LONG = long;UCHAR = unsigned char;PUCHAR = unsigned char*;PULONG = unsigned long*;WINAPI;BOOL = bool;USHORT = unsigned short;PUSHORT = unsigned short*;

5、查看可见大部分CH347函数已导入成功,着重关注所需使用函数是否导入,确认后点击Next

6、此处选择存放DLL生成的VI文件,可以选择自己的项目文件夹内(我C盘空间不多,就存在项目文件夹下了),也可使用默认路径,默认路径好处在于可在Labview中方便调用,但实际使用没太大区别(此处有无经验老道的同僚解释下)

7、默认错误处理即可

8、此处Next之后显示函数导入界面,理论需要选择“stdcall”方式,但工作量较大,后续单独调整使用函数即可,然后点击Next等待导入完成

9、导入成功后弹出如下框即成功

二、编写I2C读写eeprom测试用例
1、在工程文件中,点击My Computer-->Add->File...,添加刚才DLL生成的CH347DLL.lvlib文件


2、添加完成

3、编写示例程序
先将相关函数直接拖入block diagram中,程序如下,我们实现的逻辑很简单,
CH347OpenDevice 打开设备返回句柄(值大于0)
--> CH347I2C_Set 设置I2C时钟返回TRUE
--> CH347StreamI2C 读写eeprom数据返回TRUE
--> CH347CloseDevice 关闭设备

4、现在针对于CH347OpenDevice、CH347I2C_Set、CH347CloseDevice函数设置下调用方式
双击对应函数块,选择Window-->Show Block Diagram

5、双击函数块,Calling convention选择stdcall(WINAPI),然后点击OK后保存,如此操作剩下的CH347I2C_Set、CH347CloseDevice。

6、关于CH347StreamI2C函数,需要注意下处理,我们示例读写10个字节数据,所以设置如下:
关于参数,设置iWriteBuffer和oReadBuffer如下设置


7、修改之后,需要调整下变量类型,如下点击连接块iWriteBuffer,右键点击变更为Array即可,其他参数对应操作。

8、并引出iWriteLength和iReadLength(用于接收返回的读长度)


9、统一设置完之后回到项目程序界面,进行测试,再此之前先将数组显示格式切换为Hex 十六进制方便查看


三、代码测试
1、测试读写5字节数据,所以将对应数组拉长,然后测试如下,测试成功
写入5字节,0x11、0x22、0x33、0x44、0x55

读取数据和写入一致

CH347 CH347StreamI2C读写接口调用说明:
iWriteBuffer:首字节代表从设备地址,次字节代表读写寄存器地址,如上例子操作eeprom器件,设备地址0xA0,对0x00地址进行10字节读取。
iWriteLength:需要发出的I2C数据长度,包括设备地址+寄存器地址
oReadBuffer:实际读取到的数据内容
iReadLength:实际读取的数据长度

194

被折叠的 条评论
为什么被折叠?



