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

⚠️
大家好. .谢谢你来参加论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,并包含在主对话网站中。所有的帖子和账号都已迁移。我们现在只接受新论坛的流量-请张贴任何新的线程在//www.wsdof.com/support.我们将在未来几天修复bug /优化搜索和标记。
9个帖子/ 0个新
最后发表
david_33021
离线
最后看到:1年前,3周前
加入:15 2015-07-28
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中添加以下定义:

#定义dg_configUSE_HW_SPI (1)
#定义dg_configSPI_ADAPTER (1)
#定义dg_configPOWER_1V8P (1)

3.在config目录中添加一个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 - collisions .
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的peripheral _init函数中,为SPI配置pin:

如果1号

// Proto1 - ok
#定义SPI_CLK_PORT HW_GPIO_PORT_1
#定义SPI_CLK_PIN HW_GPIO_PIN_3
#定义SPI_DI_PORT HW_GPIO_PORT_0
#定义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
#定义LSM6DSL_CS_PIN HW_GPIO_PIN_7

其他#

// pro2 -启动时崩溃
#定义SPI_CLK_PORT HW_GPIO_PORT_4
#定义SPI_CLK_PIN HW_GPIO_PIN_1
#定义SPI_DI_PORT HW_GPIO_PORT_1
#定义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
#定义LSM6DSL_CS_PIN HW_GPIO_PIN_0

# endif

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的引脚分配,pxp_reporter应用程序在连接到LSM6DSL的Pro DK上运行良好。如果从Proto2 PCB更改新的引脚分配,pxp_reporter应用程序将在引导时崩溃。

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

1.如果我注释掉#define dg_configPOWER_1V8P,它就会运行而不会崩溃
2.如果我没有将芯片选择线连接到LSM6DSL,它会在引导中存活而不会崩溃

以下是一些问题:

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

非常感谢,
大卫

关键词:
设备:
MT_dialog
离线
最后看到:4个月5天前
工作人员
加入:2015-06-08 34
嗨david_33021,

嗨david_33021,

1)不,对于用于SPI接口的引脚没有特殊的限制,所有的引脚都可以配置并用于SPI接口(除了一些特殊的引脚,比如用于QUAD SPI的P0端口的第一引脚)。我测试了P3_0作为SPI设备上的CS,没有看到任何问题。也许您可以尝试在不同的SPI外围设备上执行相同的操作,并检查是否可以复制该问题。

2)不,为了使用SPI,我没有看到任何从配置中缺失的东西。

3)您可以在OTP标头中烧毁TCS标志,以便在引导时使GPIO处于不同的配置,但在您的问题中应该有其他情况。

4)当引导加载程序运行时,1V8P被配置为活动的,所以你不能那样做。

关于你的问题,你能在设备开机的时候检查一下1V8P上的电压吗?检查一下轨道上是否有电压跳水?你在这个设备的CS上有一个上拉吗?

由于MT_dialog

david_33021
离线
最后看到:1年前,3周前
加入:15 2015-07-28
嗨MT_dialog,

嗨MT_dialog,

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

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

谢谢,
大卫

david_33021
离线
最后看到:1年前,3周前
加入:15 2015-07-28
嗨MT_dialog,

嗨MT_dialog,

我在引导期间检查了示波器上的1V8P,使用DA1468x Pro DK与我们的Proto2引脚分配连接到LSM6DSL。

1)当CS线断开时,1V8P通过引导是稳定的1.8V(当我用K2开关重置Pro DK时也是如此)。
2)在CS线连接的情况下,当我松开Pro DK的复位开关(K2)后,1V8P立即从1.8V启动,然后在不到200毫秒的时间内下降到约1V。在这一点上,1V8P立即回到1.8V,然后再次下降到1.0V,无限重复这个模式(大概是因为1468x处于崩溃和重启周期)。

谢谢,
大卫

MT_dialog
离线
最后看到:4个月5天前
工作人员
加入:2015-06-08 34
嗨david_33021,

嗨david_33021,

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

另外,我想从以前的帖子中评论一些东西,(我不认为它必须与您当前的问题做任何事情,但你应该注意,以避免任何未来的问题,你可能会有),如在数据表引脚P1_0, P1_5和P1_7上所示,如果切换时RF活动,可能会影响无线电性能。建议在低速时使用,而不是在无线电处于激活状态时使用。

由于MT_dialog

david_33021
离线
最后看到:1年前,3周前
加入:15 2015-07-28
嗨MT_dialog,

嗨MT_dialog,

谢谢你的意见。我们会按照你的建议调查的。

另外,感谢您指出P1_7对高速切换非常敏感。我们在da14680 /681-01- knownlimits文档中注意到,我们应该避免P1_0和P1_5,但是knownlimits文档没有提到P1_7,因此我们在数据表中遗漏了它。

大卫

david_33021
离线
最后看到:1年前,3周前
加入:15 2015-07-28
嗨MT_dialog,

嗨MT_dialog,

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

谢谢,
大卫

MT_dialog
离线
最后看到:4个月5天前
工作人员
加入:2015-06-08 34
嗨david_33021,

嗨david_33021,

很高兴你找到了解决的方法,谢谢分享,但是,只是出于好奇,你知道为什么在TCS中设置P4_1高与你的设置操作吗?

由于MT_dialog

david_33021
离线
最后看到:1年前,3周前
加入:15 2015-07-28
嗨MT_dialog,

嗨MT_dialog,

不,不幸的是,还没有。看起来很奇怪,我们可以在DA1468x pro套件上重现这个问题。我们购买了另一个LSM6DSL断接板连接到DA1468x pro套件,并观察到同样的问题,所以这不是我们的特殊LSM6DSL断接的一次性问题。我们的Proto2构建中的每一个pcb都有问题,而我们的Proto1构建中的所有pcb(相同的DA14680和LSM6DSL和相同的软件,只是在DA1468x上使用不同的引脚)都很好。

我们仍然在调查,因为我们准备我们(希望)最终的PCB构建。有发现我会通知你的。

谢谢,
大卫