N32WB031KEQ6 LPUART能接收到FIFO非空中断,但是数据为0
最近在调试的过程中使用了LPUART1作为debug端口,进行日志打印,并通过串口工具发送一些测试指令。调试过程中遇到一个很奇怪的问题,来看看有没有大佬可以指点一下。
串口配置如下:
端口:LPUART1
波特率:115200
引脚:PB1,PB2
时钟源:根据手册说明,支持LSI,LSE或APB1,此处配置为APB1
RCC_ConfigLpuartClk(RCC_LPUART1CLK, RCC_LPUARTCLK_SRC_APB1);
RCC_EnableLpuartClk(ENABLE);
中断配置:(调试过程中本想使用TXC中断做异步发送,但遇到另一个问题,下次再细说)
LPUART_ConfigInt(LPUART1, LPUART_INT_FIFO_NE, ENABLE);
中断优先级:3
现象:
能够接收到系统输出的日志,接着发送测试指令,发现没有任何响应,于是进行debug,发现能够触发中断,此时的LPUART1寄存器数据如下:
STS:0x0020,FIFO_NE = 1,表示此时缓冲器非空,RX 数据已准备好被读取
INTEN:0x20,FIFO_NEIE = 1,表示使能缓冲器非空中断,有中断触发,说明中断使能是有效的
CTRL:0x020A,RTS_THSEL= 2,FIFO 全满时,RTS 有效,PCDIS=1,禁止奇偶校验位,TXEN=1,使能TX
BRCFG1:0x115,APB1时钟频率32M,此处分频系数为277,对应波特率115200
DAT:0x00,问题出在这里,为什么数据寄存器为0?
PS:
使用SDK中的LPUART/Interrupt例程发现也是能触发中断,但是DAT为0,更换了一块新板子后发现测试指令能收到,换回原来的板子仍然不行,因此怀疑是芯片损坏导致。但是再换回新板子调试发现也不行了,所以怀疑还是软件问题导致。
芯片坏了? 引脚连接错误? 检查软件配置。中断配置错误或者是寄存器配置错误? 波特率或时钟源配置不正确? 用不同的串口工具或调试器进行测试,以排除软件冲突或兼容性问题。 电源不稳定可能导致芯片工作异常,进而影响数据传输。 外部电磁干扰可能导致数据传输错误或丢失。 用万用表或示波器检查开发板的电源电压是否稳定。 波特率最高好像9600
页:
[1]