打印
[其它应用]

sh88f4串口通信的问题

[复制链接]
685|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
songqian17|  楼主 | 2021-3-1 22:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通过串口发给PC可以  但是接收不到上位机的数据 是什么问题

使用特权

评论回复
沙发
chenho| | 2021-3-1 23:02 | 只看该作者
先检查接收通道的硬件是否有问题

使用特权

评论回复
板凳
gongche| | 2021-3-1 23:04 | 只看该作者
检查软件接收部分代码是否有问题

使用特权

评论回复
地板
happy_10| | 2021-3-1 23:07 | 只看该作者
包括端口的配置

使用特权

评论回复
5
bqyj| | 2021-3-1 23:09 | 只看该作者
88系列是51核,通讯程序你可以参考一些通用的51代码。

使用特权

评论回复
6
wenfen| | 2021-3-1 23:12 | 只看该作者
或者参考中颖版块置顶帖“中颖8 Bit Flash MCU产品试用相关**汇总”

使用特权

评论回复
7
songqian17|  楼主 | 2021-3-1 23:14 | 只看该作者

我之前用51做过 收发都可以的  下面是代码  什么地方有问题吗
// CLKCON = 0x00;
  PCON=0X00;
  SCON=0x50; //EUART0¹¤×÷·½Ê½Îª1 SMO=0 SM1=1 SM2=0 REN=1 TB8=0 RB8=0 TI=0 RI=0
        TMOD=0x20;
        RCAP2H=0xff; //                 Baudrate:9600 fc  115200  ca
        RCAP2L=0xfc;
        TH2=0xff;
        TL2=0xfc;
/*        TL1=0xca;
        TH1=0xca;
        TCON=0xd0; //¶¨Ê±Æ÷1Ϊ·¢ËͲ¨ÌØÂÊ
        TMOD=0x20; //¶¨Ê±Æ÷1 ·½Ê½2 8λÖØ×°ÔØ
        */
        T2CON=0x34; //TF2=0 EXF2=0 TCLK=1 RCLK=1 Ñ¡Ôñ¶¨Ê±Æ÷2Ϊ½ÓÊܲ¨ÌØʱÖÓÔEXEN2=0  TR2=1  C/T2=0 T20E=0
        T2MOD=0x03;
        // TH1=0XFd;
        // TL1=0XFd;

        ES0=1;
        EA=1;
//        IEN0=0xc8;  //ET2=1 ES0=1 EA=1        
//        TR1=1;
//        ES=1;
//        EA=1;

使用特权

评论回复
8
bqyj| | 2021-3-1 23:17 | 只看该作者
这我看不出来问题,还有中断服务也有可能相关的,甚至程序结构都可能有影响

使用特权

评论回复
9
wenfen| | 2021-3-1 23:20 | 只看该作者
建议你先看看接收时是否进接收中断了,如果有进中断,收到的sbuf内数据是否正确

使用特权

评论回复
10
zhuhuis| | 2021-3-1 23:26 | 只看该作者
如果没进中断,那就查查初始化配置。

使用特权

评论回复
11
tian111| | 2021-3-1 23:29 | 只看该作者
既然你这个代码以前在其它51上能用,那在这个MCU上应该是配置哪里还不对,或者就是硬件有问题。

使用特权

评论回复
12
chenho| | 2021-3-1 23:33 | 只看该作者

我用的F54寄存器跟你这个有差异,你用的是F4051吧?我的初始化代码供你参考,485的控制可以不管它:
/**********************************************
功能:EUART1初始化程序
输入:
输出:
说明:9600,8,N,1
**********************************************/
void inituart1(void)
{
  SCON1 = 0x40;                //B0110.0000,方式1,检测停止位,RI1=0,SM12=0
  //T2MOD |= 0x20;        //允许EUART1中断,ESU2
  IEN1 |= 0x04;                //ES1允许EUART1中断
  PCON &= 0xDF;                //可省,SSTAT1
  SBRT1 = 0x7F;        //32768-4000kHz/(9.6kHz*16)
  SBRT0 = 0xE6;
  SBRT1 |= 0x80;                //SBRTEN,打开波特率发生器--时钟取自Fsys
  REN1 = 1;                //接收允许
  RI1 = 0;
  con485 = 0;//485接收允许
}

使用特权

评论回复
13
songqian17|  楼主 | 2021-3-1 23:36 | 只看该作者
我用的是88f54p   一直查不出问题  

使用特权

评论回复
14
heweibig| | 2021-3-1 23:40 | 只看该作者
串口初始化?

使用特权

评论回复
15
songqian17|  楼主 | 2021-3-1 23:44 | 只看该作者
void _UART_initlize(void) // ´®¿Ú³õʼ»¯UART
{
/*//51
//timer
        TMOD=0x20;
        TH1=0xfd;
        TL1=0xfd;
        
         PCON=0x00;        
         SCON=0X50;
             // EUART0¹¤×÷ÔÚ·½Ê½1
        // interrupt set
        TR1=1;
        ES=1;
        EA=1;
        */


        //timer1
        TMOD |=0x20;
        TL1=0xf7;
        TH1=0xf7;  
  PCON &=0Xdf;
  SCON=0x50; //EUART0¹¤×÷·½Ê½Îª1
//        TF1=0;
        TR1=1;
        ES0=1;
        EA=1;

}

这是主函数
{
_UART_initlize();
         
        
while(1)
{

  if(Flag)
        {
                Flag=0;        
                SBUF=Date[0];
                while(!TI);
                TI=0;
               
                }
        }
}


void USART_ISR() interrupt 4
{
        if(RI)
{
        Flag=1;
        RI=0;
Date[0]=SBUF;        
}

}
反复拔插TXD 那根线 或者有是拔插RXD那根线 就会有乱码传到上位机

使用特权

评论回复
16
huwr| | 2021-3-1 23:47 | 只看该作者
你在接收中断里设个标志位或者驱动个外部的LED,看看是否进了中断,如果有进入看看收到的是什么数据。想办法缩小和定位问题区域呀。

使用特权

评论回复
17
huanghuac| | 2021-3-1 23:51 | 只看该作者
你用的是EUART0,我用的是EUART1,EUART0我没试过,不过,你试试把接收中断里的这两行对调一下看看有没有效果:
RI=0;
Date[0]=SBUF;
改成:
Date[0]=SBUF;
RI=0;
另外,你看看F516的应用文档,里面有提到“为了避免发送或者接收错误,在EUART 发送初始化程序中,应该将TXD 和RXD 对应I/O 状态设为准双向结构;或者设置为开漏输出结构(此时必须外接上拉电阻)”,那么你的IO初始化部分都正确吧?

使用特权

评论回复
18
zhuhuis| | 2021-3-1 23:55 | 只看该作者
遇到一个问题:SH88F54初始化EUART1完后开启中断,只要串口一发送或者接收数据,单片机就复位重启,不知道是哪里的原因

使用特权

评论回复
19
happy_10| | 2021-3-2 21:12 | 只看该作者
程序跑飞。比如,你可以仿真跟踪一下,看看在哪一个语句开始出现异常,再分析该语句相关的影响。还有比如看门狗,不过估计你不是这个问题。你可以将部分程序注释起来,逐一排查各个代码段。

使用特权

评论回复
20
bqyj| | 2021-3-2 21:14 | 只看该作者
硬件复位。在收发的时候是否引起外围电路的电源跌落,导致单片机复位,这个需要你自己观测单片机电源变化和结合电路进行排查。可以将串口收发线先断开来,然后程序跑到收或者发那里,看看是否复位。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

463

主题

5749

帖子

1

粉丝