你好呀,
我用DA14531 TINY模块无代码SDK 6.380.10.4以及与TI HDC1000传感器沿着工厂编译codeless_531_standalone_set_two.hex图像。当我读或写至寄存器传感器会出现问题。
通过读取寄存器时,命令如下(见附图控制台会话):
AT + IOCFG = 9,7
AT + IOCFG = 8,8
AT + I2CCFG = 7,100,16
AT + I2CREAD = 0x40,0xFE
这里0x40的是传感器I2C地址,0xFE的是传感器寄存器地址。这样,2个字节的传感器的制造商ID应该读。然而,只有第一ID字节被读出并通过读出第2个字节的模块geherates仅有8 SCL脉冲到传感器(而不是9)和挂起。见所附的逻辑分析仪的图像。上拉电阻I2C 4.7K是,所以他们不是一个问题。约3分钟后,将模块复位本身并打印+ READY在终端窗口。的I2C引脚所有以前的配置被重置遗忘。
通过写senswor配置寄存器,该模块构成SCL脉冲的权数,但在通信和叶SCL线低的端部不构成STOP条件。写入是由以下命令完成,请参阅逻辑分析仪图像附:
AT + I2CWRITE = 0x40,2,0
其中图2是传感器的寄存器地址,和0是要写入的值。
我还尝试了其他传感器和1-和2字节寄存器的组合。没有什么可以按预期工作。
问:这是一个已知的问题与模块和一个应该等待新的固件版本或者是有办法解决它?
关键词:
嗨谢尔盖Bezroukov,
感谢您的跟进问题和您的反馈。让我检查一下,我会回复你。
谢谢,PM_DIALOG.
嗨谢尔盖Bezroukov,
为延迟道歉。所以,如果我明白目前,这可以在〜3分钟后复制,是正确的吗?请问模块是否与对等设备连接,或者只是广告?
之前模块自身重置(3分钟前),可以请你澄清,如果I2C命令是否工作正常?
谢谢,PM_DIALOG.
出所有的I2C命令的唯一I2CCFG正常工作。我还没有成功地使其他任何I2C命令工作。当我与I2C命令实验中,模块只是通告和未连接到任何客户机。通过发送读取模块由3分钟后读取的最后一个字节和挂起(甚至不说对终端OK)和重置本身只产生8个时钟。通过发送写模块以OK回应并不会自行复位。然而,在这种情况下,它不构成停止条件,并保持I2C总线忙于接地时钟引脚。
嗨谢尔盖Bezroukov,
非常感谢您的额外输入。我会将这种行为在内部升级到团队,我会尽快通知您。
能否请您尝试使用SET_TWO项目,而不是使用odeless_531_standalone_set_two.hex形象?
所以,从我们的网站下载的无代码项目 -DA14585-DA14531无附带条件- 并打开Keil工程项目\ target_apps \无码\ codeless_5xx \ Keil_5。
然后,请尽量使发展调试 - 的#define CFG_DEVELOPMENT_DEBUG在da1458x_config_basic.h - 重建项目,并在调试模式下运行它。
发送特定的I2C后,该项目正常运行,或将其卡住为断言?'
谢谢,PM_DIALOG.
根据您的建议,我重新编译了从Keil的来源进行了修复的两个项目。行为中没有任何改变。通过发送读取命令,代码在文件user_i2c.c中粘贴在第89行(等待宏等待_until_no_master_actity()提供的循环)。没有粘在断言。
他谢尔盖,
我已经在内部升级到队,所以我会尽快回复您,因为我有任何消息。
谢谢,PM_DIALOG.
嗨谢尔盖,
再次感谢您的反馈。附上一个差异文件,并在项目/ target_apps /无绳/ codeless_5xx / src目录/ user_i2c.c文件执行建议的更改。
你应该设置I2C_STOP位时的最后一个命令发送到从设备,如图所示的差异文件。
相关功能应该被修改为:user_i2c_read_byte(),user_i2c_read_word16(),user_i2c_write_byte(),user_i2c_write_16(),user_i2c_scan()
在这些更改之后,您是否能够成功执行I2C AT命令?
谢谢,PM_DIALOG.
嗨谢尔盖,
您能否知道建议的修改,请告诉我们解决I2C问题?
谢谢,PM_DIALOG.
亲爱的对话框队
抱歉,我bisy其他的事情...
反正,我只是根据你的建议作出代码修改并重新编译的图像。
所有I2C读/写命令现在正常工作。
非常感谢您的支持!
嗨谢尔盖,
谢谢你让我们知道。如果您有任何其他问题,请提出新的论坛帖子。您的反馈将非常欢迎!
谢谢,PM_DIALOG.