我应该禁用系统睡眠当DA14580作为spi接收或传输是奴隶?

⚠️
大家好. .谢谢光临论坛。令人兴奋的消息!我们现在在移动的过程中,我们的新论坛平台,将提供更好的功能和包含在主对话框的网站。所有文章和帐户已经被迁移。我们现在只接受交通新论坛,请发布任何新的线程//www.xmece.com/support。我们将修复bug /优化搜索和标签在接下来的日子里。
9新职位/ 0
最后发表
cgha
离线
最后看到:10个月3天前
加入:2016-03-23 13:05
我应该禁用系统睡眠当DA14580作为spi接收或传输是奴隶?

我想实现da14580 spi的奴隶,并使用额外的2针传输流量控制,1针主人奴隶数据irq (M2S_irq_pin)和1销奴隶主人irq (S2M_sync_pin)。主人或奴隶随时可以开始spi转移。当主人奴隶irq断言,它应该等待奴隶S2M_sync_pin断言表明奴隶准备接收数据。

1。我应该调用arch_disable_sleep()当我请来da14580 spi作为奴隶和等待spi主开始spi转移,并调用arch_set_extended_sleep()时的转移已经完成了吗?

2。随时wkupct_enable_irq作品吗?可以分配给唤醒的销生成中断在任何时候(当系统在睡眠、空闲活动模式),?因为当spi主想传输数据da14580(断言M2S_irq),它不知道da14580是否在主动模式或睡眠模式,但奴隶应该随时准备spi数据传输时,spi主m2s_irq_pin断言。

3所示。我应该使EXTERNAL_WAKEUP DA14580 M2S_irq_pin以来预处理器会唤醒?

设备:
PM_Dialog
离线
最后看到:5天21小时前
工作人员
加入:2018-02-08 11:03
嗨cgha,

嗨cgha,

谢谢你的在线调查。老实说,我不完全确定你你想完成什么。据我理解,你想配置DA14580 SPI奴隶和通过M2S_irq_pin叫醒它吗?请注意,当设备处于睡眠模式,关闭所有外设模块,芯片应该积极运作n模式。如果你使用唤醒控制器为了赶上M2S_irq,这将在任何时间工作。然而,这将是非常有用的为你正在做的事情提供我更多的输入。

谢谢,PM_Dialog

cgha
离线
最后看到:10个月3天前
加入:2016-03-23 13:05
是的,我想用m2

是的,我想使用M2S_irq_pin唤醒DA14580 spi主想要发送数据时通过spi(如果DA14580是否在睡眠模式或主动模式),当DA14580准备接收数据时,它与S2M_irq_pin ack外部单片机活跃,那么外部单片机发送数据。这个过程如下:

DA14580没有广告或广告或断开连接,应用程序启用深度睡眠或睡眠ext启用:

1。SPI_MASTER(外部单片机)想要发送数据,把M2S_irq_pin高。

2。通过M2S_irq_pin SPI_SLAVE (DA14580)销中断

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低。

6。SPI_SLAVE S2M_irq_pin低。

cgha
离线
最后看到:10个月3天前
加入:2016-03-23 13:05
现在我只能获得第一

现在我只能得到第一销中断,得到第一个数据包,当spi主想要发送第二包,da14580似乎得不到销再次中断。

PM_Dialog
离线
最后看到:5天21小时前
工作人员
加入:2018-02-08 11:03
嗨cgha,

嗨cgha,

因为你发送第二次中断,请添加一个断点在唤醒控制器回调函数,以检查是否达到?配置一个唤醒销,请看看ble_app_sleepmode SDK的例子>你使用相同的代码架构吗?

谢谢,PM_Dialog

cgha
离线
最后看到:10个月3天前
加入:2016-03-23 13:05
不,它不能进入

现在可以进入回调。我应该叫int_enable销后再高的函数。但spi失去了一些字节之后的某个时候我发送几十个包。SPI_Handler似乎不能很快得到字节。主速度大约是250 k个基点。

空白SPI_Handler(空白){如果(packetLen = = 13 & & spiIsInited) {/ / GLOBAL_INT_DISABLE ();而(packetLen){而(0 xff&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 + + = 0 xff&getword16 (SPI_RX_TX_REG0);SetWord16 (SPI_CLEAR_INT_REG 0 x01);如果(packetLen) {packetLen——;如果(packetLen = = 0) {SPI_Transfer_IRQ_Off ();newPacket = 1;rcvedCnt + +; } } } } //GLOBAL_INT_RESTORE(); } }

PM_Dialog
离线
最后看到:5天21小时前
工作人员
加入:2018-02-08 11:03
嗨cgha,

嗨cgha,

说实话,我不能理解你想唤醒你对M2S_irq_pin中断检测设备。你配置唤醒控制器了吗?只有唤醒控制器能唤醒芯片。

谢谢,PM_Dialog

cgha
离线
最后看到:10个月3天前
加入:2016-03-23 13:05
现在工作,所以我需要

现在,唤醒工作,所以我需要叫arch_disable_sleep()当spi转让?或我应该保持当spi输送的祝福吗?

PM_Dialog
离线
最后看到:5天21小时前
工作人员
加入:2018-02-08 11:03
嗨cgha,

嗨cgha,

arch_disable_sleep()禁用所有睡眠模式,所以系统在主动/空闲模式。DA14580有2个睡眠模式:

延长睡眠模式:只有SystemRAM 42 kb & RetentionRAM保持开启。

深度睡眠模式:只有RetentionRAM仍然开启。烧毁的OTP必须能够测量深度睡眠电流。

在两个的睡眠模式,所有外围模块包括SPI块和RF屏蔽动力,所以我建议保持设备在主动模式与SPI交互块。

谢谢,PM_Dialog