找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1525|回复: 4
收起左侧

STC32G单片机串口3接收数据字节数不对,帮我看一下吧?

[复制链接]
ID:525244 发表于 2022-4-3 11:20 | 显示全部楼层 |阅读模式
程序是串口3接收,串口1发送串口3接收到的字节数,发送八个,经常收到7个,程序在下边,请帮我看一下原因,谢谢!
11111.PNG

V1.6 STC32G重构 - UART3.7z

65.16 KB, 下载次数: 7

回复

使用道具 举报

ID:525244 发表于 2022-4-3 18:31 | 显示全部楼层
程序很简单,就两个串口中断接收,DMA发送。串口3直接TTL转USB时。数据收发没问题。当用USB转485时,单片机接收数据就容易丢数据,一串数据前边应该是4个字节,收到却是三个错误的字节,应该从RS485芯片下手吧
#ifdef UART3
void UART3_ISR_Handler (void) interrupt UART3_VECTOR
{
        if(RI3)
        {
                CLR_RI3();
                if(COM3.B_RX_OK == 0)
                {
                        if(COM3.RX_Cnt >= COM_RX3_Lenth)        COM3.RX_Cnt = 0;
                        if(COM3.RX_Cnt == 16)        IWEDATA.ADC0++;
                        RX3_Buffer[COM3.RX_Cnt++] = S3BUF;
                        COM3.RX_TimeOut = TimeOutSet3;
                        SBUF=S3BUF;
                }
        }

        if(TI3)
        {
                CLR_TI3();
                COM3.B_TX_busy = 0;
               
//                if(COM3.TX_read != COM3.TX_write)
//                {
//                         S3BUF = TX3_Buffer[COM3.TX_read];
//                        if(++COM3.TX_read >= COM_TX3_Lenth)                COM3.TX_read = 0;
//                }
//                else        COM3.B_TX_busy = 0;
        }
}
#endif
上边是串口接收中断,收到数据发给串口1,串口1接收到的数据偶尔时错误的。
回复

使用道具 举报

ID:525244 发表于 2022-4-3 19:38 | 显示全部楼层
通过逻辑分析仪查看RS485转TTL,UART3收到我数据是正确的的,但是单片机接收到的是不正常的。把TTL直接接在UART3上,收到的数据就正常。是RXD设置了高阻输入,打开了上拉电阻。TXD设置为推挽输出,这样合理吗?
回复

使用道具 举报

ID:301191 发表于 2022-4-4 01:54 | 显示全部楼层
顶一下
回复

使用道具 举报

ID:507641 发表于 2022-4-4 11:58 | 显示全部楼层
你要考虑的是要加等待判断,是没接收完。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表