亲爱的对话支持,
我们正在使用新的Inventek ISM14585模块。我们希望使用BMI160(稍后添加BMM150)将MSK固件端口移植到此模块。在MultiSensor DK上,我已成功用BMI160替换了ACC / Gyro并获得运行。
现在我有一些麻烦移植固件。
观察:
(1)我不得不undef USE_SPI_FLASH_CONFIG,否则I got a hard fault (waiting for SPI to read the flash). I don't know what the problem could be. The internal flash of ISM14585 is a GigaDevice GD25D series.
(2)我已经停用了大多数env的例程。在代码中的传感器和磁力计。当我启动固件时,并与IOT应用程序连接,UART显示以下内容:
======== IOT +开始========信息:传感器启动信息:传感器暂停信息:adv启动,值:160信息:IoT +连接信息:传感器启动信息:传感器暂停信息:dws cmd:21信息:DWS CMD:22信息:DWS CMD:11信息:DWS CMD:1信息:传感器启动信息:DWS CMD:17信息: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.
嗨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的二级引导加载程序。我会与他们讨论为什么他们没有按照你建议这样做。也许这是一种误解。
我知道如何配置SmartSnippet,毕竟我拥有固件运行和广告(从Flash启动)。
在UM-B-101中,表示MS DK次级引导加载程序[...]
这就是为什么我询问这个特定引导加载程序的必要性。从调入代码,我是在印象中,引导加载程序为ICM42605配置了一些东西,但不适用于选项填充的BMI160。
对于我们以前的原型,这是基于Murata Zy的原型,我们已经移植了“旧”物联网传感器SDK,这恰好好了。当然从划痕开始是一个更清洁的解决方案,但使用有限的人力,剥去现有的项目是更快的方法......
BR Johannes.
嗨Johannes,
二级引导加载程序中的IMU初始化并不重要(坦率地说不知道为什么我们将其放置在那里),我没有看到代码中BMI160的任何引用。抱歉提出了明显的问题,但我假设您已经完全连接了BMI160,因为它在多传感器套件中连接(使用相同的中断等)。我还要假设您已正确初始化总线(在二级引导程序中,这是针对GPIOS的ICM IMU的ICM IMU的管理。
我今天晚些时候直接与您联系,以帮助排除故障。
/ mhv.
嗨mhv,
I have some more findings.
(1)初始化似乎是正确的,无论引导加载程序都可能做,MS DK还正确配置GPIO。GPIOS和SPI参数配置在set_pad_functions和iot_dk_spi_init中:
(2)我观察MISO,MOSI,CLK,CS与示波器的emcted活动。SPI似乎很好。
(3)我观察到BMI160中断变高(再次显示BMI160似乎通过SPI正确编程),似乎是问题开始。固件对中断没有反应。
Following the observation (3) I have inspected the behavior with Ozone (spoiler: I used it for the first time). A breakpoint in
在文件Sensors_Interface.c中显示了中断确实已配置。一个断点
then shows that the callback is never executed, although the pin goes HIGH. The pin is correctly configured according to our schematic:
[编辑;删除了一部分,我现在认为是正常的,没有帮助找到问题]
在您之前的回复中,您表示您希望与我联系,但我没有收到通知或电子邮件。您需要我的联系信息吗?
BR Johannes.
编辑:
(a)相同是真的,我可以在运动功能上启用唤醒。我可以观察到设备睡眠,中断低。当我移动传感器时,引脚确实变高,但固件对其没有反应。
(b)我已经为这些测试禁用了睡眠模式。
亲爱的对话支持,
我还在迫切等待答案。什么可能是中断不工作的原因?如何使用臭氧进一步调查此问题?
BR Johannes.
嗨gme_johannes,
我为延迟道歉。我完全同意mhv_dialog,我认为最好的方法是使用empty_peripheral_template项目并慢慢将代码移动到该项目中。但是,我将在内部努力获得反馈。我会尽快回复你。
谢谢,PM_DIALOG.
嗨pm_dialog,
considering how much our project has in common with the MultiSensor DK (everything except for: missing env sensors, different magnetometer, different pinout, different flash/PA), I hope that you can understand that I still favor the approach of stripping down/modifying the MultiSensor DK. I hope that you have some ideas how to investigate why I don't see the interrupt.
也许我应该开始使用empty_peripheral_template测试中断功能本身。
BR Johannes.
嗨pm_dialog,
[任何新闻?任何想法如何解决这个问题?臭氧验证说明将是很棒的。]
编辑:
在代码中的长期调查之后,我注意到了
仅检查寄存器P1和P2。然后我在UM-B-101中看到了这个问题:
Can you please tell me - urgently - if interrupts on port 0 are not possible? What is the restriction here? SDK6? MultiSensor 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上获取中断是毫无疑问的。
Thanks,
约翰内斯