Coinhuanhuan 发表于 2025-7-17 17:28

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,更换了一块新板子后发现测试指令能收到,换回原来的板子仍然不行,因此怀疑是芯片损坏导致。但是再换回新板子调试发现也不行了,所以怀疑还是软件问题导致。

elephant00 发表于 2025-7-31 15:11

芯片坏了?

jcky001 发表于 2025-7-31 15:11

引脚连接错误?

cr315 发表于 2025-7-31 15:12

检查软件配置。中断配置错误或者是寄存器配置错误?

elephant00 发表于 2025-7-31 15:12

波特率或时钟源配置不正确?

stormwind123 发表于 2025-7-31 15:14

用不同的串口工具或调试器进行测试,以排除软件冲突或兼容性问题。

powerantone 发表于 2025-7-31 15:46

电源不稳定可能导致芯片工作异常,进而影响数据传输。

flycamelaaa 发表于 2025-7-31 16:13

外部电磁干扰可能导致数据传输错误或丢失。

probedog 发表于 2025-7-31 17:14

用万用表或示波器检查开发板的电源电压是否稳定。

Steppenwolf 发表于 2025-8-18 15:01

波特率最高好像9600
页: [1]
查看完整版本: N32WB031KEQ6 LPUART能接收到FIFO非空中断,但是数据为0