我想将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,我是否应该启用外部_唤醒预处理器?
设备:
你好,cgha,
感谢您的在线查询。老实说,我不完全确定您想要完成什么。据我所知,您想将DA14580配置为SPI从设备,并通过M2S_irq_引脚将其唤醒?请注意,当设备处于睡眠模式时,所有外围设备模块都断电,因此芯片应在活动模式下运行e、 如果您使用唤醒控制器来捕捉M2S_irq,这将在任何时候都起作用。但是,为您所做的工作提供更多的输入将非常有帮助。
谢谢,PM_DIALOG.
是的,当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。
现在我只能获得第一个引脚中断并获得第一个数据包,当SPI母版想要发送第二数据包时,DA14580似乎无法再次获得引脚中断。
你好,cgha,
由于您发送第二个中断,请您可以在唤醒控制器回调函数中添加断点,以检查是否匹配?要配置唤醒引脚,请查看SDK>的BLE_APP_SLEEPMODE示例>您是否使用了相同的代码架构?
谢谢,PM_DIALOG.
现在它可以输入回调。在PIN再次高度后,我应该调用INT_ENABLE函数。但是,在发送数十个数据包后,SPI丢失了一些字节。SPI_Handler似乎无法快速获得字节。主速度约为250k bps。
你好,cgha,
老实说,我无法理解您希望如何在M2S_irq_引脚中断检测时唤醒设备。您是否配置了唤醒控制器?只有唤醒控制器才能唤醒芯片。
谢谢,PM_DIALOG.
现在唤醒工作了,那么我需要在spi传输时调用arch_disable_sleep(),还是在spi传输时保持ble打开?
你好,cgha,
arch_disable_sleep()禁用所有睡眠模式,因此系统仅在活动/空闲模式下运行。DA14580有两种可用的睡眠模式:
延长睡眠模式:只有SystemRAM 42kB和RetentionRAM保持打开状态。
深度睡眠模式:只有RetentionRAM保持打开状态。必须烧掉OTP才能测量深度睡眠电流。
在这两种睡眠模式中,包括SPI块和RF块在内的所有外围块都已断电,因此我建议在与SPI块交互时将设备保持在活动模式。
谢谢,PM_DIALOG.