⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 i2ctest.c

📁 WinCE5.0BSP for Renesas SH7770
💻 C
字号:
#include <windows.h>

#include "ioctl_its_ds7.h"



int WINAPI
WinMain (
	HINSTANCE hInstance,
	HINSTANCE hPrevInstance,
    LPWSTR lpCmdLine,
	int nCmdShow)
{
HANDLE	hCom, hDriver;
BYTE	Buffer[128];
DWORD	dwSize;
DWORD	dwData, dwRet;

	hCom = CreateFile(
			TEXT("I2C1:"),
			GENERIC_READ|GENERIC_WRITE,
			0,
			NULL,
			OPEN_EXISTING,
			FILE_ATTRIBUTE_NORMAL,
			NULL);
	if ( hCom == INVALID_HANDLE_VALUE ){
///--->
		if ( GetLastError() == ERROR_DEV_NOT_EXIST ){
			//register I2C device driver
			hDriver = RegisterDevice(TEXT("I2C"), 1, TEXT("I2C.DLL"), 0);
			if ( !hDriver ){
				RETAILMSG(1, (TEXT("Failed to register I2C device driver.\r\n")));
			}
			hCom = CreateFile(TEXT("I2C1:"),
					GENERIC_READ|GENERIC_WRITE,
					0, NULL, OPEN_EXISTING,
					FILE_ATTRIBUTE_NORMAL, NULL);
		}
// <---
		if ( hCom == INVALID_HANDLE_VALUE ){
			RETAILMSG(1, (TEXT("Failed to get device handle.\r\n")));
 			return 0;
		}
	}

	dwData = I2C_MASTER_MODE;
	DeviceIoControl(hCom, IOCTL_I2C_SET_MODE,
		(PVOID)&dwData, sizeof(DWORD), NULL, 0, &dwRet, NULL);

	dwData  = 3<<2;	// SCGD
	dwData |= 2;	// CDF
//	dwData  = 2<<2;	// SCGD
//	dwData |= 1;	// CDF
//	dwData  = 5<<2;	// SCGD
//	dwData |= 0;	// CDF
//	dwData  = 8<<2;	// SCGD
//	dwData |= 2;	// CDF
	DeviceIoControl(hCom, IOCTL_I2C_SET_BAUDRATE,
		(PVOID)&dwData, sizeof(DWORD), NULL, 0, &dwRet, NULL);

	dwData = I2C_DOUBLE_STAGE;
//	dwData = I2C_SINGLE_STAGE;
	DeviceIoControl(hCom, IOCTL_I2C_SET_BUFFER_MODE,
		(PVOID)&dwData, sizeof(DWORD), NULL, 0, &dwRet, NULL);

	Buffer[0] = 0x48;
	Buffer[1] = 0x01;
	Buffer[2] = 0x08;
	dwSize = 3;
	WriteFile(hCom, (LPVOID)Buffer, dwSize, &dwSize, NULL);
	if ( !dwSize ){
		DWORD	errcode;
		errcode = GetLastError();
		RETAILMSG(1, (TEXT("I2C Master Transmit failed : [%x]\r\n"), errcode));
	}

	Buffer[0] = 0x48;
	Buffer[1] = 0x00;
	dwSize = 2;
	WriteFile(hCom, (LPVOID)Buffer, dwSize, &dwSize, NULL);
	if ( !dwSize ){
		DWORD	errcode;
		errcode = GetLastError();
		RETAILMSG(1, (TEXT("I2C Master Transmit failed : [%x]\r\n"), errcode));
	}
	dwSize = 1;
	Buffer[0] = 0x49;
	ReadFile(hCom, (LPVOID)Buffer, dwSize, &dwSize, NULL);
	if ( !dwSize ){
		DWORD	errcode;
		errcode = GetLastError();
		RETAILMSG(1, (TEXT("I2C Master Transmit failed : [%x]\r\n"), errcode));
	}else{
		RETAILMSG(1, (TEXT("Data:%x\r\n"), Buffer[0]));
	}

	Buffer[0] = 0x48;
	Buffer[1] = 0x01;
	dwSize = 2;
	WriteFile(hCom, (LPVOID)Buffer, dwSize, &dwSize, NULL);
	if ( !dwSize ){
		DWORD	errcode;
		errcode = GetLastError();
		RETAILMSG(1, (TEXT("I2C Master Transmit failed : [%x]\r\n"), errcode));
	}
	dwSize = 1;
	Buffer[0] = 0x49;
	ReadFile(hCom, (LPVOID)Buffer, dwSize, &dwSize, NULL);
	if ( !dwSize ){
		DWORD	errcode;
		errcode = GetLastError();
		RETAILMSG(1, (TEXT("I2C Master Transmit failed : [%x]\r\n"), errcode));
	}else{
		RETAILMSG(1, (TEXT("Data:%x\r\n"), Buffer[0]));
	}

	CloseHandle( hCom );

#if 1
//--->
	DeregisterDevice(hDriver);
//<---
#endif

	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -