C8051F060的SPI数据问题,在线等答案,求高人指点。

2020-02-05 08:55发布

本帖最后由 lys5255 于 2012-6-25 15:40 编辑

这个是部分主要的程序,
void SPI_Init()
{
    SFRPAGE   = SPI0_PAGE;
   
    SPI0CFG   = 0x70;//工作在主方式,SCK在空闲时处于低电平,第一个边沿采样数据
    SPI0CN    = 0x01;//使能SPI
    SPI0CKR   = 0x6D;//时钟频率定为100K,此处由公式F=SYSCLK/2*(SPI0CKR+1)得到
}

void SPI_send(void)
{
     SFRPAGE   = SPI0_PAGE;
         SPI0DAT   = 0x00;
     while(!SPIF);
         SPIF=0;
         SPI0DAT   = num[0];
         while(!SPIF);
         SPIF=0;
         SPI0DAT   = num[1];
         while(!SPIF);
         SPIF=0;
         SPI0DAT   = num[2];
         while(!SPIF);
         SPIF=0;

}
我用串口发送的数据,也就是说num[0]-num[2]都是串口发送的字节,我发送了0x00,0x55,0x00;即SPI正常的话应该是连续发出0x00,0x00,0x55,0x00.我用示波器观察,发现每个自己发送结束后,都会有一个类似于干扰的脉冲存在,脉宽大约为500ns,观察时钟,发现每个字节的最后一位(也就是第八位)都会出现这个情况,应该是发送之后就回到了SPI的初始状态,不知道为什么,下面附有示波器图形,请高人指点。
第一次发帖。希望大家帮帮我。
1.jpg (1.09 MB, 下载次数: 0) 下载附件 2012-6-25 15:36 上传
也就是没传完一个字节,SPI像是回到了初始状态一样,不知道为什么会这样。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。