无代码I2C在DA14531 TINY模块上不能正常工作

了解更多常见问题教程

11个员额/ 0个新员额
最后发表
谢尔盖Bezroukov
离线
最后看到:4个月4天前
加入:2020-06-25 00:28
无代码I2C在DA14531 TINY模块上不能正常工作

你好,

我使用DA14531 TINY模块与codelless SDK 6.380.10.4和工厂编译的codeless_531_standalone_set_two。十六进制图像与TI的HDC1000传感器。当我读取或写入传感器寄存器时,会出现问题。

通过读取寄存器,命令如下(参见附加的控制台会话):

在+ IOCFG = 9, 7

8 + IOCFG = 8

在+ I2CCFG = 7100, 16岁

在+ I2CREAD = 0 x40,以0 xfe

这里0x40是传感器I2C地址,0xFE是传感器寄存器地址。这样应该读取2字节传感器的制造商ID。然而,只读取第一个ID字节,通过读取第二个字节,模块只向传感器输出8个SCL脉冲(而不是9个)并挂起。见附呈的逻辑分析仪图像。上拉I2C电阻是4.7K,所以它们不是问题。大约3分钟后,模块自身复位,并在终端窗口打印+READY。I2C引脚之前的所有配置都被重置并忘记。

通过写入传感器配置寄存器,模块组成了正确数量的SCL脉冲,但不组成停止条件在通信的结束,并留下低SCL线。写是由以下命令完成的,见附在逻辑分析仪图像:

在+ I2CWRITE = 0 x40 2 0

其中2是传感器寄存器地址,0是要写入的值。

我还尝试了其他传感器和1字节和2字节寄存器的组合。没有什么能像预期的那样工作。

问:这是一个已知的模块问题,应该等待新的固件发布或有办法修复它?

附件:
PM_Dialog
离线
最后看到:2天9小时前
工作人员
加入:2018-02-08 11:03
Sergei Bezroukov嗨

Sergei Bezroukov嗨

感谢您的后续问题和反馈。让我查一下,然后给你答复。

谢谢,PM_Dialog

PM_Dialog
离线
最后看到:2天9小时前
工作人员
加入:2018-02-08 11:03
Sergei Bezroukov嗨

Sergei Bezroukov嗨

很抱歉耽搁了。所以,如果我现在理解了,这个可以在大约3分钟后复制,对吗?请问这个模块是与对端设备连接,还是只是发布?

在模块自身复位之前(3min之前),您能否澄清I2C命令是否正常工作?

谢谢,PM_Dialog

谢尔盖Bezroukov
离线
最后看到:4个月4天前
加入:2020-06-25 00:28
仅对所有I2C命令

在所有I2C命令中,只有I2CCFG能够正常工作。我还没有成功使任何其他I2C命令工作。当我尝试使用I2C命令时,模块只是发布,没有连接到任何客户端。通过发送READ,模块只产生8个时钟,通过读取最后一个字节和挂起(甚至在终端上不说OK),并在3分钟后重置自己。通过发送WRITE,模块响应OK,不重置自己。然而,在这种情况下,它不组成停止条件,并保持I2C总线繁忙通过接地时钟引脚。

PM_Dialog
离线
最后看到:2天9小时前
工作人员
加入:2018-02-08 11:03
Sergei Bezroukov嗨

Sergei Bezroukov嗨

非常感谢你的额外投入。我会将这种行为升级到团队内部,我会尽快让你知道。

能否尝试使用SET_TWO项目而不是odeless_531_standalone_set_two。十六进制形象吗?

所以,从我们的网站下载无代码项目-DA14585-DA14531无代码AT命令-打开Keil项目projects\target_apps\codeless\codeless_5xx\Keil_5。

然后请尝试启用Development Debug—#define CFG_DEVELOPMENT_DEBUG in da1458x_config_basic.h—重新构建项目并在调试模式下运行它。

在发送了特定的I2C之后,项目是正常运行,还是陷入了断言中?”

谢谢,PM_Dialog

谢尔盖Bezroukov
离线
最后看到:4个月4天前
加入:2020-06-25 00:28
我重新编译了SET TWO

我按照您的建议从source on Keil重新编译了SET TWO project。行为没有任何改变。通过发送READ命令,代码被卡在文件user_i2c.c的第89行(等待由宏WAIT_UNTIL_NO_MASTER_ACTIVITY()提供的while循环)。没有陷入一个断言。

PM_Dialog
离线
最后看到:2天9小时前
工作人员
加入:2018-02-08 11:03
他谢尔盖,

他谢尔盖,

我已经在团队内部升级了,所以我一有消息就会联系你。

谢谢,PM_Dialog

PM_Dialog
离线
最后看到:2天9小时前
工作人员
加入:2018-02-08 11:03
嗨谢尔盖,

嗨谢尔盖,

再次感谢您的反馈。请找到附件中的diff文件,并在projects/target_apps/ codelless /codeless_5xx/src/user_i2c.c文件中执行建议的修改。

您应该在将最后一个命令发送到从服务器时设置I2C_STOP位,如diff文件所示。

需要修改的相关函数有:user_i2c_read_byte(), user_i2c_read_word16(), user_i2c_write_byte(), user_i2c_write_16(), user_i2c_scan()

在这些更改之后,您是否能够成功地执行I2C AT命令?

谢谢,PM_Dialog

附件:
PM_Dialog
离线
最后看到:2天9小时前
工作人员
加入:2018-02-08 11:03
嗨谢尔盖,

嗨谢尔盖,

能否告知我们建议的修改是否解决了I2C问题?

谢谢,PM_Dialog

谢尔盖Bezroukov
离线
最后看到:4个月4天前
加入:2020-06-25 00:28
亲爱的团队对话框,

亲爱的团队对话框,

对不起,我在其他事情上有点糊涂了……

不管怎样,我只是按照您的建议修改了代码,重新编译了图像。

所有I2C读/写命令现在都工作正常。

非常感谢您的支持!

PM_Dialog
离线
最后看到:2天9小时前
工作人员
加入:2018-02-08 11:03
嗨谢尔盖,

嗨谢尔盖,

谢谢你让我们知道。如果您有任何其他问题,请在论坛发帖。欢迎您的反馈!

谢谢,PM_Dialog