IIC读写EEPROM问题
IIC读写不成功!!!
Wince 5.0+IIC驱动读写AT24c08
驱动是用开发板自带的IIC驱动(有drv.c i2c.c drv.h三个代码文件)
在EVC下部分的应用代码如下:
typedef struct _I2C_IO_DESC {
DWORD SlaveAddr; // Target Slave Address
UCHAR WordAddr; // Starting Slave Word Address
PUCHAR Data; // pBuffer
DWORD Count; // nBytes to read/write
} I2C_IO_DESC, *PI2C_IO_DESC;
#define IOCTL_I2C_READ 1
#define IOCTL_I2C_WRITE 2
void CAsDlg::OnButton1()
{
// TODO: Add your control notification handler code here
hFile=CreateFile(_T("I2C0:"),GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0);
if(hFile==INVALID_HANDLE_VALUE)
{
MessageBox(_T("IIC驱动打开失败!"));
return;
}
else
MessageBox(_T("IIC驱动打开成功!"));
}
void CAsDlg::OnWrite()
{
// TODO: Add your control notification handler code here
DWORD RetBytes;
BYTE pBuffin[2]={0};
I2C_IO_DESC inputBuffer;
inputBuffer.SlaveAddr=I2C_ADDR;
inputBuffer.WordAddr=0;
inputBuffer.Data=pBuffin;
inputBuffer.Count=1;
if(hFile==INVALID_HANDLE_VALUE)
{
MessageBox(_T("IIC驱动未打开!"));
return;
}
BOOL ret=::DeviceIoControl(hFile,IOCTL_I2C_WRITE,&inputBuffer,sizeof(I2C_IO_DESC),NULL,0,&RetBytes,NULL);
//Sleep(1);
if(ret!=TRUE)
{
MessageBox(_T("写AT24C08失败!!!"));
return;
}
else
MessageBox(_T("写AT24C08成功!"));
}
void CAsDlg::OnRead()
{
// TODO: Add your control notification handler code here
BYTE pBuffout[1];
DWORD actlen;
CString strTmp;
I2C_IO_DESC outputBuffer;
outputBuffer.SlaveAddr=I2C_ADDR|0x01;
outputBuffer.WordAddr=0;
outputBuffer.Data=pBuffout;
outputBuffer.Count=2;
BOOL ret=::DeviceIoControl(hFile,IOCTL_I2C_READ,&outputBuffer,sizeof(I2C_IO_DESC),&pBuffout,2,&actlen,NULL);
//Sleep(1);
if(ret!=TRUE)
{
MessageBox(_T("读AT24C08失败!"));
return;
}
else
MessageBox(_T("读AT24C08成功!"));
strTmp.Format(_T("%x"),pBuffout);
CEdit *pDispEdit=(CEdit *)GetDlgItem(IDC_READ_DISP);
pDispEdit->SetWindowText(strTmp);
UpdateData(FALSE);
}
读写都不成功,恳请做过的高人请指点一下,是那出了问题?