嗨,对话框中,
我正在使用无代码AT命令,通过从PC发送AT命令,将数据从传感器发送到智能手机。
我面临的问题是,一旦它睡着了,我就无法唤醒它。因此,当我运行调试会话时,如果串行监视器(比如terterm)还没有打开,那么芯片就会进入睡眠状态,停止对任何东西做出响应。所以当我运行调试会话时,如果串行监视器是打开的,并且我很快发送AT命令,那么设备就会开始响应,然后如果我发送AT+SLEEP=1,那么它再次进入睡眠状态,没有什么能唤醒它。我试着发送@、AT和其他大多数字符。
我使用的是村田型ZF设计套件。
我想帮助调试通过通过代码无代码AT的代码。
关于代码结构的细节,以及关于代码的任何其他信息都将非常有帮助。
你能帮我一下吗?
提前谢谢。
设备:
嗨krishnanag,
我无法复制你的问题,你能把你正在做的程序弄干净吗?我已经测试过了,我能够从睡眠中唤醒芯片。当您热连接调试器时,设备无法唤醒?你能先看看无代码教程吗?
https://support.dialog-semiconductor.com/resource/codeless-tutorial-html
谢谢,PM_Dialog
谢谢你的回复。
我已经看了教程,我现在正在做的正是他们说的,通过使用智能片段,加载固件和下载到板。它仍然不起作用。所以我把固件下载到板上,然后打开串口显示器,发送AT, @任何东西都没有反应。
为了查看是否睡眠是问题,我在user_codeless.c中注释了prepare_sleep()函数中的arch_set_extended_sleep()。所以当这个函数被调用时,它并没有让它休眠。然后是我加载代码和启动串行监视器,一切工作正常。所以问题出在睡眠中无法醒来。
UART工作得很好,因为当它不睡觉时,它工作得很好。然后它通过UART接收@而没有响应?我不明白发生了什么事。
主板为muRata P2ML3656,子板为P2ML3599。我使用的无代码版本是Codeless20170609_beta1。这是为DA14580编程。
我注意到的另一件事是,当无代码工作时,即AT命令得到响应,引脚GPIO 0_4和GPIO 0_5的电压变化,表示传输。当我把AT+SLEEP=1,然后这些电压不再变化时,字符被发送。那么,是否有可能这些引脚是UART1,如果UART2接收到信号,并且UART2引脚配置错误,就会发生中断?
如果有,请告诉我如何正确配置它,因为在user_peripher_setup .c中,没有UART引脚的配置,所以这些定义在哪里?
我已经附上了hex文件。
谢谢
我还注意到一件事。
当我加载固件并在10秒内发送UART字符时,AT命令得到响应。所以我监控权力配置文件使用智能片段电力分析器,奇怪的是,当芯片是活跃的,应对在命令时,平均180微安培电流,当我把+睡眠= 1,那么当前消费增加到250微安培。这是怎么发生的?
嗨krishnanag,
请问您是否在使用无代码项目的默认固件?你到底修改了没有?正如我在之前的文章中提到的,我能够通过UART唤醒发送任何字符的芯片,并一步一步地遵循无代码教程。当您通过UART发送“@”时,您的代码有什么行为?你试过在调试模式下运行它,以检查是否WDOG或NMI命中?关于您的第二个线程,您不应该在入睡时增加功耗。我无法复制你的问题,所以你能把你正在遵循的程序弄干净吗?
谢谢,PM_Dialog
你好,
这里是链接到zip文件夹的无代码,我正在使用。
https://drive.google.com/open?id=1W33bttrB1EoPvqXDgOibp-7jApdyLtWI
这是一个keil项目,所以我在keil环境中打开这个,并建立目标。然后,我采取的十六进制文件已经建立,并下载这个固件到板使用智能片段完全告诉在教程。但是在教程中有一个硬件设置部分,说明了在proKit或基本工具包中要做什么,但我的是murata typeZF工具包和跳线配置完全不同,因此我没有改变任何东西,就硬件而言。我一下载固件到芯片上,就打开terterm,用本教程中提到的波特率和其他设置设置串口,开始发送字符。这是我遵循的程序。
当您试图复制这个问题时,您是否在murata typeZF套件上尝试过,带有我提到的主板编号?是我的硬件配置有问题吗?
此外,正如我告诉GPIO引脚p_04和p_05在给定sleep命令时没有显示信号。所以,我想这些角色甚至都不会去棋盘上。所以,当UART功能本身不工作时,我怀疑板子没有接收到@字符。因此,我也怀疑UART配置是否需要更改。
我尝试过调试模式,但我是一个初学者,我不确定如何检查是否WDOG或NMI点击,或它们指示什么,我会尝试查找,如果你有任何参考,请让我知道。
谢谢
嗨krishnanag,
我从你发布的链接下载了你的项目,我使用了村田板,但我不能复制你的问题。另外,我没有在电路板上做任何硬件修改或跳线配置。你能解释一下你的问题是什么吗?您是否能够从终端发送任何其他AT命令而无法唤醒?为了获得关于调试过程的知识,请查看教程8:门户页面中的调试方法。
https://support.dialog-semiconductor.com/resource/tutorial-8-debugging-methodsv11
谢谢,PM_Dialog
你好,
非常感谢您提供的调试链接。我会试着照着做,试着找出问题所在。
我很惊讶你不能复制这个问题。我所遵循的程序与我在答复中提到的完全一致。一旦它进入睡眠状态,就好像UART关闭了。之后就没办法了。甚至没有字符通过UART,因为GPIO p04和p05引脚在睡眠后没有显示电压变化。
我附上一张我设置的照片。请确认是否有一些跳线配置不一样
嗨krishnanag,
请注意,当您使用无代码项目时,设备能够唤醒从UART接收到的每个字符,而不仅仅是' @ '。在芯片进入睡眠状态前,能否请您确认一下AT命令是否都工作正常?你自己的问题是什么时候设备进入睡眠模式?你怎么知道在那之后什么都不能正常工作?你是否使用功率分析器来检查580是否在广告或它是否仍处于睡眠模式?你希望看到什么?我确认你的跳线配置,我的跳线位置和你的一样。
谢谢,PM_Dialog
是的,在芯片进入休眠状态之前,所有AT命令都能正常工作。我没有检查I2Cwrite或read命令,因为我现在没有传感器。
除此之外,一切正常。当它进入睡眠状态时,如果我通过UART发送一个字符,它不会给出响应。当它醒来时,我希望在串行监视器上看到一些东西。
我没有使用功率分析器来查看它是否仍然是广告,因为我不知道功率分析器中发生了什么。正如我提到的,一旦它进入睡眠状态,当前的消耗就会因为某些原因而增加,所以我不理解功率分析器中发生了什么。但是,我能够看到BLE android应用程序中的无代码广告,当它是活跃的,但当它进入睡眠,它停止检测无代码,这意味着它已经停止广告。甚至在用UART发送任何字符时,问题也是一样的。
嗨krishnanag,
我无法复制你的问题。能否从SDK的默认示例下载固件?你也面临同样的问题吗?例如,如果您运行ble_app_sleepmode项目,当设备进入睡眠时,当前的消耗仍然增加?此外,我建议您使用Smart Snippet的功率分析器来检查设备是否发布广告/注意设备在发布广告和连接间隔之间进入休眠状态。
谢谢,PM_Dialog