请教个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字节,之后就没反应了。是不是哪里配置得还不合适?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
1328616904
1楼-- · 2019-12-21 00:20
太费劲了,串口是字符设备
tomzbj
2楼-- · 2019-12-21 01:35
1328616904 发表于 2018-3-16 17:44
太费劲了,串口是字符设备

具体指教一下?
留声而过
3楼-- · 2019-12-21 03:41
 精彩回答 2  元偷偷看……
huangqi412
4楼-- · 2019-12-21 09:05
。。。不可能吧 直接串口接收中断来个发个也不成?  单片机几十兆  串口字节速度算100k折算波特率已经一兆  几百条指令每个中断  这富余资源还不行绝对绝对是见鬼了
cnxh
5楼-- · 2019-12-21 11:11
可不可以这样,直接用有任意边沿触发功能的引脚接外界的rxt,当rxt脚有变化时中断,然后输出电平到接外界的txd
wangyu_2011
6楼-- · 2019-12-21 12:03
fifo加上。肯定没问题。

一周热门 更多>