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

⚠️
嗨,那里..感谢您参加论坛。激动人心的消息!现在,我们正在转到我们的新论坛平台,该平台将提供更好的功能,并包含在主话网站中。所有帖子和帐户都已迁移。我们现在仅在新论坛上接受流量 - 请在https://www.dialog-spoomendonductor.com/support。我们将在未来几天修复错误 /优化搜索和标记。
9帖子 / 0新
最后一篇文章
David_33021
离线
最后一次露面:1年9个月前
加入:2015-07-28 15:10
在某些引脚上连接SPI设备时DA1468X崩溃

你好,

在我们的自定义PCB中,我们使用SPI将对话框DA1468X连接到ST Micro LSM6DSL。我们创建了第一个原型PCB“ Proto1”,一切都很好。我们最近创建了第二个原型PCB“ Proto2”,该PCB将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-确定
// 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
#define spi_clk_pin hw_gpio_pin_3
#define spi_di_port hw_gpio_port_0
#define spi_di_pin hw_gpio_pin_7
#define spi_do_port hw_gpio_port_2
#define spi_do_pin hw_gpio_pin_3
#define LSM6DSL_CS_PORT HW_GPIO_PORT_4
#Define LSM6DSL_CS_PIN HW_GPIO_PIN_7

#别的

// proto2-在启动时崩溃
#define spi_clk_port hw_gpio_port_4
#define spi_clk_pin hw_gpio_pin_1
#define spi_di_port hw_gpio_port_1
#define spi_di_pin hw_gpio_pin_7
#define spi_do_port hw_gpio_port_1
#define spi_do_pin hw_gpio_pin_2
#Define 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更改新的PIN分配,则PXP_REPORTER应用程序在引导上崩溃。

这是我发现的其他几件事:

1.如果我发表评论#define dg_configpower_1v8p,它将运行而不会崩溃
2.如果我不连接芯片选择行与LSM6DSL

这是一些问题:

1. 1468x上只有某些针脚可用于SPI吗?
2.我是否忘记在1468x上配置某些东西以正确使用SPI?
3.如果我可以在启动过程中用作“ SPI芯片选择”作为“ SPI CHIP SELECT”作为“ SPI CHIP SELECT”的1468X上的PIN(而不是默认的输入 - Pulldown),那么我也许可以避免崩溃。这可能吗?
4.另一个解决方法可能是延迟盯着1V8P,直到启动完成后(Periph_init有机会设置芯片选择引脚作为输出)。我可以调用一个API在运行时启用1V8P吗?

非常感谢,
大卫

关键字:
设备:
mt_dialog
离线
最后一次露面:1年3周前
职员
加入:2015-06-08 11:34
嗨David_33021,

嗨David_33021,

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

2)不,我看不到配置中缺少任何东西来使用SPI。

3)您可以在OTP标头中刻录TCS标志,以便在启动时将GPIO采用不同的配置,但是在您的问题中应该是其他情况。

4)当引导加载程序运行时,1V8P被配置为活动性,因此您无法执行此操作。

关于您的问题,您可以在设备启动时检查1V8P的电压并检查轨道上是否有电压潜水?而且,您的CS上有上拉吗?

谢谢mt_dialog

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

嗨mt_dialog,

非常感谢您的回复。我将尝试使用其他SPI外围设备,并在启动期间在1V8P上检查电压。

我们尚未在设备上添加CS线上的外部拉力,但是我检查了LSM6DSL的数据表,LSM6DSL确实在CS线上具有内部拉力。

谢谢,
大卫

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

嗨mt_dialog,

我在启动过程中使用了与我们的proto2 Pin分配连接到LSM6DSL的DA1468X Pro DK在启动过程中检查了1V8P。

1)通过CS线断开,1V8P通过启动是稳定的1.8V(以及当我用开关K2重置Pro DK时)。
2)在连接CS线后,1V8P在我发布Pro DK的重置开关(K2)后立即从1.8V开始,然后在小于200 ms的内下降到约1V。在这一点上,1V8P立即返回1.8V,然后再次降回1.0V,无限期地重复此模式(大概是因为1468X处于崩溃并重新启动周期)。

谢谢,
大卫

mt_dialog
离线
最后一次露面:1年3周前
职员
加入:2015-06-08 11:34
嗨David_33021,

嗨David_33021,

这意味着,出于某种原因,您在开发套件上附加的传感器或原始板上的传感器具有相当大的功率,比1V8P可以提供的无电压下降的功率更多,因此,当电压掉落棕色的检测器并重置并重置时,板(1.65V是1V8P的典型值)。这听起来更像是短路。现在,为什么只有在p3_0上的CS很奇怪时才会发生这种情况,因为这两个引脚之间没有限制或任何差异,您是否尝试过使用另一个传感器?或者也许探测p3_0,您是否看到该行切换或完全从68x设备驱动,您是否可以检查该行的任何切换是否与1V8P降至1V的事实相关?您还可以测量电源1V8P的电流以及CS上的电流,并检查启动过程中是否有电流冲刺。

还想评论上一篇文章(我认为它必须对您的当前问题做任何事情数据表PINS P1_0,P1_5和P1_7在RF活动时可能会影响无线电性能。建议在低速时使用,而不是在无线电处于活动状态时使用。

谢谢mt_dialog

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

嗨mt_dialog,

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

另外,感谢您指出的是P1_7对高速切换很敏感。我们已经在DA14680/681-01-已知限制文档中观察到,我们应该避免使用P1_0和P1_5,但是已知的限制文档并未提及P1_7,我们在数据表中错过了它。

大卫

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

嗨mt_dialog,

我使用write_tcs燃烧了OTP,以将我们的SPI Clock PIN p4_1设置为输出,最初是逻辑高。通过这种更改,我们在Pro DK上的Proto2设置,我们的Proto2 PCB(到目前为止我已经测试过两个)可以在靴子上生存并正常运行。耶!

谢谢,
大卫

mt_dialog
离线
最后一次露面:1年3周前
职员
加入:2015-06-08 11:34
嗨David_33021,

嗨David_33021,

很高兴您找到了出路,并感谢您的分享,但是出于好奇,您是否弄清楚了为什么确切地将TCS中的P4_1 High设置为使用您的设置工作?

谢谢mt_dialog

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

嗨mt_dialog,

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

我们仍在准备(希望)最终的PCB构建时进行调查。如果我们发现任何东西,我会告诉你。

谢谢,
大卫