DA1468x在连接某些引脚的SPI设备时崩溃

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
9个帖子/ 0新
最后发表
David_33021.
离线
最后一次露面:1年1个月前
加入:2015-07-28 15:10
DA1468x在连接某些引脚的SPI设备时崩溃

你好,

在我们的定制PCB中,我们使用SPI将Dialog DA1468x连接到ST Micro LSM6DSL。我们创造了第一个PCB原型,“Proto1”,一切都很顺利。我们最近创建了第二个PCB原型,“Proto2”,它将LSM6DSL连接到DA1468x上的不同引脚,而1468x现在在引导时崩溃。

我可以使用1.0.12.1078 SDK中的pxp_reporter示例和AQFN包中带有DA14681的1468x Pro开发工具包来重现这个问题。

根据我们的PROTO1 PCB(正常工作)引脚连接

DA1468X SPI1 CLK:P1_3 - > LSM6DSL SCL
DA1468x SPI1 DI: P0_7 -> LSM6DSL SDO
DA1468X SPI1 DO:P2_3 - > LSM6DSL SDA
DA1468x CS: P4_7 -> LSM6DSL CS

根据我们的PROTO2 PCB(启动崩溃)的引脚连接

DA1468x SPI1 CLK: P4_1 -> LSM6DSL SCL
DA1468X SPI1 DI:P1_7 - > LSM6DSL SDO
DA1468X SPI1 DO:P1_2 - > LSM6DSL SDA
DA1468x CS: P3_0 -> LSM6DSL CS

在两个例子中,

DA1468X 1V8P - > LSM6DSL VDD
DA1468X 1V8P - > LSM6DSL VDDIO
DA1468X GND - > LSM6DSL GND

要重现问题,请根据上面的一个配置将Pro DK连接到LSM6DSL,然后按如下方式修改PXP_Reporter软件:

1.从1.0.12.1078 SDK中的pxp_reporter示例开始
2.将以下定义添加到custom_config_qspi_suota.h:

#define dg_configuse_hw_spi(1)
#define dg_configspi_adapter(1)
#define dg_configpower_1v8p(1)

3.将platform_devices.h文件添加到配置目录并定义SPI总线和设备:

SPI_BUS(SPI1)

spi_slave_device(
spi1,my_lsm6dsl,
hw_gpio_port_4,hw_gpio_pin_7,// proto1 - OK
// hw_gpio_port_3,hw_gpio_pin_0,// proto2 - 崩溃
hw_spi_word_8bit,hw_spi_pol_high,hw_spi_pha_mode_1,
hw_spi_freq_div_2,-1);

SPI_BUS_END

4.在Main.c中的Periph_Init函数中,为SPI配置引脚:

#if 1

// proto1 - 好的
#define spi_clk_port hw_gpio_port_1.
#定义SPI_CLK_PIN HW_GPIO_PIN_3
#define spi_di_port hw_gpio_port_0.
#define spi_di_pin hw_gpio_pin_7.
#定义SPI_DO_PORT HW_GPIO_PORT_2
#定义SPI_DO_PIN HW_GPIO_PIN_3
#定义LSM6DSL_CS_PORT HW_GPIO_PORT_4
#define lsm6dsl_cs_pin hw_gpio_pin_7.

#别的

// proto2 - 靴子上的崩溃
#define spi_clk_port hw_gpio_port_4.
#定义SPI_CLK_PIN HW_GPIO_PIN_1
#define spi_di_port hw_gpio_port_1.
#define spi_di_pin hw_gpio_pin_7.
#定义SPI_DO_PORT HW_GPIO_PORT_1
#定义SPI_DO_PIN HW_GPIO_PIN_2
#定义LSM6DSL_CS_PORT HW_GPIO_PORT_3
#define lsm6dsl_cs_pin hw_gpio_pin_0.

#万一

