亲爱的对话框支持,
我们正在使用英业达的ISM14585模块。我们想要将MSK固件移植到这个模块,使用BMI160(稍后添加BMM150)。在MultiSensor DK上,我已经成功地用BMI160替换了acc/陀螺仪,并让它运行。
现在我在移植固件时遇到了一些问题。
观察:
(1)我不得不undef use_spi_flash_config,否则我有一个硬故障(等待spi读取闪光灯)。我不知道问题可能是什么。ISM14585的内部闪存是Gigadevice GD25D系列。
我已经禁用了env的大多数例程。代码里的传感器和磁力仪。当我启动固件,并连接物联网应用程序时,UART显示如下:
======物联网+启动====信息:传感器初始化信息:传感器暂停信息:高级启动,值:160信息:物联网+连接信息:传感器初始化信息:传感器暂停信息:DWS cmd:21信息:DWS cmd:22信息:DWS cmd:11信息:DWS cmd:1信息:传感器启动信息:DWS cmd:17信息:DWS cmd:13信息:DWS cmd:20信息:DWS cmd:26
在这之后,什么也没有发生。应用程序不显示任何传感器数据。
调查结果:
(A)我测量到BMI160中断持续高,似乎DRDY中断不工作。
除此之外,我看到CS, CLK, MISO, MOSI没有任何异常。
(B)在UM-B-101附录A中,我发现MultiSensor DK实际上使用了一个二级引导加载程序,它负责一些配置步骤;但在我看来,它对BMI160没有任何重要的作用(然而它对原始acc/陀螺仪做了一些配置)。
在ISM14585中,OTP使用了一个辅助引导加载程序,因为内部flash CS映射到P0_7而不是P0_3(因此如果没有这个,它将无法在dev模式下引导)。
我的问题:
(1) 我看不到BMI160的中断变低的原因是什么?
(2)是否需要特殊的辅助引导程序?我可以通过只刷新产生的十六进制文件到闪存端口固件吗?
非常感谢你的帮助。
BR约翰内斯
设备:
嗨,约翰,
请让我知道哪些gpio连接到BMI160,以便我可以运行它在我的一边。
我不太喜欢使用传感器物联网标签固件作为您的应用程序的起点。您将会留下许多不完全支持的代码片段,这些代码最终会对您造成伤害。一个更好的方法是使用empty_peripheral_template项目,然后慢慢地将代码块移动到该项目中。
/ MHv
你好,MHv,
广告1:
GPIO映射是琐碎的,SPI总线与flash共享的标准端口CLK/MOSI/MISO, CS (p_3)和DRDY/INT (P0_1)我已经正确配置。初始化应该与MultiSensor DK一起工作OOB,因为DK能够使用BMI160(我们已经验证过了)。
广告2:
制造商Inventek已将辅助引导加载程序刻录到OTP。我会和他们讨论为什么他们没有按照你的建议去做。也许这是个误会。
我知道如何配置SmartSnippets,毕竟我有固件运行和广告(从flash引导)。
在UM-B-101中,说明MS DK辅助引导加载程序[…]
这就是为什么我问这个特定的引导加载程序的必要性。通过查看代码,我的印象是引导加载程序确实为ICM42605配置了一些东西,但没有为可选填充的BMI160配置。
对于我们以前的原型,即基于Murata ZY的原型,我们已经移植了“旧”物联网传感器SDK,它工作得很好。当然,从头开始是一个更清洁的解决方案,但由于人力有限,剥离现有项目是更快的方法。。。
BR约翰内斯
嗨,约翰,
IMU在辅助引导加载程序中的初始化并不重要(坦率地说,我不知道我们为什么要把它放在那里),而且我在代码中没有看到任何对BMI160的引用。很抱歉问了这么明显的问题,但是我假设你已经把BMI160连接到你的多传感器套件(使用相同的中断等)。我还假设您已经正确地初始化了总线(在辅助引导加载程序中,这是为ICM IMU管理的——包括gpio的选择)。
今天晚些时候,我将直接联系您,帮助您解决此问题。
/ MHv
你好,MHv,
我有更多的发现。
(1) 初始化似乎是正确的,无论引导加载程序执行什么操作,MS DK都会正确配置GPIO。GPIOs和SPI参数在set_pad_功能和iot_dk_SPI_init中配置:
(2) 我用示波器观察MISO、MOSI、CLK、CS上的执行活动。SPI似乎工作正常。
(3) 我观察到BMI160中断变高(再次显示BMI160似乎通过SPI正确编程),这似乎是问题开始的原因。固件不会对中断作出反应。
观察(3)我用臭氧检查行为(扰流板:我第一次使用它)。一个断点
在sensors_interface.c文件中显示了中断确实正在被配置。一个断点
然后显示回调从未执行,尽管引脚变高。根据我们的原理图正确配置PIN:
[编辑;删除了一个部分,我现在认为是正常的,并没有帮助找到问题]
在您之前的回复中,您表示希望与我联系,但我没有收到通知或电子邮件。你需要我的联系方式吗?
BR约翰内斯
编辑:
(a) 启用运动唤醒功能也是如此。我可以观察到设备进入睡眠状态,中断很低。当我移动传感器时,引脚确实会变高,但固件不会对此做出反应。
(b) 我已经为这些测试禁用了睡眠模式。
亲爱的对话框支持,
我还在急切地等待答复。是什么原因导致中断不起作用?我如何进一步研究臭氧的这个问题?
BR约翰内斯
嗨,格梅·约翰内斯,
我对耽搁表示歉意。我完全同意MHv_Dialog,我认为最好的方法是使用空的_peripheral_模板项目,然后慢慢地将代码片段移动到该项目中。但是,我会在内部与团队沟通,以获得他们的反馈。我会尽快给你回复。
谢谢,PM_Dialog
嗨PM_Dialog,
考虑到我们的项目与多人传感器DK有多少次(除了:缺少Env传感器,不同的磁力计,不同的引脚,不同的Flash / Pa),我希望您能理解我仍然有利于剥离/修改的方法多传感器DK。我希望你有一些想法如何调查为什么我没有看到中断。
也许我应该先用空的_peripheral _模板测试中断功能本身。
BR约翰内斯
嗨PM_Dialog,
[有消息吗?你知道我怎样才能解决这个问题吗?使用臭氧进行验证的说明将非常有用。]
编辑:
在对代码进行了长时间的调查之后,我注意到
只检查寄存器P1和P2。然后我在UM-B-101第20页看到它说:
你能告诉我 - 迫切会告诉我 - 如果港口0上的中断是不可能的吗?这里的限制是什么?SDK6?多传感器DK?da14585?
edit2:
我已经修改了回调函数,并为端口0添加了相应的条件,它似乎没有任何缺陷。
它是非常不幸的是,我花了这么长时间才发现这一点。当然,这是有记录的。。。但我从来没有想到实施是不完整的。我很想知道原因。
BR约翰内斯
嗨,格梅·约翰内斯,
根据UM-B-101文件,585 MSK固件扩展了中断处理以唤醒的可能性。目前,这个模块支持端口1和端口2中的中断,因为端口0被保留给其他范围。请记住,585 MSK被设计为与MSK硬件一起工作。请看表一UM-B-101: DA14585物联网多传感器开发工具包开发指南文件,以检查端口0分配。此外,如果您检查wkup_ad_cb()的源代码,您将看到它是为端口1和端口2配置的。
谢谢,PM_Dialog
嗨PM_Dialog,
正如我在第二次编辑中所写,我已经解决了这个问题。毕竟,在端口0上获得中断是没有问题的。
谢谢,
约翰尼斯