关于CH341T的i2c问题

我要用的片子是ADXL345这个片子 中文手册:(http://www.analog.com/zh/mems-sensors/inertial-sensors/adxl345/products/product.html)

它的I2C时序有点特别 是v2.0 2000的那个标准的 但是我不知道应该用哪个API读取 没有341T的驱动 我装的341A的并口驱动

readwrite 或者 i2cstream都不行 程序直接就死了,在示波器下看 SCK SDA都没有数据就是常高电平...

具体那个芯片要求读寄存器的时序 是这样的: start slave+write reg start slave+read xxxxx end 我用i2c 配3个write 分别是 0xA6 0x32 0xA7(其中A6 A7分别是设备的写与读 32是要看的寄存器地址) 然后读进去一个,程序就死了(没有响应)....

补充一下 电路是没问题的 因为可以直接读产品ID是对的(读产品ID的方法和上面的不一样)用i2cread就行了


我的代码如下

mBuffer[ 0 ] = mCH341A_CMD_I2C_STREAM; // 命令码 mBuffer[ 1 ] = mCH341A_CMD_I2C_STM_STA; // 产生起始位 mBuffer[ 2 ] = (UCHAR)(mCH341A_CMD_I2C_STM_OUT | 0x02);// mBuffer[ 3 ] =0xA6; mBuffer[ 4 ] =0x32; mBuffer[ 5 ] =mCH341A_CMD_I2C_STM_STO; mBuffer[ 6 ] =mCH341A_CMD_I2C_STM_STA; mBuffer[ 7 ] =mCH341A_CMD_I2C_STM_OUT; mBuffer[ 8 ] =0xA7; mBuffer[ 9 ]=(UCHAR)( mCH341A_CMD_I2C_STM_IN | 0x02 ); mBuffer[ 10]= mCH341A_CMD_I2C_STM_STO; mLength = 11; mInLen = 0; CH341WriteRead( 0, mLength, mBuffer, mCH341A_CMD_I2C_STM_MAX, 2, &mInLen, mBuffer ) ;

20114121284513.jpg


只有登录才能回复,可以选择微信账号登录