hw_gpio_configure_pin(spi_clk_port,spi_clk_pin,
hw_gpio_mode_output,hw_gpio_func_spi_clk,1);
hw_gpio_configure_pin_power (SPI_CLK_PORT SPI_CLK_PIN,
HW_GPIO_POWER_VDD1V8P);

hw_gpio_configure_pin(spi_di_port,spi_di_pin,
hw_gpio_mode_input,hw_gpio_func_spi_di,1);
hw_gpio_configure_pin_power (SPI_DI_PORT SPI_DI_PIN,
HW_GPIO_POWER_VDD1V8P);

hw_gpio_configure_pin(spi_do_port,spi_do_pin,
hw_gpio_mode_output,hw_gpio_func_spi_do,1);
hw_gpio_configure_pin_power (SPI_DO_PORT SPI_DO_PIN,
HW_GPIO_POWER_VDD1V8P);

hw_gpio_configure_pin(lsm6dsl_cs_port,lsm6dsl_cs_pin,
HW_GPIO_MODE_OUTPUT HW_GPIO_FUNC_GPIO 1);
hw_gpio_configure_pin_power (LSM6DSL_CS_PORT LSM6DSL_CS_PIN,
HW_GPIO_POWER_VDD1V8P);

使用我们旧Proto1 PCB的PIN分配,PXP_Reporter应用程序在连接到LSM6DSL的PRO DK上运行正常。如果从我们的PROTO2 PCB从新的引脚分配更改,PXP_Reporter应用程序在启动时崩溃。

以下是我发现的一些东西:

1.如果我注释出#define dg_configpower_1v8p,它会在没有崩溃的情况下运行
2.如果我没有将芯片选择线连接到LSM6DSL,它会在没有崩溃的情况下幸存下来

以下是一些问题:

1.仅适用于SPI的1468倍的某些引脚?
2.我是不是忘了在1468x上配置一些东西,以便正确使用SPI ?
3.我可能能够避免崩溃,如果我可以在1468x上设置引脚,我们正在使用“SPI芯片选择”作为输出(而不是默认的输入-下拉)在引导期间。这是可能的吗?
4.另一个解决方法可能是延迟凝视1V8P,直到启动完成(并且Periph_Init有机会将芯片选择引脚设置为输出)。是否有一个API可以调用它在运行时启用1V8P?

非常感谢,
大卫

关键词:
设备:
mt_dialog.
离线
最后一次露面:4个月4周前
工作人员
加入:2015-06-08 11:34
嗨David_33021,

嗨David_33021,

1)不,没有特殊限制的针一个可以使用SPI接口,可以配置所有的针和用于SPI接口(除了几个特殊针像第一针的P0端口用于例如四SPI)。我测试了在SPI设备上使用P3_0作为CS,在我这边没有看到任何问题。也许您可以尝试使用不同的SPI外围设备做同样的事情,并检查是否可以复制这个问题。

2)否我没有看到配置中缺少的任何东西以便使用SPI。

3)你可以在OTP头中燃烧TCS标志,以便在启动时拥有不同配置的GPIO,但在你的问题中应该有其他情况。

4)启动加载程序运行时,1V8P配置为Active,因此否您无法执行此操作。

关于您的问题,您是否可以在设备启动的同时检查1V8P上的电压并检查轨道上是否有任何电压潜水?您还有一个上贴设备的CS吗?

谢谢mt_dialog.

David_33021.
离线
最后一次露面:1年1个月前
加入:2015-07-28 15:10
嗨mt_dialog,

嗨mt_dialog,

非常感谢您的回复。我会尝试不同的SPI外设,并根据建议,在引导期间检查1V8P上的电压。

我们尚未在CS行上添加外部上拉到设备,但我检查了LSM6DSL的数据表,LSM6DSL在CS行上有一个内部拉出。

谢谢,
大卫

David_33021.
离线
最后一次露面:1年1个月前
加入:2015-07-28 15:10
嗨mt_dialog,

