导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→用I/O口接受模拟SPI发送过来的数据的程序是否有问题(请指[可乐泡饭]

 *第38005篇: 用I/O口接受模拟SPI发送过来的数据的程序是否有问题(请指错)

  
楼 主:可乐泡饭 2006年2月26日11:03
 用I/O口接受模拟SPI发送过来的数据的程序是否有问题(请指错)
我把我用I/O口来接受以模拟SPI形式发送的数据的程序贴上来,请各位大虾指点错误,先说明我这部分只是接受数据,然后来显示,无发送(单工的)

为了让大家更好理解,我先贴主机数据是如何发送滴:)
DISD[]数组为存放的数据,此程序发送5个数据,每个数据只发送6位而不是8位
  
   P2B=0x10;                      //P2B是8255的B口,以B口的位4做CS片选
   for(i=0;i  <5;i++){
    for(j=0;j  <6;j++){
        a=_cror_(DISD[i],2);     //右移两位
        P2B=((a&0x08)|0x04);     //B口的位3为SDA,位2为SCK
        nop(50);
        P2B=(a&0x08);
        DISD[i]=_crol_(DISD[i],1); //左移一位
    }
   P2B=0x10;                      //关片选CS,CS低有效

以上为主机发送的关键部分

接下来就是我写的接受部分啦(请指错)

void rece(void)                       //模拟PSI接受
{     
     
     while(!RA1){;}                 //RA1接CS片选,等待CS下降沿
     while(RA1){;}                  //所有串行数据传输开始于CS下降沿
            
     for(i=0;i  <5;i++)                      //一次发送5数据
         {
          for(j=0;j  <6;j++)                 //一个数据6位
            {
              while(RB0){;}            //RB0接SCK ,等待时钟上升沿    
              while(!RB0){;}           // 数据在时钟上升沿移入     
              data_buf   <  <= 1;
              if(RA0==0)                  //RA0接SDA,一位一位接受
               {                                          
                  data_buf&= 0xfe;
              }
              else
              {
                 data_buf|= 0x01;
                } 
             }
            
             buffer1[i]=data_buf&0x0f;  //6次循环,接受完一个数据
                                        //并取低四位存如数组buffer1中
          }
                                        //5次循环,接受完5个数据
          for(k=0;k  <5;k++)
             {
               buffer2[k]=buffer1[k];   //然后把5个数据存入buffer2中
             }

             reflash1();                //之后调用刷新,显示数据
       
}

目前显示的数据瞎跳,没一点规律性,我推断是接数据的这部分有问题,拜托了,调了好几天没什么进展.急!!!![IMG]
此主题相关图片如下:
按此在新窗口浏览图片

  
2楼:work11886 2006年2月26日22:43
 找准问题
显示跳数原因:1,接收的数据本身就是变化的,接收正确
 2,接收数据正确,数据变化频率不大,显示刷新有问题
3,显示刷新正确,接收数据不准确
可以想法做一个发送固定数据的模拟,看接收的数据是否还跳?有跳动说明接受不稳定或根本就没收到,逐一排除。

>>>>>>对该主题发表你的看法

本主题贴数2,分页: [第1页]


[上一篇主题]:急于找一位MSC1210单片机高手

[下一篇主题]:谁有ST72321中文手册