[N32WBxxx] N32WB031KEQ6 LPUART能接收到FIFO非空中断,但是数据为0

[复制链接]
 楼主| Coinhuanhuan 发表于 2025-7-17 17:28 | 显示全部楼层 |阅读模式
最近在调试的过程中使用了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,更换了一块新板子后发现测试指令能收到,换回原来的板子仍然不行,因此怀疑是芯片损坏导致。但是再换回新板子调试发现也不行了,所以怀疑还是软件问题导致。

评论

老板子更换了一颗全新的芯片,仍然不行。  发表于 2025-7-17 17:30
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

主题

3

帖子

0

粉丝

1

主题

3

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部