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

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.xmece.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
9个员额/ 0个新员额
最后发表
david_33021
离线
最后看到:1年2个星期前
加入: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时钟: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.添加一个platform_devices.h文件到config目录,并定义一个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_总线_端

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

如果1号

// Proto1 -好的
#定义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_引脚HW_GPIO_引脚3
#定义LSM6DSL\U CS\U端口HW\U GPIO\U端口4
#定义LSM6DSL_CS_PIN HW_GPIO_PIN_7

其他#

// Proto2 -启动时崩溃
#定义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_引脚HW_GPIO_引脚2
#定义LSM6DSL\U CS\U端口HW\U GPIO\U端口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更改到新的pin分配,pxp_reporter应用程序在引导时崩溃。

以下是我的一些发现:

1.如果我注释掉#define dg_configPOWER_1V8P,它就不会崩溃
2.如果我不将芯片选择线连接到LSM6DSL,它在引导时不会崩溃

这里有一些问题:

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

非常感谢,
大卫

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

嗨david_33021,

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

2)不,我没有看到任何丢失从配置为了使用SPI。

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

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

关于你的问题,能否在设备启动时检查1V8P上的电压,检查导轨上是否有电压骤降?还有,你在设备的CS上有一个上拉吗?

由于MT_dialog

david_33021
离线
最后看到:1年2个星期前
加入:15 2015-07-28
嗨MT_dialog,

嗨MT_dialog,

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

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

谢谢
大卫

david_33021
离线
最后看到:1年2个星期前
加入:15 2015-07-28
嗨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
离线
最后看到:三个月三个星期前
工作人员
加入:2015-06-08 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可能影响无线电性能如果切换射频活动。建议在低速度下使用,而不是当无线电是活跃的。

由于MT_dialog

david_33021
离线
最后看到:1年2个星期前
加入:15 2015-07-28
嗨MT_dialog,

嗨MT_dialog,

谢谢你的意见。我们将按照你的建议进行调查。

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

大卫

david_33021
离线
最后看到:1年2个星期前
加入:15 2015-07-28
嗨MT_dialog,

嗨MT_dialog,

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

谢谢
大卫

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

嗨david_33021,

很高兴您找到了自己的方法,感谢分享,但是,出于好奇,您知道为什么在TCS中设置P4_1的高值来操作您的设置吗?

由于MT_dialog

david_33021
离线
最后看到:1年2个星期前
加入:15 2015-07-28
嗨MT_dialog,

嗨MT_dialog,

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

我们仍在调查,因为我们准备我们(希望)的最终PCB建设。如果我们发现什么,我会告诉你的。

谢谢
大卫