移植物联网多元传感到ISM14585模块

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
11个帖子/ 0新
最后一篇
gme_johannes
离线
最后一次露面:2周2天前
加入:2017年12月22日10:09
移植物联网多元传感到ISM14585模块

亲爱的对话框的支持,

我们正与新Inventek ISM14585模块工作。我们希望端口MSK固件这个模块,采用BMI160(后来加BMM150)。在多传感器DK我已经成功替换BMI160的ACC /陀螺仪,得到它运行。

现在我有一些麻烦移植固件。

观察

(1)我不得不undef use_spi_flash_config,否则我有一个硬故障(等待spi读取闪光灯)。我不知道问题可能是什么。ISM14585的内部闪存是Gigadevice GD25D系列。

(2)我已经停用ENV的大多数程序。传感器和在代码中磁力计。当我开始固件,并与物联网应用关联,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,我发现,多元传感DK实际上使用的次级引导加载程序认为需要照顾某些配置步骤;但它并没有在我看来,它做任何事情至关重要的BMI160(而它的一些配置为原装ACC /陀螺仪)。
在ISM14585,OTP与仲引导程序,因为内部闪存CS被映射到P0_7代替P0_3烧掉(因此,这将在开发者模式没有这种不启动)。

我的问题

(1)什么可能是我从BMI160的中断下降的原因是多少?
(2)特殊的二次引导程序有必要吗?我可以口固件仅通过闪烁产生的hex文件下载到闪存?

非常感激你的帮助。

BR约翰内斯

设备:
mhv_dialog
离线
最后一次露面:1个月2个星期前
职员
加入:2013-12-06 15:10
嗨Johannes,

嗨Johannes,

请让我知道它的GPIO连接到BMI160,所以我可以在我的身边运行它。

  1. 显然,BMI160的所有初始化以及GPIO映射都必须正确工作
  2. 次级引导加载程序是不必要的。这是可能通过OTP报头的一个寄存器来指定引导加载所需的GPIO来代替。你可以刷你得到的十六进制文件directy(实际上SmartSnippets工具箱将首先转换为二进制文件)到Flash。您必须设置SPI的GPIO在SmartSnippets工具箱指定P0_7是SPI CS。

我不使用传感器物联网标签固件为您的应用起点的忠实粉丝。你会留下大量的代码最终会咬你半路支撑片的。更好的方法是使用empty_peripheral_template项目和缓慢移动的代码段到该项目中。

/ mhv.

gme_johannes
离线
最后一次露面:2周2天前
加入:2017年12月22日10:09
嗨mhv,

嗨mhv,

广告1 .:
GPIO映射是微不足道的,SPI总线与闪光灯对CLK / MOSI / MISO,CS(P1_3)和DRDY的标准端口共享/ INT(P0_1)我已正确配置。初始化应该工作OOB多传感器DK,因为DK能够与BMI160(我们验证)操作。

广告2 .:
制造商Inventek已被刻为OTP的二级引导加载程序。我会与他们讨论为什么他们没有按照你建议这样做。也许这是一种误解。
我知道如何配置SmartSnippet,毕竟我拥有固件运行和广告(从Flash启动)。
在UM-B-101中,表示MS DK次级引导加载程序[...]

初始化IMU(ICM42605或BMI160)设备在SPI模式中操作。

这就是为什么我问这个特定的引导程序的必要性。从寻找到的代码,我的印象是引导程序做配置的东西ICM42605下,而不是为可选填充BMI160。

对于我们以前的原型,这是基于Murata Zy的原型,我们已经移植了“旧”物联网传感器SDK,这恰好好了。当然从划痕开始是一个更清洁的解决方案,但使用有限的人力,剥去现有的项目是更快的方法......

BR约翰内斯

mhv_dialog
离线
最后一次露面:1个月2个星期前
职员
加入:2013-12-06 15:10
嗨Johannes,

嗨Johannes,

在二级引导程序的初始化IMU并不重要(我坦率地不知道为什么我们把它放在这里),我没有看到在代码中的BMI160任何引用。对不起,问明显的问题,但我相信你已经准确有线的BMI160因为它是在你的多传感器套件连接(使用相同的中断等)。我也假设你已经正确初始化总线(在此是为ICM IMU管理的二次引导程序 - 包括的GPIO selction)。

我今天晚些时候直接与您联系,以帮助排除故障。

/ mhv.

gme_johannes
离线
最后一次露面:2周2天前
加入:2017年12月22日10:09
嗨mhv,

嗨mhv,

我有更多的发现。

(1)初始化似乎是正确的,无论引导加载程序都可能做,MS DK还正确配置GPIO。GPIOS和SPI参数配置在set_pad_functions和iot_dk_spi_init中:

