I2C和SPI辍学当BLE连接上DA14681开发局开始

了解更多常见问题解答教程

13个帖子/ 0新
最后一篇
JetsonIndustries
离线
最后一次露面:10个月前1年
加入:2016年12月6日08:36
I2C和SPI辍学当BLE连接上DA14681开发局开始

我们正在努力通过对话DA14681 MCU,LIS331HH加速度计和磁力MMC3416一个物联网设备上。

一切都连接得很好,我们从两个传感器获得读数(通过SPI和Magneto通过I2C加速器)。

我们启动BLE连接的那一刻,这一切都是错误的。

利用LIS加速度计,对于初始8秒的操作,加速度计似乎通过SPI提供正确的读数,然后仅输出所有3轴。使用UART调试器进行测试时,我们会看到一系列明显不正确的奇怪数据。当我们将其交换到12C接口时,在8-10秒后停止UART调试器,并没有给我们。

与磁力通过I2C出现一个非常类似的问题。

DA14681是一个合理的新成分已经有点噩梦,但我希望有人遇到同样的问题,并且我们已经错过了一些简单的东西。

任何建议将是非常方便!我已经附加了一些屏幕截图,所以你可以看到什么是要去。

关键词:
设备:
STS_Dialog
离线
最后一次露面:3年3个月前
加入:2017年6月6日09:26
请将截屏。

请将截屏。

JetsonIndustries
离线
最后一次露面:10个月前1年
加入:2016年12月6日08:36
https://drive.google.com/open.
STS_Dialog
离线
最后一次露面:3年3个月前
加入:2017年6月6日09:26
你好,

你好,

请压缩发送的文件。

谢谢,

斯塔夫罗斯

JetsonIndustries
离线
最后一次露面:10个月前1年
加入:2016年12月6日08:36
嘿Stavros图像附有

嘿Stavros图像附加在拉链中

依恋:
STS_Dialog
离线
最后一次露面:3年3个月前
加入:2017年6月6日09:26
你好,

你好,

我认为,问题的根源是越来越倒头就睡。默认情况下,我们的示例代码使用XTAL32K低功耗时钟和在系统睡觉之前,我们等待大约8秒的晶体稳定。之后,系统可以进入睡眠模式,这里是事情最终到噩梦的地方。首先,我们需要一些信息,更具体地说:

1.使用哪个版本的SDK和开发套件类型?
2.你使用内置在我们的样本代码的一个(例如ble_adv)的源代码?
3.什么是低功耗时钟(XTAL32K,RCX)的来源是什么?

现在一些技巧和步骤如下:

1.我们强烈建议您使用pm_mode_extended_sleep.作为睡眠模式。

2.您是否使用适配器才能访问外围模块?请注意,适配器不仅可以确保对外围总线的独家访问,而且CPM(电源管理单元)负责在强制系统睡觉之前处理有效的各种模块。因此,如果您使用低级驱动程序而不是适配器,则系统不知道例如存在。SPI / I2C活动和睡眠后,它最终会一团糟。

由于您能够读取值,我不认为该问题与外围总线的使用不正确。此外,BLE活动似乎损坏了传感器的读数,因为您能够在前8秒内获得一些值。请确认它,如果在遵守问题之前,使用常规BLE活动(广告)。SmartSnippets工具箱。

布罗尔,
sts_dialog。

JetsonIndustries
离线
最后一次露面:10个月前1年
加入:2016年12月6日08:36
我们正在通过信号通过

我们当传感器不工作通过蓝牙接收的信号。

外设通过适配器访问。

da1468x_da15xxx_sdk_1.0.10.1072是我们使用DA14681 Pro开发套件的SDK版本和硬件。

我们的构建是基于从SDK源代码 - 而不是定制编写的。

时钟设置与示例代码相同,它仅为32.768khz。RCX被禁用,但我们通过启用并没有更改测试。

是否有任何其他建议?

STS_Dialog
离线
最后一次露面:3年3个月前
加入:2017年6月6日09:26
你好,

你好,

大概什么是错的与您使用的适配器或任务的方式。这是示例代码,你从我们的SDK使用?也让我知道,如果在8秒之后你试图让与设备的任何连接,看看这个失败或只是系统是广告没有任何尝试连接到芯片。

