亲爱的对话支持,
我们正在使用新的Inventek ISM14585模块。我们希望使用BMI160(稍后添加BMM150)将MSK固件端口移植到此模块。在MultiSensor DK上,我已成功用BMI160替换了ACC / Gyro并获得运行。
现在我在移植固件时遇到了一些麻烦。
观察:
(1)我不得不undef use_spi_flash_config,否则我有一个硬故障(等待spi读取闪光灯)。我不知道问题可能是什么。ISM14585的内部闪存是Gigadevice GD25D系列。
(2)我已经停用了大多数env的例程。在代码中的传感器和磁力计。当我启动固件时,并与IOT应用程序连接,UART显示以下内容:
= = = = = = = =物联网+开始= = = = = = = = INFO:传感器Initilization信息:传感器暂停信息:阿德开始,值:160信息:物联网互联信息:传感器Initilization信息:传感器暂停信息: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对此至关重要,这对BMI160至关重要(而且它对原来的ACC / Gyro做了一些配置)。
在ISM14585中,OTP用辅助引导加载程序刻录,因为内部闪存CS被映射到P0_7而不是P0_3(因此它不会在没有此的DEV模式下启动)。
我的问题:
(1)是什么原因我没有看到从BMI160中断到低?
(2)是必要的特殊二级引导程序吗?我可以通过将生成的十六进制文件闪烁到闪存中来端口固件吗?
非常感激你的帮助。
BR Johannes.
设备:
嗨,约翰,
请告诉我哪个GPIO连接到BMI160,所以我可以在我身边运行它。
我不是使用传感器物联网标记固件作为应用程序的起点的大粉丝。你将留下很多一半的支持代码,最终会咬你。更好的方法是使用extent_peripheral_template项目并慢慢将代码移动到该项目中。
/ mhv.
嗨MHv,
广告1。:
GPIO映射是微不足道的,SPI总线在CLK / MOSI / MISO的标准端口上与闪存共享,CS(P1_3)和DRDY / int(P0_1)配置正确。初始化应使用多传感器DK工作,因为DK能够与BMI160(我们已验证)操作。
广告2。:
二级引导加载程序已被制造商英业达(Inventek)烧毁到OTP。我会和他们讨论为什么他们没有按照你的建议去做。也许这是个误会。
我知道如何配置SmartSnippets,毕竟我有固件运行和广告(从flash启动)。
在UM-B-101中,MS DK二级引导加载程序[…]
这就是为什么我询问这个特定引导加载程序的必要性。从调入代码,我是在印象中,引导加载程序为ICM42605配置了一些东西,但不适用于选项填充的BMI160。
我们之前的原型是基于Murata ZY,我们移植了“旧的”物联网传感器SDK,它工作得很好。从头开始当然是一个更干净的解决方案,但在有限的人力下,剥离一个现有的项目是更快的方法……
BR Johannes.
嗨,约翰,
二级引导加载程序中的IMU初始化并不重要(坦率地说不知道为什么我们将其放置在那里),我没有看到代码中BMI160的任何引用。抱歉提出了明显的问题,但我假设您已经完全连接了BMI160,因为它在多传感器套件中连接(使用相同的中断等)。我还要假设您已正确初始化总线(在二级引导程序中,这是针对GPIOS的ICM IMU的ICM IMU的管理。
我将在今天晚些时候直接联系你,帮助解决这个问题。
/ mhv.
嗨MHv,
我有更多的发现。
(1)初始化似乎是正确的,无论引导加载程序可以做什么,MS DK也正确配置了gpio。gpio和SPI参数在set_pad_functions和iot_dk_spi_init中配置:
(2)我用示波器观察MISO, MOSI, CLK, CS预期的活动。SPI似乎工作良好。
(3)我观察到BMI160中断高(再次显示BMI160似乎通过SPI被正确编程),这似乎是问题开始。固件对中断没有反应。
观察(3)我用臭氧检查行为(扰流板:我第一次使用它)。一个断点
在文件Sensors_Interface.c中显示了中断确实已配置。一个断点
然后显示回调从未执行,尽管引脚变高。根据我们的原理图正确配置PIN:
[编辑;删除了一部分,我现在认为是正常的,没有帮助找到问题]
在您之前的回复中,您表示想联系我,但我没有收到通知或邮件。你需要我的联系方式吗?
BR Johannes.
编辑:
(a)我在运动特征上使能尾流也是一样的。我可以观察到设备进入休眠状态,中断率很低。当我移动传感器,引脚确实很高,但固件没有反应它。
(b)我取消了这些测试的睡眠模式。
亲爱的对话支持,
我还在迫切等待答案。什么可能是中断不工作的原因?如何使用臭氧进一步调查此问题?
BR Johannes.
嗨gme_johannes,
我为耽搁道歉。我完全同意MHv_Dialog,我认为最好的方法是使用empty_peripheral_template项目,慢慢地将代码片段移到该项目中。但是,我会在团队内部获得他们的反馈。我会尽快回复你的。
谢谢,PM_DIALOG.
嗨pm_dialog,
考虑到我们的项目与多人传感器DK有多少次(除了:缺少Env传感器,不同的磁力计,不同的引脚,不同的Flash / Pa),我希望您能理解我仍然有利于剥离/修改的方法多传感器DK。我希望你有一些想法如何调查为什么我没有看到中断。
也许我应该先用empty_peripheral_template测试中断功能本身。
BR Johannes.
嗨pm_dialog,
(有什么消息吗?有办法解决这个问题吗?说明验证与臭氧将是伟大的。
编辑:
在对代码进行了长时间的研究之后,我注意到
仅检查寄存器P1和P2。然后我在UM-B-101中看到了这个问题:
你能告诉我 - 迫切会告诉我 - 如果港口0上的中断是不可能的吗?这里的限制是什么?SDK6?多传感器DK?da14585?
编辑2:
我已经修改了回调函数,只是根据端口0的条件添加了,似乎工作没有缺陷。
它是非常不幸的是我花了这么长时间才发现。当然,这是有记录的……但我从来没有想到实现是不完整的。我很想知道原因。
BR Johannes.
嗨gme_johannes,
根据UM-B-101文档,585 MSK固件扩展了中断处理的可能性,以便唤醒。目前,此模块支持端口1和2中的中断,因为端口0保留用于其他范围。请记住,585 MSK旨在与MSK硬件一起使用。请看一下表1UM-B-101:DA14585 IOT多传感器开发套件开发人员指南文档以检查端口0分配。此外,如果检查WKUP_AD_CB()的源代码,则会看到端口1和2配置了。
谢谢,PM_DIALOG.
嗨pm_dialog,
正如我在第二版中所写的,我已经解决了这个问题。毕竟,在端口0上获得中断是没有问题的。
谢谢,
约翰内斯