pq113_6 发表于 2020-11-21 18:40

MM32L073串口空闲中断问题

有没有人试过MM32L073的串口空闲中断功能?中断使能部分的代码:

    NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel4_5_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
    UARTx->IER |= 0x0040;
UART的中断处理函数:
void UART2_IRQHandler(void)
{
    if((UART2->ISR & 0x40) > 0))
    {

      UART2->ICR = 0x40;
    }
}


现在DMA的其他中断(半字中断和传输正确中断)都能正常工作,但是空闲中断并没有响应,有没有人确认过这个功能的?

zhu^zhu 发表于 2020-11-21 19:35

不好意思!MM32L073芯片没有支持串口空闲中断功能。

pq113_6 发表于 2020-11-21 19:58

zhu^zhu 发表于 2020-11-21 19:35
不好意思!MM32L073芯片没有支持串口空闲中断功能。

难怪,看文档里面有,例程里面对应的头文件却没有定义。

zhu^zhu 发表于 2020-11-22 13:53

多谢!我马上查一下。

两只袜子 发表于 2020-11-23 08:45

MM32L073芯片没有支持串口空闲中断功能

pq113_6 发表于 2020-11-23 10:17

zhu^zhu 发表于 2020-11-22 13:53
多谢!我马上查一下。

我看的是这段解释,不知道是不是对应空闲中断。

大锋1234 发表于 2020-11-23 22:25

可以用软件模拟实现这个功能

pq113_6 发表于 2020-11-24 08:36

大锋1234 发表于 2020-11-23 22:25
可以用软件模拟实现这个功能

目前在循环里面不停的读CNTR的数值,也实现了功能,感觉比空闲中断还好用。

zhu^zhu 发表于 2020-11-24 11:15

这是断开帧(BREAK)的标识,主要用于LIN总线的同步。的确这个可以用于帧同步,但不是空闲帧。空闲帧的定义是一段超过一个有效数据帧的空号(SPACE),认为是空闲帧。

zhangjianhu 发表于 2020-11-25 09:30

pq113_6 发表于 2020-11-24 08:36
目前在循环里面不停的读CNTR的数值,也实现了功能,感觉比空闲中断还好用。 ...

这个能详细说下吗?

pq113_6 发表于 2020-11-25 10:25

zhangjianhu 发表于 2020-11-25 09:30
这个能详细说下吗?

就是DMA里面不停的读入串口数据(CIRCLE的模式),主程序在需要的时候读入CNTR值(即当前的wr indexz值),通过wr index值和rd index变量就知道DMA Buffer中的有效数据,将数据读出后更新rd index即可。就是用到了循环buffer的机制。

vitohu 发表于 2020-12-4 09:52

空闲中断功能
页: [1]
查看完整版本: MM32L073串口空闲中断问题