我想实现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以来预处理器会唤醒?
设备:
嗨cgha,
谢谢你的在线调查。老实说,我不完全确定你你想完成什么。据我理解,你想配置DA14580 SPI奴隶和通过M2S_irq_pin叫醒它吗?请注意,当设备处于睡眠模式,关闭所有外设模块,芯片应该积极运作n模式。如果你使用唤醒控制器为了赶上M2S_irq,这将在任何时间工作。然而,这将是非常有用的为你正在做的事情提供我更多的输入。
谢谢,PM_Dialog
是的,我想使用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低。
现在我只能得到第一销中断,得到第一个数据包,当spi主想要发送第二包,da14580似乎得不到销再次中断。
嗨cgha,
因为你发送第二次中断,请添加一个断点在唤醒控制器回调函数,以检查是否达到?配置一个唤醒销,请看看ble_app_sleepmode SDK的例子>你使用相同的代码架构吗?
谢谢,PM_Dialog
现在可以进入回调。我应该叫int_enable销后再高的函数。但spi失去了一些字节之后的某个时候我发送几十个包。SPI_Handler似乎不能很快得到字节。主速度大约是250 k个基点。
嗨cgha,
说实话,我不能理解你想唤醒你对M2S_irq_pin中断检测设备。你配置唤醒控制器了吗?只有唤醒控制器能唤醒芯片。
谢谢,PM_Dialog
现在,唤醒工作,所以我需要叫arch_disable_sleep()当spi转让?或我应该保持当spi输送的祝福吗?
嗨cgha,
arch_disable_sleep()禁用所有睡眠模式,所以系统在主动/空闲模式。DA14580有2个睡眠模式:
延长睡眠模式:只有SystemRAM 42 kb & RetentionRAM保持开启。
深度睡眠模式:只有RetentionRAM仍然开启。烧毁的OTP必须能够测量深度睡眠电流。
在两个的睡眠模式,所有外围模块包括SPI块和RF屏蔽动力,所以我建议保持设备在主动模式与SPI交互块。
谢谢,PM_Dialog