DA14531 TINY模块上无码I2C无法正常工作

⚠️
大家好. .谢谢你来参加论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,并包含在Dialog主网站中。所有的帖子和账户都已迁移。我们现在只接受新论坛的流量-请张贴任何新的线程//www.xmece.com/support.我们将在未来几天修复漏洞/优化搜索和标签。
11个岗位/ 0个新岗位
最后发表
谢尔盖Bezroukov
离线
最后看到:1年4个月前
加入:2020-06-25 00:28
DA14531 TINY模块上无码I2C无法正常工作

你好,

我使用DA14531 TINY模块与Codeless 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脉冲,但在通信结束时不构成STOP条件,并使SCL线处于低位。写入是由以下命令完成的,请参阅所附的逻辑分析器图像:

在+ I2CWRITE = 0 x40 2 0

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

我还尝试了其他传感器和1字节和2字节寄存器的组合。一切都不像预期的那样。

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

附件:
PM_Dialog
离线
最后看到:2个月6天前
工作人员
加入:2018-02-08 11:03
你好,谢尔盖·贝兹鲁科夫,

你好,谢尔盖·贝兹鲁科夫,

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

谢谢,PM_Dialog

PM_Dialog
离线
最后看到:2个月6天前
工作人员
加入:2018-02-08 11:03
你好,谢尔盖·贝兹鲁科夫,

你好,谢尔盖·贝兹鲁科夫,

很抱歉耽搁了。所以,如果我目前的理解,这可以在~3分钟后复制,对吗?请问这个模块是连接了对端设备,还是只是在做广告?

在模块复位之前(3min之前),请问I2C命令是否正常?

谢谢,PM_Dialog

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

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

PM_Dialog
离线
最后看到:2个月6天前
工作人员
加入:2018-02-08 11:03
你好,谢尔盖·贝兹鲁科夫,

你好,谢尔盖·贝兹鲁科夫,

非常感谢您的额外投入。我将把这种行为上报给团队内部,我会尽快让你知道。

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

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

然后,请尝试启用开发调试- #define CFG_DEVELOPMENT_DEBUG in da1458x_config_basic.h -重新构建项目并在调试模式下运行。

在发送特定的I2C之后,项目是否正常运行,还是被卡在断言中?”

谢谢,PM_Dialog

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

我根据你的建议在Keil上从源代码重新编译了SET TWO项目。行为没有任何改变。通过发送READ命令,代码被卡在文件user_i2c.c的第89行(wait while-loop由宏WAIT_UNTIL_NO_MASTER_ACTIVITY()提供)。没有陷入断言。

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

他谢尔盖,

我已经在团队内部进行了升级,所以我一有消息就会马上通知你。

谢谢,PM_Dialog

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

嗨谢尔盖,

再次感谢您的反馈。请找到附件中的diff文件,并在projects/target_apps/codeless/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个月6天前
工作人员
加入:2018-02-08 11:03
嗨谢尔盖,

嗨谢尔盖,

请问建议的修改是否解决了I2C的问题?

谢谢,PM_Dialog

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

亲爱的对话团队:

对不起,我对其他事情太过分了……

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

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

非常感谢您的支持!

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

嗨谢尔盖,

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

谢谢,PM_Dialog