IIC总线数据问题
上次发贴有点乱,这里总结一下,我的IIC设备是MC44S803,这是一个硅调谐器。
IIC协议我也是知道的,写的过程是:
设备地址+数据+数据地址
它的写地址是11000000+数据20位+数据地址位4位
它的读地址是11000001+数据20位+数据地址位4位
要读数据需要设置数据寄存器地址,具体的就别写了,上代码
unsigned char i2c_write_buff[3]={0x00,0x00,0x0b};//最后4位为数据寄存器地址(b),最后8-4位为设置下次要读的地址(0)
unsigned char i2c_read_buff[3];
IIC_IO_DESC IIC_Write,IIC_Read;
IIC_Write.SlaveAddress=0xc0;//1100 0000
IIC_Write.Data=&i2c_write_buff[0];
IIC_Write.Count=3;
IIC_Read.SlaveAddress=0xc1;//1100 0001
IIC_Read.Data=&i2c_read_buff[0];
IIC_Read.Count=3;
DWORD bytes;
bRet=DeviceIoControl(m_hI2C,IOCTL_IIC_READ,&IIC_Write,sizeof(IIC_Write),&IIC_Read,sizeof(IIC_Read),&bytes,NULL);
大家帮忙看看有错不?
我已经设置MODE=2了,是MASTER_RECEIVE
但是用示波器看的话,写地址+3个BYTE的数据没问题,读地址也没问题,但是数据就出问题了
DNW显示出错
Exception 'Data Abort' (4): Thread-Id=01450006(pth=8f94ec48), Proc-Id=00400002(pprc=86809308) 'NK.EXE', VM-active=05e70032(pprc=874967a4) 'edm.exe'
PC=c0c828ac(s3c6410_iic.dll+0x000028ac) RA=c0c827c4(s3c6410_iic.dll+0x000027c4) SP=d2c8fe64, BVA=000efe00