当DA14580充当SPI奴隶正在接收或传输时,我应该禁用系统睡眠吗?

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
9个帖子/ 0新
最后一篇
CGHA.
离线
最后一次露面:9个月2周前
加入:2016-03-23 13:05
当DA14580充当SPI奴隶正在接收或传输时,我应该禁用系统睡眠吗?

我想将DA14580实现为SPI从站,并使用额外的2个引脚进行传输流量控制,1PIN用于主数据IRQ(M2S_IRQ_PIN)和1pin for Slave掌握IRQ(S2M_SYNC_PIN)。主站或从站可以随时启动SPI转移。当Master到Slave IRQ Assert时,它应该等待从S2M_Sync_pin断言指示从站准备好接收数据。

1.我应该调用Arch_disable_sleep()当我终于作为从站和等待SPI Master启动SPI传输时,并在传输完成后调用Arch_set_extended_sleep()时?

2. wkupct_enable_irq是否随时工作?可以随时分配引脚唤醒(当系统处于睡眠状态时,闲置,活动模式),?由于当SPI母版本要将数据传输到DA14580(断言M2S_IRQ)时,它不知道DA14580是否处于活动模式或睡眠模式,但从SPI主站SEDSTMM2S_IRQ_PIN时,从站应该准备SPI数据传输。。

3.如果M2S_IRQ_PIN将唤醒DA14580,我应该启用EXTERNAL_WAKEUP预处理器吗?

设备:
PM_DIALOG.
离线
最后一次露面:4天4小时前
职员
加入:2018-02-08 11:03
嗨cgha,

嗨cgha,

谢谢你在线的询问。说实话,我并不完全确定你想要完成的事情。据我所知,您希望将DA14580配置为SPI奴隶并通过M2S_IRQ_PIN唤醒它?请注意,当设备处于睡眠模式时,所有外围设备块都会断电,因此芯片应操作n个活动模式。如果使用唤醒控制器才能捕获M2S_IRQ,这将随时工作。但是,为您提供更多的输入,为我提供更多的投入是非常有帮助的。

谢谢,PM_DIALOG.

CGHA.
离线
最后一次露面:9个月2周前
加入:2016-03-23 13:05
是的,我想使用m2s

是的,我想使用M2S_IRQ_PIN唤醒DA14580当SPI主母版本通过SPI发送数据时(如果DA14580是处于睡眠模式或活动模式),当DA14580已准备好接收数据时,它将其与外部MCUS2M_IRQ_PIN活动,然后外部MCU发送数据。该过程如下:

DA14580是广告或断开连接,没有广告或连接,并启用深睡眠或EXT睡眠的应用程序运行:

1. SPI_MASTER(外部MCU)想要发送数据,请将M2S_IRQ_PIN高。

2. SPI_SLAVE(DA14580)通过M2S_IRQ_PIN获取引脚中断

3. spi_slave将其初始化为spi_slave和高的ACK S2M_IRQ_PIN。

4. SPI_MASTER检查S2M_irq_pin,检测上S2M_irq_pin高的水平,那么SPI数据发送到DA14580。

5.数据传输完成后,SPI_MASTER将M2S_IRQ_PIN LOW放置。

6. SPI_SLAVE将S2M_IRQ_PIN LOW。

CGHA.
离线
最后一次露面:9个月2周前
加入:2016-03-23 13:05
现在我只能得到第一个

现在我只能拿到第一引脚中断和获取数据的第一个数据包,当SPI主要发送第二个数据包,da14580似乎不能中断再次让图钉。

PM_DIALOG.
离线
最后一次露面:4天4小时前
职员
加入:2018-02-08 11:03
嗨cgha,

嗨cgha,

由于您发送第二个中断,请您可以在唤醒控制器回调函数中添加断点,以检查是否匹配?要配置唤醒引脚,请查看SDK>的BLE_APP_SLEEPMODE示例>您是否使用了相同的代码架构?

谢谢,PM_DIALOG.

CGHA.
离线
最后一次露面:9个月2周前
加入:2016-03-23 13:05
不,它无法进入

现在它可以输入回调。在PIN再次高度后,我应该调用INT_ENABLE函数。但是,在发送数十个数据包后,SPI丢失了一些字节。SPI_Handler似乎无法快速获得字节。主速度约为250k bps。

void spi_handler(void){if(packetlen == 13 && spiisinited){// global_int_disable();while(packetlen){while(0xff&getBits16(SPI_CTRL_REG,SPI_Int_Bit)){(GetBits16(SPI_CTRL_REG,SPI_TXH)== 1);setword16(spi_rx_tx_reg0,* p_spi_txdata ++);// p_spi_txdata ++;* p_spi_rxdata ++ = 0xff&getword16(spi_rx_tx_reg0);setword16(spi_clear_int_reg,0x01);if(packetlen){packetlen  - ;if(packetlen == 0){spi_transfer_irq_off();newpacket = 1;rcvedcnt ++; } } } } //GLOBAL_INT_RESTORE(); } }

PM_DIALOG.
离线
最后一次露面:4天4小时前
职员
加入:2018-02-08 11:03
嗨cgha,

嗨cgha,

要诚实,我无法理解您如何在M2S_IRQ_PIN中断检测时唤醒您的设备。您是否配置了唤醒控制器?只有唤醒控制器可以唤醒芯片。

谢谢,PM_DIALOG.

CGHA.
离线
最后一次露面:9个月2周前
加入:2016-03-23 13:05
现在它有效,所以我需要

现在唤醒工作,所以我需要在SPI转移时调用ARCH_DISABLE_SLEEP()吗?或者,当SPI转移时,我应该保持弹力吗?

PM_DIALOG.
离线
最后一次露面:4天4小时前
职员
加入:2018-02-08 11:03
嗨cgha,

嗨cgha,

ARCH_DISABLE_SLEEP()禁用所有睡眠模式,因此系统仅在活动/空闲模式下运行。DA14580有2种睡眠模式:

扩展睡眠模式:只有SystemRAM 42KB&RetentionRAM仍保持打开。

深度睡眠模式:只有RetentionRAM仍然接通。OTP必须被烧焦,以便能够测量深度睡眠电流。

在两个睡眠模式中,包括SPI块和RF块的所有外围块都被断电,因此我建议在与SPI块交互的同时将设备保持在活动模式。

谢谢,PM_DIALOG.