跳转到主要内容

UART Interrup (UART_IIR_FCR_REG&0x0F = > 7“保留”)

DA14585

3年前

发布的jarirenejensen0点 8回答说
0的问题

我用UART1通信与两个不同设备(2套Rx和Tx线)连接到单独的别针。我第一次读到一些数据从一个设备。然后我重新配置针UART1 Rx和TX连接到一个不同的组GPIOs。然后我重新配置波特率和试图与下一个设备但是我得到一个uart的uart init程序中断的中断ID (3 - 0) = 0111。
如果我设置一个断点UART1 ISR和媒体去吧!一旦我点击断点继续好,但UART2停止工作。

为什么会这样呢?
我应该做什么关于这个“保留”状态的中断ID吗?

空白user_uart_init (uint16_t baudr, uint8_t dlf_value, uint8_t模式)
{
SetBits16 (CLK_PER_REG UART1_ENABLE 1);/ /使时钟——总是@16MHz
SetBits16 (UART_LCR_REG UART_DLAB 0);
SetWord16 (UART_IIR_FCR_REG 0 x87);/ / Rx FIFO触发电平设置为1/2,16/2 = 8个字节
SetWord16 (UART_IER_DLH_REG 0);
SetBits16 (UART_LCR_REG UART_DLAB 1);
SetWord16 (UART_IER_DLH_REG (baudr > > 8) & 0 xff);
SetWord16 (UART_RBR_THR_DLL_REG baudr & 0 xff);
SetWord16 (UART_LCR_REG模式);
SetWord16 (UART_DLF_REG dlf_value);
/ /启用TX中断,寄存器IER如果UART_LCR_REG.DLAB = 0
SetBits16 (UART_LCR_REG UART_DLAB 0);- - - - - - - - - - - - - - - >中断UART_IIR_FCR_REG&0x0F = = 7

3年前

PM_Dialog

嗨jarirenejensen,

我不能够理解的连接图,所以请提供我更多的相关信息。让我问你一些问题理解和DA1585之间的连接设备。请澄清2设备如何连接到UART吗?你只使用UART1还是UART1和UART2 ?你提到UART2停止工作。

谢谢,PM_Dialog

3年前

jarirejenensen 0点

我使用UART2调试。UART2阻止可能会引起的睡眠产生SW停止流动。

请见附件示意图。

沟通与设备和设备之间切换时我重新路由GPIOs一样:

空白set_pad_fn_uart_deviceA(空白)/ /设置gpio端口功能模式
{
/ /禁用deviceB UART连接
GPIO_ConfigurePin (DEVB_RX_GPIO_PORT DEVB_RX_GPIO_PIN,输入、PID_GPIO假);
GPIO_ConfigurePin (DEVB_TX_GPIO_PORT DEVB_TX_GPIO_PIN,输入、PID_GPIO假);
/ /启用设备UART connaction
GPIO_ConfigurePin (DEVA_RX_GPIO_PORT DEVA_RX_GPIO_PIN、输出PID_UART1_TX,假);
GPIO_ConfigurePin (DEVA_TX_GPIO_PORT DEVA_TX_GPIO_PIN,输入、PID_UART1_RX假);
}

空白set_pad_fn_uart_deviceB(空白)/ /设置gpio端口功能模式
{
/ /禁用deviceA连接
GPIO_ConfigurePin (DEVA_RX_GPIO_PORT DEVA_RX_GPIO_PIN,输入、PID_GPIO假);
GPIO_ConfigurePin (DEVA_TX_GPIO_PORT DEVA_TX_GPIO_PIN,输入、PID_GPIO假);
/ /启用deviceB UART连接
GPIO_ConfigurePin (DEVB_RX_GPIO_PORT DEVB_RX_GPIO_PIN、输出PID_UART1_TX,假);
GPIO_ConfigurePin (DEVB_TX_GPIO_PORT DEVB_TX_GPIO_PIN,输入、PID_UART1_RX假);
}

垫fn改道后叫我重新init uart:
:user_uart_init (UART_BAUDRATE_9K6 UART_FRAC_BAUDRATE_9K6 UART_CHARFORMAT_8);
或者:user_uart_init (UART_BAUDRATE_115K2 UART_FRAC_BAUDRATE_115K2 UART_CHARFORMAT_8);
根据设备A或B。
并在init函数一旦启用IRQ我看到这个问题。

刘若英

附件 大小
schematics.pdf 181.16 KB

3年前

PM_Dialog

嗨jarirejenensen,

谢谢你上传您正在使用的示意图。但你能清除你的问题是为了尝试复制吗?从你的描述,我能够理解问题是UART2停止工作?另外,当开关设备和设备之间的UART B和你重新路由GPIOs,这是问题吗?

谢谢,PM_Dialog

3年前

jarirenejensen 0点

你好,我得到一个UART Interrup保留。我不知道如何处理。我目前忽略它。(UART_IIR_FCR_REG&0x0F = > 7“保留”)
这应该中断被忽略吗?

数据表的修订3.2 04 - 4月- 2018
表37:UART中断优先级
中断标识位[0]= 0111:最低优先级:保留

刘若英

3年前

jarirenejensen 0点

我已经忽略这个中断。但我现在的情况,我把它不断地让一切停止。
插入一个睡眠周期似乎调解问题。

我可以重置UART一些如何避免睡眠吗?

刘若英

接受答案!

3年前

PM_Dialog

嗨jarirenejensen,

我不能够理解你的问题。当设备进入睡眠模式,UART不工作吗?所以,你想进入睡眠模式?我理解正确吗?请澄清,这是你的问题。

谢谢,PM_Dialog

3年前

jarirenejensen 0点

问题是我不能开关使用UART——它被困在一个永无止境的接待中断。
如果我睡在使用1和重新配置为使用2它的工作原理。
因此我
1禁用UART。
2进入睡眠
3从睡梦中醒来
4配置UART其他用法。

我真的不想去通过睡眠模式,因为它增加了复杂性和让事情需要更长的时间。更糟糕的是也许不是拯救我的睡眠,也许如果睡眠时间太短不。
我想睡眠修复问题,因为UART是睡觉时关闭,因此硬件复位,但我不知道。

这是波特率的变化是问题吗?
GPIO的变化使用,是问题吗?

BR Rene

3年前

PM_Dialog

嗨jarirenejensen,

抱歉延误,我试图复制你的问题,我将回到你尽快。没有任何睡眠模式,你可以重新配置UART吗?我认为这不是一个波特率或GPIO的使用问题。

谢谢,PM_Dialog