找回密码
 立即注册
查看: 1428|回复: 2

STC8H8K64 SPI从机 接收一个字节时间超长

[复制链接]
  • TA的每日心情
    难过
    2024-3-24 16:54
  • 签到天数: 1 天

    [LV.1]初来乍到

    8

    主题

    6

    回帖

    92

    积分

    注册会员

    积分
    92
    发表于 2023-3-31 20:17:28 | 显示全部楼层 |阅读模式




    SPI 当作从机   接收数据
    SS_2 平时低电平,接收到一个字节 ,变高字节。 然后再低电平准备接收下一个。


    void SPI_INIT(void)
    {

    //    P_SW1 = 0x00;                               //SS/P1.2, MOSI/P1.3, MISO/P1.4, SCLK/P1.5
      P_SW1 = 0x04;                               //SS_2/P2.2, MOSI_2/P2.3, MISO_2/P2.4, SCLK_2/P2.5
    //  P_SW1 = 0x08;                               //SS_3/P5.4, MOSI_3/P4.0, MISO_3/P4.1, SCLK_3/P4.3
    //  P_SW1 = 0x0c;                               //SS_4/P3.5, MOSI_4/P3.4, MISO_4/P3.3, SCLK_4/P3.2

           
            SPCTL = 0x40;                               //使能SPI从机模式
            SPSTAT = 0xc0;                              //清中断标志

    }


    u8 SPI_receive(void)
    {
            while (!(SPSTAT & 0x80));               //查询完成标志
            SPSTAT = 0xc0;                          //清中断标志
            //SPDAT = SPDAT;                          //将接收到的数据回传
            return SPDAT;
    }





            while(1)
            {
                    //test_display();
                    RE2_BUSY_L;                                                                // SS_2=0;
                    RevData1=SPI_receive();         // 接收一个字节
                    DisplayHex(RevData1);
                    RE2_BUSY_H;                                                                // SS_2=1
                   
                    LED=1;                                                                                // LED
                    P34=1;                                                                                // 逻辑分析仪查看
                    //RE2_BUSY_L;
                    delay_ms(200);
                   
                    LED=0;
                    P34=0;
                    //RE2_BUSY_H;
                    delay_ms(200);                       
            }


    这是逻辑分析抓 的数据,接收一个字节,P34应该马上就有信号
    逻辑分析仪  看到100多毫秒才有信号
    SPI.png
    回复 送花

    使用道具 举报

  • TA的每日心情
    难过
    2024-3-24 16:54
  • 签到天数: 1 天

    [LV.1]初来乍到

    8

    主题

    6

    回帖

    92

    积分

    注册会员

    积分
    92
     楼主| 发表于 2023-3-31 20:27:26 | 显示全部楼层
          是我自己弄错了,发现问题了。
            while(1)
            {
                    //test_display();
                    RE2_BUSY_L;                                                                // SS_2=0;
                    RevData1=SPI_receive();         // 接收一个字节
                    //DisplayHex(RevData1);                // 这个函数 占了大量时间
                    RE2_BUSY_H;                                                                // SS_2=1
                   
                    LED=1;                                                                                // LED
                    P34=1;                                                                                // 逻辑分析仪查看
                    //RE2_BUSY_L;
                    delay_ms(200);
                   
                    LED=0;
                    P34=0;
                    //RE2_BUSY_H;
                    delay_ms(200);                       
            }
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    552

    主题

    9497

    回帖

    1万

    积分

    管理员

    积分
    14071
    发表于 2023-3-31 20:28:44 | 显示全部楼层
    :handshake
    回复 送花

    使用道具 举报

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

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-19 02:20 , Processed in 0.061376 second(s), 39 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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