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