void periph_init(void){//上电外设'Power Domain SetBits16(PMU_CTRL_REG,PERIPH_SLEEP,0);而(!(getword16(sys_stat_reg)&per_is_up));SetBits16(CLK_16M_REG,XTAL16_BIAS_SH_ENABLE,1);// rom修补程序patch_func();// init pads set_pad_functions();//(re)初始化外设iot_dk_spi_init(Accel_cs_port,Accel_CS_PIN,SPI_XTAL_DIV_2);

(2)我观察MISO,MOSI,CLK,CS与示波器的emcted活动。SPI似乎很好。

(3)我观察到BMI160中断变高(再次显示BMI160似乎通过SPI正确编程),似乎是问题开始。固件对中断没有反应。

观察(3)我用臭氧检查行为(扰流板:我第一次使用它)。一个断点

无效si_setup_interrupts(si_list_entity_t * PTR)

在文件sensors_interface.c表明中断确实配置。一个断点

void si_gpio_irq_cb(uint8_t端口,uint32_t引脚)

然后显示回调从未执行,尽管引脚变高。根据我们的原理图正确配置PIN:

#define accel_drdy_port gpio_port_0 #define accel_drdy_pin gpio_pin_1 [...] gpio_configurepin(Accel_drdy_port,Accel_drdy_pin,input_pulldown,PID_GPIO,FALSE);

[编辑;删除了,我现在想通一部分是正常的,不利于发现问题]

在您之前的回复中,您表示您希望与我联系,但我没有收到通知或电子邮件。您需要我的联系信息吗?

BR约翰内斯

编辑:

(a)相同是真的,我可以在运动功能上启用唤醒。我可以观察到设备睡眠,中断低。当我移动传感器时,引脚确实变高,但固件对其没有反应。
(b)我已经为这些测试禁用了睡眠模式。

gme_johannes
离线
最后一次露面:2周2天前
加入:2017年12月22日10:09
亲爱的对话框的支持,

亲爱的对话框的支持,

我仍然迫切等待回答。有什么能为中断不工作的原因吗?我怎样才能进一步调查与臭氧这个问题?

BR约翰内斯

PM_DIALOG.
离线
最后一次露面:1天8小时前
职员
加入:2018-02-08 11:03
嗨gme_johannes,

嗨gme_johannes,

我为延迟道歉。我完全同意mhv_dialog,我认为最好的方法是使用empty_peripheral_template项目并慢慢将代码移动到该项目中。但是,我将在内部努力获得反馈。我会尽快回复你。

谢谢,PM_DIALOG.

gme_johannes
离线
最后一次露面:2周2天前
加入:2017年12月22日10:09
嗨pm_dialog,

嗨pm_dialog,

考虑到我们的项目与多人传感器DK有多少次(除了:缺少Env传感器,不同的磁力计,不同的引脚,不同的Flash / Pa),我希望您能理解我仍然有利于剥离/修改的方法多传感器DK。我希望你有一些想法如何调查为什么我没有看到中断。
也许我应该开始使用empty_peripheral_template测试中断功能本身。

BR约翰内斯

gme_johannes
离线
最后一次露面:2周2天前
加入:2017年12月22日10:09
嗨pm_dialog,

嗨pm_dialog,

[任何新闻?任何想法如何解决这个问题?臭氧验证说明将是很棒的。]

编辑:
在代码中的长期调查之后,我注意到了

void wkup_ad_cb(void)

只有寄存器P1和P2被检查。然后,我看到塔中UM-B-101第20页中指出:

目前此模块支持在端口1和2。这硬件配置中断不支持其他端口。

你能告诉我 - 迫切会告诉我 - 如果港口0上的中断是不可能的吗?这里的限制是什么?SDK6?多传感器DK?da14585?

编辑2:
我已经修改了回调函数并刚刚根据端口0的条件添加,似乎没有缺陷的工作。
这是非常不幸的是我找到这一点需要多长时间。当然,它被记录在内......但我永远不会猜到实施是不完整的。我非常好奇地理解原因。

BR约翰内斯

PM_DIALOG.
离线
最后一次露面:1天8小时前
职员
加入:2018-02-08 11:03
嗨gme_johannes,

嗨gme_johannes,

根据UM-B-101文件,585 MSK固件扩展,以唤醒中断处理的可能性。目前此模块支持在端口1和2的中断,因为端口0被保留用于其它范围。请记住,585 MSK旨在与MSK硬件一起工作。请看看表1UM-B-101:DA14585物联网多重感应器开发套件开发人员指南为了检查端口0转让文件。此外,如果选中wkup_ad_cb的源代码(),你会看到,其被配置用于端口1和2。

// IO端口寄存器挥发性uint32_t的* ptr_P1 =(挥发性uint32_t的*)P1_DATA_REG;挥发性uint32_t的* ptr_P2 =(挥发性uint32_t的*)P2_DATA_REG;

谢谢,PM_DIALOG.

gme_johannes
离线
最后一次露面:2周2天前
加入:2017年12月22日10:09
嗨pm_dialog,

嗨pm_dialog,

正如我在第二个编辑中写的那样,我已经解决了这个问题。毕竟在端口0上获取中断是毫无疑问的。

谢谢,

约翰内斯