关于CH347F I2C API CH347StreamI2C使用问题---已解决

应用手册中关于347 I2C读写的API CH347StreamI2C描述如下:

CH347StreamI2C( iIndex,iWriteLength,iWriteBuffer,iReadLength,oReadBuffer)

有2个疑问请教下:

1)CH347StreamI2C函数如何区分本次操作是写数据还是读数据的?是根据iWriteBuffer中首字节bit0的读写标志位,还是iReadLength 的长度值,比如填写0的时候表示只写,大于0表示读?

2)我的理解iWriteBuffer 中存放需要发送的数据,首字节为7bit设备地址+1bit读写标志,第二字节为寄存器地址,如果是写操作第3字节开始为写的数据。我将iWriteBuffer[0]分别设置为0x2和0x3代表对0x1地址的设备进行写和读的操作,但示波器中看到bit 0的读写标志位无论给什么数一直为高电平不变,前7bit会随给不同的数而变化,示波器中读到的值可以与iWriteBuffer[0]高7bit的值对上。如何才能设置347F I2C发送数据的读写标志位呢?


我已自己搞定了。有2个问题1)i2c协议在读的时候并不是直接发送读而是会先发送写,然后再发送读也就是设备地址会被发送两次。


2)的我将写buff长度设为1了。发现设为写长度为1时首字节的读写标志一直是1(读).长度>1后首字节标志位会变为0。读写操作正常了


您好,读写标志位根据读写长度是否存在来自动添加,若实现单独读则写长度传入0,写buffer为NULL即可,单独写亦然。


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