你好
我愿意把我的设备在延长睡眠free_rtos由于闲置的任务。现在我面临着一些问题。
我的代码是基于对话框的示例代码。系统启动,freertos开始,任务被正确加载。
我运行一个循环在我眨眼的主要任务导致检查系统是活着,执行一个1秒的睡眠。
我可以跟踪系统直到用水正常执行。那时候关闭,关闭呼吸计时器。
注射用水的退出,呼吸计时器不起床。
目前breath_config breath_cfg hw_led_set_ledX_src (…), hw_breath_init (&breath_cfg);和hw_breath_enable ();都是位于prvSetupHardware。如果我把这些放在periph_init,甚至根本没有led点亮活动或空闲模式。
你能确认给我吗
——呼吸定时器的初始化序列是什么?
——在睡眠时呼吸计时器寄存器被保留?
——呼吸定时器状态和依赖关系正在由目前的固件?
调试等情况下的步骤是什么?
提前谢谢你
致以最亲切的问候
关键词:
设备:
你好,
我可以知道代码基于示例代码,和你有什么修改吗?是你正在实施的功能使得外部自动呼吸功能了吗?
领导的呼吸功能,下面的代码显示了一个例子:
breath_config配置= {
.dc_min = dc_min,
.dc_max = dc_max,
.dc_step = dc_step,
.freq_div = freq_div,
.polarity = HW_BREATH_PWM_POL_POS
};
/ *
*设置呼吸定时器配置,所以硬件可以自动驱动LED。
* /
hw_breath_init(配置);
/ *
*设置LED1输出的计时器。
* /
hw_led_set_led1_src (HW_LED_SRC1_BREATH);
hw_led_enable_led1(真正的);
/ *
*然后开始呼吸计时器。
* /
hw_breath_enable ();
更多细节可以发现peripherals_demo的SDK。
你好
我的代码是基于freertos_retarget源代码。
我用你给我什么
静态孔隙prvSetupHardware(空白)
{
/ /激活中断
....
breath_config breath_cfg = {
/ /光功率.dc_min = 9日- 1
.dc_max = 10 / /光功率设置为10/255
.dc_step = 255,
.freq_div = 255,
.polarity = HW_BREATH_PWM_POL_POS
};
/ *初始化硬件(OTPC、缓存、ADC、DCDC、USB垫,射频,适配器,公共汽车、设备、监督)* /
pm_system_init (periph_init);
/ /初始化中断控制器
hw_wkup_init (&wkup_cfg);
/ /配置LED1,红色
hw_led_set_led1_src (HW_LED_SRC1_BREATH);
hw_led_enable_led1(假);
/ /配置LED2,绿色
hw_led_set_led2_src (HW_LED_SRC2_BREATH);
hw_led_enable_led2(真正的);
/ /配置LED3,蓝色
hw_led_set_led3_src (HW_LED_SRC3_BREATH);
hw_led_enable_led3(假);
/ /配置呼吸计时器所需RGB Led
hw_breath_init (&breath_cfg);
hw_breath_enable ();
}
如果我把前面的代码放在periph_init,不点亮led。
起床后extended_sleep远离。
提前谢谢你
似乎比领导更深层的问题。
注射用水后睡觉前:0 x50000066 = 0 x3和之后pm_system_wake_up 0 x50000066 = 0 x2。
数据表指出安全引导(我测试生产模式与监管机构在使用但没有安全引导)。
其他提示睡前0 x500030d0 = 0, 0 x500030d0 = 1后睡觉。看来,这个功能不是起床后恢复正常。
下一个提示是0 x50000022 = 0 x54b7睡眠之前,0 x54b6后睡觉。RC16停止在延长睡眠,而不是重新启动。DCDC依赖它在行动中被杀。(0 x5000002a = 0 x20d2后睡眠:1 v8和1 v8p下来)
我试图把系统停止使用DCDC dg_configUSE_DCDC = 0。
结果0 x50000022 = 0 xe7d3之前和之后的睡眠。我没有更多的睡眠后崩溃。
但我仍然没有领导
新的提示。LED_CONTROL_REG sys_tcs全被抹去了。如果y在periph_init做把我领导的来源,然后被sys_tcs在引导和唤醒。
我不使用OTP,为什么这个寄存器是唯一一组在这两个时刻sys_tcs ?
虽然看附录H - b - 044, LED_CONTROL_REG似乎是在生产过程中使用。
你能请检查这个freertos_retarget DA14683上运行示例代码?
现在我不能用睡眠模式。我的产品的能源是至关重要的。
谢谢你!
嗨,鲍勃,
你能试着去实现它在任何的祝福SDK的例子使用睡眠模式?你如何测试设备无法睡觉?你在periph_init配置是也?
谢谢,PM_Dialog
你好
我没有时间使用祝福我的原型。BSP相当大现在已经搬走了,因为这集成蓝牙并不在我们的最小可行产品。
periph_init目前只有GPIOs /配置,GPIO高/低一些,在执行过程中是固定的,现在呼吸定时器初始化。
我设法睡扩展工作:
——通过禁用DCDC
- - >你能证实我为什么RC16停止在睡眠中,而不是重新启动吗?
——通过移除sys_tcs电源管理。
- - >你能证实我如何把它阻止重载LED_CONTROL_REG OTP重置价值(0 x80) ?(在一个定制的董事会DA14683 OTP从未使用过)
——通过移动呼吸计时器periph_init init /配置
- - >领导是在睡眠期间关闭。因此我只能使用在执行时间。
通过使用一个简单的循环的主要任务
如果我做负载比主循环代码我做各种崩溃/问题:
——如果我使用hw_i2c
- - >硬故障。(我需要搬到ad_i2c重新加载控制器状态唤醒后)。
——如果UART接收数据时,CPU是睡觉还是睡觉(我认为外部调制解调器发送时钟更新)
- - >打破UART的中断处理程序位于HW_UART_INT_BUSY_DETECTED。我能看到评论RBR_THR_DLL有关的代码。如果你有任何主意,我将高兴。
——UART错过一些外部调制解调器通讯我的程序不正确的行为。
- - >我需要硬件流控制在这里,但是我的硬件是不可以。如果你有一个参考实现的异步通信使用硬件流控制UART,我会很高兴。我目前在一个线程等待数据轮询ad_uart_read沟通与外部调制解调器但似乎它错过一些字节。
可能将会有更多的麻烦与睡眠功能。到目前为止我不能可靠地使用它。
提前谢谢你
你好
我搬到我的代码从hw_i2c ad_i2c。我这边没有更多问题。
在UART方面,
——我残疾水平换档器,为外部调制解调器在睡眠期间所以我没有消息在睡眠中。这不会改变任何事情。
——我使用一个JTAG探针检查上下文的休息。看来,问题是有关uart控制台,因为我的代码不使用异步通信所以不上生成IRQ uart我使用外部调制解调器与我沟通。我得到的唯一IRQ从控制台服务。
你能请解决以下吗?
- RC16 / DCDC唤醒后关闭
——从OTP sys_tcs重载值而不使用OTP
——在__BRK控制台服务中断的结局
提前谢谢你
嗨,鲍勃,
对不起,我有点困惑。我强烈建议你不要修改SDK文件。hw_i2c是低水平的司机(LLD)和ad_i2c是I2C的适配器。我强烈推荐使用适配器e推荐使用适配器来访问硬件外设,因为不仅提供外围,也确保其他任务目前访问它,停止操作,直到外围再次释放。所以你不需要担心,如果另一个任务同时访问相同的外围。另外,在睡眠模式关闭所有外围模块。
谢谢,PM_Dialog
你好
你能请看看以下吗?
1。控制台服务生成uart __BRK中断结束。这个问题发生当我做激活睡眠延长。
Hardfault分析:
- LR指向UART_Interrupt_Handler (HW_UART1)用于控制台服务。
——电脑点CONFIG_UART_IGNORE_BUSY_DETECT在空白UART_Interrupt_Handler (HW_UART_ID uart)
我没有尝试使用dma uart的配置。没有变化。
2。从OTP sys_tcs重载值虽然没有使用OTP。这个问题是要解决以避免修改BSP文件。
——看我之前的分析。我可以算出使用一个JTAG探针LED_CONTROL_REG是唯一由sys_tcs_apply寄存器加载(tcs_system);功能。重新加载值是0 x80。明确保留我的led灯的状态。
3所示。RC16 / DCDC唤醒后关闭。ldo可以做这项工作,直到延长睡眠可以用于DCDC启用。
这里我只看到之前/之后睡眠RC16趋于零,永远不会回到1。第六章在DS v3.1规范,DCDC依靠RC16所以不能起床后还活着。
提前谢谢你
你好
新的硬故障:我得到一个新的ad_gpadc_read睡眠发生后()。我检查了GPADC寄存器和它们在复位状态。
你能确认
睡眠模式后——所有适配器测试过吗?
——我可以有适配器“开放”函数在构造函数?
——我不需要再次调用“开放”在正常操作。(这包括唤醒后)?
提前谢谢你
嗨,鲍勃,
我很困惑你所做的更改。
我的建议是阅读嗯- b - 044: DA1468x软件平台参考和嗯- b - 056: DA1468x软件开发人员指南为了理解SDK的架构。你还可以找到“适配器”“教程”一节中的例子DA1468x支持门户。
谢谢,PM_Dialog
你好
你能发射freertos_retaget,照亮一个领导和激活extended_sleep DA14683 (printf /控制台重定向到一个uart, dcdc和dma启用)?
——睡前LED_CONTROL_REG的价值是什么?后吗?
-什么是睡前RC16使钻头的价值?后吗?DCDC还活着吗?
谢谢你的建议的阅读手册,但它看起来像虫子在SDK和我将高兴你检查它在你身边。我从董事会支持包获得困难的缺点。
谢谢你!
你好
好消息。我终于设法让睡眠功能工作没有崩溃。
我打3.3 v的BOD,因为在保留LDO电源故障。
事情好激活后闪1 v8关掉特性从而卸货3 v3 RET LDO。
坏消息n°1。系统停止几分钟后睡觉。没有发现故障。
坏消息n°2。我还是打3 v3的BOD如果我做使外围设备。
你知道什么是3.3 v RET LDO的功率预算在延长睡眠(请不要回答10马附有很多东西)?
我有1.2 ma v8p 1日和300年3日µa v3理论绝对最大但启用睡眠时我做了BOD和结束加电复位。
谢谢你!
你好
我终于设法解决最后一个问题
——我必须手动驱动开关extended_sleep在一个时刻,我知道没有什么是发生在系统(和在控制台上!)。我也不得不管理手动切换到空闲模式避免小睡在正常操作(如睡在等待一个适配器的事件)。
——我不得不提高了电容器VBAT 20µf避免BOD 3 v3(峰值电流在唤醒了VBAT掉下来)。
——我的一个外部周边消耗1日8马v8p完全关闭模式。不好用10马预算!我不得不重置后操作让它消耗,少睡觉。
——系统没有旋律睡觉的任务没有pm_set_wakeup_mode(真正的)激活。没有它我困在睡眠系统稳定,但什么也不做。
最后的旅程似乎工作但睡眠模式
——我不了重载OTP值从电源管理器,因为sys_tcs_apply (tcs_system);重载LED_CONTROL_REG periph_init后执行。
我请再次帮忙至少OTP问题所以我可以发布一个版本没有修改负载支持包文件。
谢谢你!