发表于:2019/6/29 14:42:00
#0楼
本程序利用Ginkgo I2C适配器底层接口函数对AT24C02存储器进行读写控制,程序将写入的数据显示出来,程序代码如下:
#include <stdio.h>
#include <Windows.h>
//定义I2C适配器底层函数的函数指针
typedef int(*I2C_Funtion)(char *in,char *out);
//数据存储区
unsigned char inString[10240];
unsigned char outString[10240];
//主函数
int main(void)
{
// 加载DLL
HINSTANCE hDLL; //DLL句柄
hDLL = LoadLibrary("vtfreqfunc.dll");
//获取I2C初始化函数指针地址
I2C_Funtion I2C_Init = (I2C_Funtion)GetProcAddress(hDLL,"VTIF_I2C_Init");
//获取I2C写数据函数指针地址
I2C_Funtion I2C_WriteData = (I2C_Funtion)GetProcAddress(hDLL,"VTIF_I2C_WriteData");
//获取I2C读数据函数指针地址
I2C_Funtion I2C_ReadData = (I2C_Funtion)GetProcAddress(hDLL,"VTIF_I2C_ReadData");
//获取I2C设备选择函数指针地址
I2C_Funtion I2C_SelectDevice = (I2C_Funtion)GetProcAddress(hDLL,"VTIF_I2C_SelectDevice");
//选择I2C适配器
printf("选择I2C适配器\n");
I2C_SelectDevice("0",(char*)outString);//选择I2C适配器
printf("%s\n\n",outString);//显示选择适配器操作后的字符串数据
<font color="#ff0000">//初始化I2C适配器
//数据格式为:“控制模式|设备地址|读写速度|子地址模式|子地址宽度|初始化通道”
printf("初始化I2C适配器\n");
I2C_Init("1|0xA0|100000|1|1|0",(char*)outString);//初始化I2C适配器
printf("%s\n\n",outString);//显示初始化后适配器返回的初始化结果字符串</font>
//向24C02存储器写数据,首字节为子地址,后面是写入的数据
printf("向24C02存储器写数据\n");
I2C_WriteData("0x00|0x00|0x01|0x02|0x03|0x04|0x05|0x06|0x07",(char*)outString);
printf("%s\n\n",outString);//显示数据写操作后的结果
//读取24C02存储器指定地址的数据
printf("正在读取数据\n");
I2C_ReadData("0x00|8",(char*)outString);//首字节为子地址,读取8字节数据
printf("%s\n\n",outString);//显示返回来的数据,数据格式为:“数据1|数据2|...|数据n”
FreeLibrary(hDLL);
system("pause");
return 0;
}
复制代码
#include <stdio.h>
#include <Windows.h>
//定义I2C适配器底层函数的函数指针
typedef int(*I2C_Funtion)(char *in,char *out);
//数据存储区
unsigned char inString[10240];
unsigned char outString[10240];
//主函数
int main(void)
{
// 加载DLL
HINSTANCE hDLL; //DLL句柄
hDLL = LoadLibrary("vtfreqfunc.dll");
//获取I2C初始化函数指针地址
I2C_Funtion I2C_Init = (I2C_Funtion)GetProcAddress(hDLL,"VTIF_I2C_Init");
//获取I2C写数据函数指针地址
I2C_Funtion I2C_WriteData = (I2C_Funtion)GetProcAddress(hDLL,"VTIF_I2C_WriteData");
//获取I2C读数据函数指针地址
I2C_Funtion I2C_ReadData = (I2C_Funtion)GetProcAddress(hDLL,"VTIF_I2C_ReadData");
//获取I2C设备选择函数指针地址
I2C_Funtion I2C_SelectDevice = (I2C_Funtion)GetProcAddress(hDLL,"VTIF_I2C_SelectDevice");
//选择I2C适配器
printf("选择I2C适配器\n");
I2C_SelectDevice("0",(char*)outString);//选择I2C适配器
printf("%s\n\n",outString);//显示选择适配器操作后的字符串数据
<font color="#ff0000">//初始化I2C适配器
//数据格式为:“控制模式|设备地址|读写速度|子地址模式|子地址宽度|初始化通道”
printf("初始化I2C适配器\n");
I2C_Init("1|0xA0|100000|1|1|0",(char*)outString);//初始化I2C适配器
printf("%s\n\n",outString);//显示初始化后适配器返回的初始化结果字符串</font>
//向24C02存储器写数据,首字节为子地址,后面是写入的数据
printf("向24C02存储器写数据\n");
I2C_WriteData("0x00|0x00|0x01|0x02|0x03|0x04|0x05|0x06|0x07",(char*)outString);
printf("%s\n\n",outString);//显示数据写操作后的结果
//读取24C02存储器指定地址的数据
printf("正在读取数据\n");
I2C_ReadData("0x00|8",(char*)outString);//首字节为子地址,读取8字节数据
printf("%s\n\n",outString);//显示返回来的数据,数据格式为:“数据1|数据2|...|数据n”
FreeLibrary(hDLL);
system("pause");
return 0;
}
复制代码