请教个stm32双串口透传问题, 用于调试HMI

2019-12-20 21:35发布

要调试HMI屏, 不想把屏在MCU板和TTL串口模块之间拔来拔去, 于是考虑把MCU板上的两个串口做成透传模式, 这样直接通过MCU板来操作HMI即可.
HMI屏是陶晶驰的TJC8048T050_011R.

先试了DMA+IDLE中断然后转发整帧的模式,  给屏发命令和返回数据正常, 下载不行, 帧缓冲设到4096字节、8192字节都不行,HMI软件有时连不上,有时能正常连接,下载4096字节以后就再也不响应。
再试轮询USART的RXNE标志位然后收到1字节就转发,结果也不行,下载时读到的HMI型号就不对,TJC8048T050_011R有时会读成TJC8048T00_011R, 有时读成TJC8048T50_011R,中间掉一字节。
再试开RXNE中断,然后在中断里收到1字节就转发,结果同上。

再试用DMA透传,把两个DMA的目的地址互相设成对方的DR寄存器,还是不行,根本不能转发。

ps. 试了loop
DMA_InitStructure.DMA_PeripheralBaseAddr = (unsigned long) (&USART1->DR);
DMA_InitStructure.DMA_MemoryBaseAddr = (unsigned long) (&USART1->DR);
两边递增都关掉,然后用串口助手一字节一字节发送,发现能正常发回4字节,之后就没反应了。是不是哪里配置得还不合适?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。