一些可能有帮助的提示:

1.使用SPI / I2C功能时更好地使用DMA。他们具有更好的对应/功能,并照顾一些情况。当优先级任务较高时,在仍处于活动状态时中断外围总线的操作。

2.系统进入睡眠状态后,你如何读取传感器的值?你如何配置系统通知它的时间读书?你使用的是被称为在常规时间段任何RTOS计时器?一定要特别小心考虑是否使用任何延迟。当RTOS使用延迟任务实际进入挂起模式。如果是时间系统进入睡眠状态(而延迟)的CPM(电源管理单元)看到该任务被挂起,强制系统进入睡眠状态(没有任务已经完成了它的操作)

3.当使用任何睡眠模式UART外设必须用流量控制功能RTS / CTS被使用。请注意,只有UART2在DA14681芯片此功能。

布罗尔,

sts_dialog。

JetsonIndustries
离线
最后一次露面:10个月前1年
加入:2016年12月6日08:36
当我们删除PM时

当我们删除PM_Mode_extended_sleep时,所有似乎都在工作。它显然与睡眠呼叫有关,是否有另一个可以使用的设置?

STS_Dialog
离线
最后一次露面:3年3个月前
加入:2017年6月6日09:26
删除上述内容

删除上述宏(pm_mode_extended_sleep.)系统永远不会睡觉。有没有其他选择如果你想使用睡眠模式。至于说从第一次怀疑什么是错的与得到的睡眠后,你的配置。请检查并确认我的上述评论。否则,有没有别的可以做。一些更多的提示,可能有助于解决这一问题:

1.您可以在哪里配置各种功能的引脚(SPI / I2C / UART)?你用吗?periph_init()函数才能让后者在每个唤醒中调用?如果没有,则在醒来之后,CPM不会将引脚重新配置到之前的状态。(睡觉前的状态)

2.此外,如果设备睡觉后,请检查外围总线并检查是否存在与传感器的任何接口?(使用逻辑分析仪)。如果获得零和无关数据的值,我认为没有交互,并且您只是打印空变量。

布罗尔,

sts_dialog。

Jitendraprasad
离线
最后一次露面:1年11个月前
加入:2017-10-02 10:38
你好对话框,

你好对话框,

我跟着上述建议,但我仍然在8秒后面临I2C问题。

当我有调试I2C代码时,我发现下面的函数,其中程序陷入困境:
init_event(&i2c_signal);

我读磁强计(通过I2C接口)数据OS_TIMER触发事件每500毫秒。

请查找附加的DOC文件,用于磁力计I2C驱动程序代码。
随函附上调试屏幕截图。在8秒后的行号354这个截图调试停止。

谢谢

jitendra

依恋:
Jitendraprasad
离线
最后一次露面:1年11个月前
加入:2017-10-02 10:38
你好对话框,

你好对话框,

我尝试在设备处于睡眠模式之前读取“i2c_enable_status_reg”状态。在睡眠模式下“i2c_enable_status_reg”之前
状态为“1”,睡眠模式后,“i2c_enable_status_reg”statu为“0”。

然后,我将设法通过使用启用I2C寄存器 “HW_I2C_REG_SETF(ID,I2C_ENABLE,CTRL_ENABLE,1);”称呼。但还是I2C状态为“0”。

此外,我尝试了通过使用“HW_GPIO_CONFIGURE”在休眠模式下使用“HW_GPIO_CONFIGURE”的GPIO硬件配置。

任何帮助将不胜感激。

问候,

jitendra

mt_dialog.
离线
最后一次露面:2周1日前
职员
加入:2015-06-08 11:34
嗨jitendraprasad,

嗨jitendraprasad,

我没有看到卡住在init_event的初始化()的所有函数的作用是创建信号的设备的任何明显的原因,也是我不能够从已连接的数据有效的结论达成。我想你已经为例从peripherals_demo的I2C functionallity并已转移是functionallity到BLE启用演示,显然transfering代码时出现了错误。

有一些论坛帖子这笔交易与I2C交易请一些情况下,下面的职位,帮助的:

HTTPS://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl ...

HTTPS://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bl ...

谢谢mt_dialog.