DA14680型的I2C只发送设备地址而没有继续发送数据问题

8个职位/0个新职位
最后一篇文章
gwjgwgshxd公司
离线
最后一次见到:3年3周前
已加入:2016-12-14 10:52
DA14680型的I2C只发送设备地址而没有继续发送数据问题

技术支持你好!
我现在遇到一个这样的问题:我在自己画了一块板子,我按照手册上的步骤对I2C总线进行了配置,但是每次发送数据的时候都只发送了地址后面的数据从来没有被发送到总线上。另外对总线时钟进行100千赫和400千赫的配置都能生效。请问是什么原因导致的数据不能被发送?谢谢!

设备:
索引219
离线
最后一次见到:1年5个月前
已加入:2016-05-23 07:00
你可以把地址,寄存器,数据一起发送

你可以把地址,寄存器,数据一起发送,不要分开什么先发地址再发数据。直接把所有需要发送的内容打包一起

gwjgwgshxd公司
离线
最后一次见到:3年3周前
已加入:2016-12-14 10:52
我是一起发送的啊。

我是一起发送的啊。
void用户应用程序(void)
{
静态无符号字符TX[5]={0xAA,0xAA,0xAA,0xAA,0xAA};
静态无符号字符RX[5];
i2c\ U设备开发=ad\ U i2c\ U打开(BH1750);
端口_init();
demo_i2c_init();
设置呼吸(0,255,255,255);
而(1)
{
dev=adèi2cèU open(BH1750);
ad\u i2c\u写入(dev,TX,3);
ADI2C关闭(dev);
操作系统延迟(100);
}
}
我新建了这个任务。但是发送出来的数据并不是0XAA型而是只发送了一个地址0xD0。
void demo\u i2c\u init(无效)
{
adØi2cØinit();
I2C总线初始化(I2C1);
I2C设备初始化(BH1750);
}
I2C\从设备\ DMA(I2C1,BH1750,0xD0,HW\ I2C\寻址\ 7B,HW\ I2C\速度\标准,2)/*GWJ公司*/
这个是我初始化程序。而且我用逻辑分析仪分析出来的数据却是0XA0和0XD0型正好错开一个一点位。

附件:
甘平
离线
最后一次见到:20小时37分钟前
已加入:2014-05-20 07:38
个人意见,这个I2C都没有确认需要确认I2C地址了

个人意见,这个I2C都没有确认需要确认I2C地址了

gwjgwgshxd公司
离线
最后一次见到:3年3周前
已加入:2016-12-14 10:52
非常感谢!

非常感谢!
确实是地址有问题,现在可以读写了。但是还是有个问题想请教:我的从设备地址的0xD0,我之前设置的也是0xD0。发送出去的却是0xA0现在我将设备地址设置为0xE8,发送出去的就正好是0xD0型了,所以现在可以成功发送数据。从上面的情况看是I2C正好错开了一个一点为,不知道是什么原因造成的?烦请技术支持帮忙分析下。谢谢!

用户年
离线
最后一次见到:3年4个月前
已加入:2016-11-08 08:28
从机设备地址是七比特位吧

从机设备地址是七比特位吧,末尾再加上读写位就构成了第一个要发送的字节

gwjgwgshxd公司
离线
最后一次见到:3年3周前
已加入:2016-12-14 10:52
是的,地址没有整对。现在好了。

是的,地址没有整对。现在好了。

gwjgwgshxd公司
离线
最后一次见到:3年3周前
已加入:2016-12-14 10:52
我将数据手册上给的标准时序图与我自己采集到的实际时序图贴出

我将数据手册上给的标准时序图与我自己采集到的实际时序图贴出来,希望问题能得到解决。谢谢!