你好,
在我们的自定义PCB中,我们使用SPI将对话框DA1468x连接到ST Micro LSM6DSL。我们创建了一个第一个原型pcb,“proto1”,一切都很棒。我们最近创建了第二个原型PCB,“PROTO2”,它将LSM6DSL连接到DA1468x上的不同引脚,1468x现在在启动时崩溃。
我能够使用1.0.12.1078 SDK和1468x Pro开发套件的PXP_Reporter示例和AQFN包中的DA14681的问题重现问题。
根据我们的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.
#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.
#定义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.
#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.
#定义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_vddd1v8p);
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_vddd1v8p);
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_vddd1v8p);
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_vddd1v8p);
使用我们旧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.如果我可以在1468倍上设置PIN,我可能能够避免碰撞我们在引导期间用作“SPI芯片选择”作为输出(而不是默认输入 - 下拉)。这可能吗?
4.另一个解决方法可能是延迟凝视1V8P,直到启动完成(并且Periph_Init有机会将芯片选择引脚设置为输出)。是否有一个API可以调用它在运行时启用1V8P?
非常感谢,
大卫

嗨David_33021,
1)否,对SPI接口可以使用的引脚没有特殊限制,可以配置所有引脚并用于SPI接口(除了几个特殊的销钉,如使用的P0端口的第一个引脚)例如,对于四个SPI)。我测试了P3_0作为SPI设备上的CS,没有看到我身边的任何问题。也许你可以尝试用不同的SPI外设做同样的事情,并检查你是否可以复制这个问题。
2)否我没有看到配置中缺少的任何东西以便使用SPI。
3)您可以在OTP标题中刻录TCS标志,以便在引导时在不同的配置中具有GPIO,但在您的问题中也应该是其他内容。
4)启动加载程序运行时,1V8P配置为Active,因此否您无法执行此操作。
关于您的问题,您是否可以在设备启动的同时检查1V8P上的电压并检查轨道上是否有任何电压潜水?您还有一个上贴设备的CS吗?
谢谢mt_dialog.
嗨mt_dialog,
非常感谢您的回复。我会尝试不同的SPI外设,并根据建议,在引导期间检查1V8P上的电压。
我们尚未在CS行上添加外部上拉到设备,但我检查了LSM6DSL的数据表,LSM6DSL在CS行上有一个内部拉出。
谢谢,
大卫
嗨mt_dialog,
在启动期间,使用DA1468X Pro DK在SPRO2引脚分配中使用DA1468x PRO DK检查了1V8P。
1)通过CS线断开连接,1V8P通过引导稳定为1.8V(以及当我重置PRO DK带开关K2时)。
2)使用CS线路连接,1V8P在释放Pro DK的复位开关(K2)后立即启动1.8V,然后在小于200毫秒内下降至约1V。此时,1V8P立即返回到1.8V,然后再次倒回1.0V,无限地重复此模式(可能是1468x处于崩溃并重新启动周期)。
谢谢,
大卫
嗨David_33021,
这意味着出于某种原因您在DEV套件上或PROTO板上的传感器绘制了相当多的功率,超过1V8P可以提供无电压下降,因此当电压下降棕色探测器踢出并重置板(1.65V是1V8P的典型值)。这听起来像更多的短路。现在为什么只有当您在P3_0上有CS时才发生这种情况,因为这两个引脚之间没有限制或任何类型的差异,因此您是否尝试过另一个传感器?或者可能会探测P3_0,你是否看到线路切换或驱动到68x器件中的所有,你可以检查任何切换线是否与1V8P下降到1V的事实相关?您还可以测量电源1V8P上的电流,以及CS上的电流,并检查在启动期间是否存在当前的rush。
也想从上一篇文章中发表评论的东西,(我不认为它必须与您当前的问题做任何事情,但您应该照顾它,以避免您可能拥有的任何未来问题),如图所示数据表引脚P1_0,P1_5和P1_7可能会影响RF活动时切换时的无线电性能。建议使用低速使用,而不是无线电激活。
谢谢mt_dialog.
嗨mt_dialog,
谢谢您的意见。我们会根据您的建议进行调查。
此外,谢谢您指出P1_7对高速切换敏感。我们在da14680 / 681-01-adgnlimitations doc中观察到,我们应该避免p1_0和p1_5,但是已知的文档没有提及p1_7,我们在数据表中错过了它。
大卫
嗨mt_dialog,
使用Write_tcs刻录OTP将SPI时钟引脚P4_1设置为输出,最初逻辑高。有了这种变化,我们的ProP2设置在Pro DK和我们的Proto2 PCB(我到目前为止测试了两个)生存并正常运行。好极了!
谢谢,
大卫
嗨David_33021,
很高兴你发现了你的出路,谢谢你的分享,但是,只是出于好奇心,你是否弄清楚了为什么通过设置TCS中的P4_1 Quals究竟与你的设置有关?
谢谢mt_dialog.
嗨mt_dialog,
不,不幸的是,还没有。我们可以在DA1468X Pro套件上重现问题似乎很奇怪。我们买了另一个LSM6DSL分组板,以附加到DA1468X Pro套件并观察到同样的问题,因此它不是我们特定的LSM6DSL突破的一个问题。我们的PROTO2构建中的每一个PCB都有问题,而我们的PROTO1建立的所有PCB(相同的DA14680和LSM6DSL和相同的软件,只是在DA1468x上使用不同的引脚)很好。
我们仍在为最终的PCB构建做准备。有发现我会通知你的。
谢谢,
大卫