嗨mt_dialog,

在启动期间,我使用DA1468x Pro DK通过Proto2引脚连接到LSM6DSL,在示波器上检查了1V8P。

1) CS线断开,1V8P是一个稳定的1.8V通过启动(也当我重置Pro DK与开关K2)。
2)连接CS线,在我松开Pro DK的复位开关(K2)后,1V8P立即在1.8V启动,然后在不到200 ms的时间内下降到1V左右。在这一点上,1V8P立即返回1.8V,然后再次回落到1.0V,无限期地重复这个模式(大概是由于1468x处于崩溃和重启周期)。

谢谢,
大卫

mt_dialog.
离线
最后一次露面:4个月4周前
工作人员
加入:2015-06-08 11:34
嗨David_33021,

嗨David_33021,

这意味着由于某种原因你有附加的传感器开发工具包或原型板画了一些权力,超过1 v8p可以提供没有电压降,所以当启动电压降了布朗探测器,重置董事会(1.65 v的典型值是1 v8p)。这听起来更像是短路。现在为什么只有当你在P3_0上有CS时才会发生这种情况是相当奇怪的,因为这两个引脚之间没有限制或任何类型的差异,你用另一个传感器尝试过吗?或者可能探测P3_0,您是否看到从68x设备的线路切换或驱动,您能否检查线路的任何切换是否与1V8P下降到1V的事实相关?您还可以测量电源1V8P上的电流,也可以测量CS上的电流,并检查在启动期间是否有电流冲击。

也想从上一篇文章中发表评论的东西,(我不认为它必须与您当前的问题做任何事情,但您应该照顾它,以避免您可能拥有的任何未来问题),如图所示数据表引脚P1_0,P1_5和P1_7可能会影响RF活动时切换时的无线电性能。建议使用低速使用,而不是无线电激活。

谢谢mt_dialog.

David_33021.
离线
最后一次露面:1年1个月前
加入:2015-07-28 15:10
嗨mt_dialog,

嗨mt_dialog,

谢谢您的意见。我们会根据您的建议进行调查。

另外,感谢您指出P1_7对高速切换很敏感。我们在DA14680/681-01-KnownLimitations文档中观察到,我们应该避免P1_0和P1_5,但是KnownLimitations文档没有提到P1_7,我们在数据表中漏掉了它。

大卫

David_33021.
离线
最后一次露面:1年1个月前
加入:2015-07-28 15:10
嗨mt_dialog,

嗨mt_dialog,

我使用write_tcs烧制OTP,将SPI时钟引脚P4_1设置为输出,初始逻辑高。有了这个改变,我们的Proto2安装在Pro DK和我们的Proto2 pcb(到目前为止我已经测试了两个)幸存下来,并正常运行。耶!

谢谢,
大卫

mt_dialog.
离线
最后一次露面:4个月4周前
工作人员
加入:2015-06-08 11:34
嗨David_33021,

嗨David_33021,

很高兴你发现了你的出路,谢谢你的分享,但是,只是出于好奇心,你是否弄清楚了为什么通过设置TCS中的P4_1 Quals究竟与你的设置有关?

谢谢mt_dialog.

David_33021.
离线
最后一次露面:1年1个月前
加入:2015-07-28 15:10
嗨mt_dialog,

嗨mt_dialog,

不,不幸的是,还没有。我们可以在DA1468X Pro套件上重现问题似乎很奇怪。我们买了另一个LSM6DSL分组板,以附加到DA1468X Pro套件并观察到同样的问题,因此它不是我们特定的LSM6DSL突破的一个问题。我们的PROTO2构建中的每一个PCB都有问题,而我们的PROTO1建立的所有PCB(相同的DA14680和LSM6DSL和相同的软件,只是在DA1468x上使用不同的引脚)很好。

我们仍在为最终的PCB构建做准备。有发现我会通知你的。

谢谢,
大卫