wince 6.0 IIC 驱动 上层程序问题
我用UT6410开发板上的IIC接口读写DS2782芯片(此芯片是IIC接口),开发板厂商已经把流驱动写好打包进SDK,注册表中有"Mode"=dword:1 ; Mode: 0 = POLLING(轮询), 1 = INTERRUPT(中断) ,是不是说明我的IIC底层驱动是中断模式。
上层应用程序的主要代码如下
hIicContext = CreateFile(TEXT("IIC0:"),GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,0,0);
ReadFile(hIicContext,(LPVOID)iic_read_data,2 * sizeof(I2C_IO_DESC),&dwbytes,NULL);
WriteFile(hIicContext,(LPVOID)&iic_write_data,sizeof(I2C_IO_DESC),&dwbytes,NULL);
现在从示波器看SDA与SCL管脚无任何波形。
我不清楚中断模式和轮询模式在程序中有什么不同。
如果是中断模式,那么在硬件上SDA和SCL是不是都需要分别接一个中断信号(如INT11、INT12)?软件该怎么改动?
如果想改成轮询模式,是不是把注册表中的"Mode"=dword:1 ; 改为"Mode"=dword:0 ;就可以了。
现在IIC能读写什么模式都成。
[解决办法]
试试用 DeviceIoControl()
[解决办法]
LZ是不是看不见驱动的代码?照说CE应该可以看见驱动代码的。I2C应该是很容易解决的问题。
有几点需要先确认:
(1)应用层:
CreateFile readfile writefile 是否成功了。如果连CreateFile都没成功的话,下面肯定也失败 了。
(2)看看驱动代码,确定一下到底是readfile writefile 在读写I2C的寄存器,还是IOControl在读写寄存器。如果是IOControl在读写,在readfile writefile也没用。
(3)确定了这两点之后再用示波器去点波形,看是否正确。
(4)有其他问题可以联系我,kacyquan@live.cn