在读iic时经常会报如下错误
Exception 'Data Abort' (4): Thread-Id=0909001a(pth=8c61a834), Proc-Id=00400002(pprc=824f9308) 'NK.EXE', VM-active=0567014e(pprc=8ccaaedc) 'edm.exe'
PC=c0bc75a0(i2c.dll+0x000075a0) RA=c0bc7370(i2c.dll+0x00007370) SP=d4fefe48, BVA=0002fc77
I2CBusDriver: Exception caught ExceptionCode:0xC0000005, flags:0x00000000, Code Address 0xC0BC75A0
Exception: EXCEPTION_ACCESS_VIOLATION
Write Access Exceptioned at VAddress : 0x0002FC77
[31mEXCEPTION IS INVOKED(HW 2 Channel)
[0m[31mFifo Index : 4
[0m[31mbRequestComplete : 0
[0m[31mCurrnet Tx Count : 0
[0m[31mCurrnet Rx Count : 3
[0m[31mCurrent Service Obj : 0xD53B1C40
[0m[31mTx Data Addr & size : 0x0 0
[0m[31mRx Data Addr & size : 0x2FC74 14
[0m
[I2C:I] IICCON : 0xFB 0xEB
[I2C:I] IICSTAT : 0xB0 0xB0
[I2C:I] IICLC : 0x4 0x0
[I2C:I] IICDS : 0x68 0xA1
求大虾指点迷津
读的函数如下:
BYTE read_buffer[14]={0};
BYTE offset=0;
I2C_READ_DESC i2creaddesc;
//step1:set offset
i2creaddesc.IN_bStop=1;
i2creaddesc.IN_dwData=1;
i2creaddesc.IO_pbtData=&offset;
DeviceIoControl(hfile,IOCTL_I2C_GENERAL_WRITE,&i2creaddesc,sizeof(i2creaddesc),NULL,0,NULL,0);
//step2:read data
i2creaddesc.IN_bStop=1;
i2creaddesc.IN_dwData=14;
i2creaddesc.IO_pbtData=read_buffer;
DeviceIoControl(hfile,IOCTL_I2C_GENERAL_READ,&i2creaddesc,sizeof(i2creaddesc),NULL,0,NULL,0);