硬件故障进入长时间睡眠

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.xmece.com/support.我们将在未来几天修复bug /优化搜索和标记。
9个帖子/ 0个新
最后发表
韩国乐团
离线
最后看到:三个月三个星期前
加入:2018-06-15 13:14
硬件故障进入长时间睡眠

嗨,对话框中,

我目前在一个项目中使用这两种uart。
我创建了两个任务,它们持续调用ad_uart_read,超时时间为1000ms,以填充缓冲区。
所有工作正常,直到我启用extended_sleep。

从那时起,我就遇到了由ad_uart_signal_event_read函数调用的硬错误处理程序。
到目前为止我一直在努力
-使用pm_stay_alive与UART设备通信和pm_resume_sleep当我完成这个。我还实现了一个方法,等待两个任务停止调用ad_uart_read保存没有读取操作正在进行时,进入睡眠。相同的结果。
-打开和关闭uart之前,每个读和写操作。相同的结果。
-禁用一个任务的测试目的,如果我禁用uart1-使用任务问题消失。

我已经读到DA14580有两个不同实现的驱动程序的uart1和uart2,这对我的DA14680重要吗?

你有什么建议能帮我解决这个问题吗?

设备:
PM_Dialog
离线
最后看到:6小时42分钟前
工作人员
加入:2018-02-08 11:03
你好韩国乐团,

你好韩国乐团,

使用pm_stay_alive有什么特殊原因吗?由于存在UART活动,设备将不会进入睡眠模式。你能解释一下你从哪里得到的硬件故障吗?PC和LR在哪个位置?.此外,我强烈建议您看一下第12.3.1章的UART适配器示例UM-B-044用户手册:DA1468x软件平台参考(HTML)从我们的支持门户。

谢谢,PM_Dialog

韩国乐团
离线
最后看到:三个月三个星期前
加入:2018-06-15 13:14
嗨PM_Dialog,

嗨PM_Dialog,

我使用pm_stay_alive,因为我认为问题将在UART Rx进行时休眠。如果没有pm_stay_alive和pm_resume_sleep,问题将继续存在。
请查看我所附的图像,您可以看到PC指向ad_uart_signal_event_read()在行OS_EVENT_SIGNAL_FROM_ISR(cd->device->bus_data->event_read);.
对于PC它是地址0x800cf1c和LR它是0x8009841(函数:static void hw_uart_fire_callback(UART_Data *ud))。
以下是导致Hardfault的简化任务:

UART_BUS(UART1, uartex, HW_UART_BAUDRATE_9600, HW_UART_DATABITS_8, HW_UART_PARITY_NONE,
Hw_uart_stopbits_1, 0,0, hw_dma_channel_1, hw_dma_channel_0,0,0)

空白rx_task (void * params)

uart_dev = ad_uart_open (uartex);
uint8_t buf [1];
而(1){
int r = ad_uart_read(uart_dev, buf, 1, OS_MS_2_TICKS(1000));
If (r != 1) {
//没有收到任何东西
继续;

//如果接收到任何东西,把它放在缓冲区中

我读过UART示例,我写过当我从UART1和UART2中读取时出现问题,但当我用几乎相同的UART1和UART2的读取任务仅从UART2中读取时就不存在问题

编辑:在每个ad_uart_write_async和ad_uart_read之前和之后使用ad_uart_bus_acquire和ad_uart_bus_release不会改变任何东西。

附件:
PM_Dialog
离线
最后看到:6小时42分钟前
工作人员
加入:2018-02-08 11:03
你好韩国乐团,

你好韩国乐团,

根据数据表,UART2用一个16字节深度的FIFO实现硬件流控制,所以你不能将它配置为软件UART。UART1支持软件实现。这意味着你不能通过UART1唤醒,因为它不支持RTS/CTS。通常,由于设备进入睡眠状态,您不能使用UART1。如果你禁用睡眠模式,你可以让我知道,如果你得到相同的错误,当你试图阅读超过UART1?如果您能够提供任何类型的配置或正在使用的任何代码片段,这将非常有帮助。

谢谢,PM_Dialog

韩国乐团
离线
最后看到:三个月三个星期前
加入:2018-06-15 13:14
嗨PM_Dialog,

嗨PM_Dialog,

如果我关闭睡眠模式,一切运行正常。
我不需要UART处于睡眠模式。这意味着我不在乎在睡眠模式下丢失数据,但不幸的是,设备崩溃了。
正如我所说的,除了变量名之外,您可以复制我上面的文章中的代码用于UART1和2。这是唯一一段产生错误的代码。
如果我取消启动rx_task的注释,它就不会崩溃。我的平台-设备如下所示:

UART_BUS(UART1, uartex, HW_UART_BAUDRATE_9600, HW_UART_DATABITS_8, HW_UART_PARITY_NONE,
Hw_uart_stopbits_1, 0,0, hw_dma_channel_1, hw_dma_channel_0,0,0)

UART_BUS(UART2, uartey, HW_UART_BAUDRATE_9600, HW_UART_DATABITS_8, HW_UART_PARITY_NONE,
hw_uart_stopbits_1,0,1, hw_dma_channel_3, hw_dma_channel_2, 0,0)

你有什么想法吗?

韩国乐团
离线
最后看到:三个月三个星期前
加入:2018-06-15 13:14
你好再次,

你好再次,

如果我的UART设备在DA处于睡眠模式时仍向我发送数据,会不会有问题?
我不能强迫他们停止发送数据,我想念他们也不是坏事。

看到附加的最小化固件,我用来测试这个。
固件正在devkit上工作,因为在睡眠模式下没有UART设备向DA发送数据。

附件:
PM_Dialog
离线
最后看到:6小时42分钟前
工作人员
加入:2018-02-08 11:03
你好韩国乐团,

你好韩国乐团,

正如之前提到的,你不能通过UART1醒来,因为它不支持RTS/CTS。这就是为什么如果你关闭睡眠模式,一切都运行良好。如果设备进入睡眠模式,那么所有外设(包括UART块)都将通电,并且在设备醒来后不会有UART活动。如果您正在使用适配器,如果您有挂起的UART事务,DA1460将处于活动模式,而当UART事务结束时,设备将进入睡眠模式。因此,如果芯片处于睡眠模式,就不可能有UART事务。

谢谢,PM_Dialog

韩国乐团
离线
最后看到:三个月三个星期前
加入:2018-06-15 13:14
嗨PM_Dialog,

嗨PM_Dialog,

我明白这一点。我不需要一觉醒来就收到那些信息。问题仍然是,设备由于某些原因硬件故障,因为UART想要触发一个“空”读事件,就像我之前写的那样。

问候

PM_Dialog
离线
最后看到:6小时42分钟前
工作人员
加入:2018-02-08 11:03
你好韩国乐团,

你好韩国乐团,

你能澄清你的意思是“因为UART想要发射一个“空”读事件,正如我之前写的”?如果你使用睡眠模式,你应该配置RTC/CTS引脚,以便唤醒。另外,请看看UART_BUS()注释。_auto_flow_control应该定义为1。如果您能够探测UART信号并提供一些屏幕截图,将会非常有帮助。

谢谢,PM_Dialog