当DA14580作为spi从机接收或发送时,是否应禁用系统睡眠?

⚠️
您好,谢谢您来到论坛。令人兴奋的消息!我们正在迁移到新的论坛平台,该平台将提供更好的功能,并包含在主对话网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量-请在//www.xmece.com/support.我们将在未来几天内修复bug/优化搜索和标记。
9个帖子/ 0新
最后一篇文章
CGHA.
离线
最后一次露面:5个月2周前
加入:2016-03-23 13:05
当DA14580作为spi从机接收或发送时,是否应禁用系统睡眠?

我想将da14580实现为spi从机,并使用额外的2个引脚进行传输流控制,1个引脚用于主-从数据irq(M2S_irq_引脚),1个引脚用于从-主irq(S2M_同步_引脚)。主设备或从设备可以随时启动spi传输。当主从irq断言时,它应该等待从S2M_sync_引脚断言以指示从机已准备好接收数据。

1.当我将da14580 spi初始化为从并等待spi主机启动spi传输时,我是否应该调用arch_disable_sleep(),当传输完成时调用arch_set_extended_sleep()?

2.wkupct_enable_irq是否随时工作?分配给唤醒的引脚是否可以在任何时候(当系统处于睡眠、空闲、活动模式时)生成中断?因为spi主机希望将数据传输到da14580(断言M2S_irq),它不知道da14580处于活动模式还是睡眠模式,但当spi主机断言m2s_irq_引脚时,从机应随时准备spi数据传输。

3.由于M2S_irq_引脚将唤醒DA14580,我是否应该启用外部_唤醒预处理器?

设备:
PM_DIALOG.
离线
最后一次露面:3天19小时前
工作人员
加入:2018-02-08 11:03
你好,cgha,

你好,cgha,

感谢您的在线查询。老实说,我不完全确定您想要完成什么。据我所知,您想将DA14580配置为SPI从设备,并通过M2S_irq_引脚将其唤醒?请注意,当设备处于睡眠模式时,所有外围设备模块都断电,因此芯片应在活动模式下运行e、 如果您使用唤醒控制器来捕捉M2S_irq,这将在任何时候都起作用。但是,为您所做的工作提供更多的输入将非常有帮助。

谢谢,PM_DIALOG.

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

是的,当spi主机希望通过spi发送数据时(无论DA14580处于睡眠模式还是活动模式),我想使用M2S_irq_引脚唤醒DA14580,当DA14580准备接收数据时,它在S2M_irq_引脚活动的情况下确认外部mcu,然后外部mcu发送数据。过程如下:

DA14580正在播发或已断开连接,但未播发或已连接,应用程序在启用深度睡眠或ext睡眠的情况下运行:

1.SPI_主机(外部mcu)要发送数据,请将M2S_irq_引脚置于高位。

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

3.SPI_从机将其自身初始化为SPI_从机,并确认S2M_irq_引脚为高电平。

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.
离线
最后一次露面:5个月2周前
加入:2016-03-23 13:05
现在我只能得到第一个

现在我只能获得第一个引脚中断并获得第一个数据包,当SPI母版想要发送第二数据包时,DA14580似乎无法再次获得引脚中断。

PM_DIALOG.
离线
最后一次露面:3天19小时前
工作人员
加入:2018-02-08 11:03
你好,cgha,

你好,cgha,

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

谢谢,PM_DIALOG.

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

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

(void){若(packetLen==13&&spiIsInited){全球范围内的互联网禁用();而(packetLen){而(packetLen){当(0xFF和获取比特16(SPI(SPI)和比特16(SPI(SPI)和比特16(若)若(若)若(若)若(若)若(若)若(若(packetLen)是)处理处理处理者)处理处理者)处理者(void)(void)(void)(void)(void)(void)(void)(void)处理者)(void)(void)(void)处理处理者)(void)(void)(void)(void)(void)处理处理处理处理处理者)(void)(void)(void)(void)(void)(void)(void)(void)(void)(void)(void)(void)(void)(void)(poid)(poid)(poid)(poid)(poid)若)清除整流罩,0x01);如果(packetLen){packetLen--if(packetLen==0){SPI_Transfer_IRQ_Off();newpacketlen=1;rcvedCnt++;}}}}}//GLOBAL_INT_RESTORE();}

PM_DIALOG.
离线
最后一次露面:3天19小时前
工作人员
加入:2018-02-08 11:03
你好,cgha,

你好,cgha,

老实说,我无法理解您希望如何在M2S_irq_引脚中断检测时唤醒设备。您是否配置了唤醒控制器?只有唤醒控制器才能唤醒芯片。

谢谢,PM_DIALOG.

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

现在唤醒工作了,那么我需要在spi传输时调用arch_disable_sleep(),还是在spi传输时保持ble打开?

PM_DIALOG.
离线
最后一次露面:3天19小时前
工作人员
加入:2018-02-08 11:03
你好,cgha,

你好,cgha,

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

延长睡眠模式:只有SystemRAM 42kB和RetentionRAM保持打开状态。

深度睡眠模式:只有RetentionRAM保持打开状态。必须烧掉OTP才能测量深度睡眠电流。

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

谢谢,PM_DIALOG.