久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10121|回復: 9
打印 上一主題 下一主題
收起左側

求助!宏晶stc15單片機spi主從通訊問題,請進來!萬謝!

[復制鏈接]
跳轉到指定樓層
樓主
大假小弟哪都沒去,在家調試了很久,確實很疲憊,半個月的努力沒見成效,求助萬能的礦石請同學們指教!
      主從單片機的項目都成了,但是總是發現從機結果偶爾不對,很不可靠,寫了這兩段主,從程序,通過串口助手觀察發現總會掉碼,很多地方都試圖加了延時,還是不見成效!
      主從通訊都已經是128的分頻了,怎么還會這樣?主機144字節的數組占用的是內部擴展RAM,通過spi發送到從機內部的擴展RAM,144個字節就差不多10%掉了,這是怎么回事?萬分感謝。。。。。。。


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:87448 發表于 2015-10-4 01:37 | 只看該作者
/芯片的工作頻率為22.1184MHz 主機源碼
#include<STC15F2K60S2.H>
#include <INTRINS.H>
#include<ABSACC.H>
#include<STDIO.H>
#include "AD_SPI.H"

#include "AD_UartInit.H"
       
#define  ulong unsigned long          // 4 byte
#define  uint unsigned int                   //2 byte                 0-65535
#define  uchar unsigned char                 // byte                 0-255
#define  nop8();  {_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();};
void Delay20us();
void Delay50ms();
uchar  *AD_array_point;
uchar xdata AD_ZERO[144]  _at_ 0x20;

uchar k,i,j;
void main()
{
     Delay50ms();
     AD_UartInit();
     AD_InitSpi();
     IE2 |= ESPI;
     EA = 1;
         
         while(1){
             for(j=0;j<144;j++)         //RAM初始化
      {
     AD_ZERO[j]=0;
      }
         
         /**********************/
         while(!RI);         //*****
         RI=0;
         
         
         for(k=0;k<144;k++)                 //72通道采樣
         {
         AD_ZERO[k]= k;
         
         }
         /********發送數組到從機***************/
         AD_array_point=AD_ZERO;          //定位調零數組
         for(k=0;k<144;k++)
         {
         SS=0;
         SPDAT=*AD_array_point;
         AD_array_point++;
         Delay20us();
         Delay20us();
         Delay20us();
         Delay20us();
         Delay20us();
         Delay20us();
         
         }
         /***********顯示發送到從機的數組*********************/
         AD_array_point=AD_ZERO;
         for(k=0;k<144;k++)
         {
          TI=1;
          printf("0X%bx\n",AD_ZERO[k]); //0928屏蔽
         
         }
         
    }
}



void Delay50ms()                //@22.1184MHz
{
        unsigned char i, j, k;

        _nop_();
        _nop_();
        i = 5;
        j = 52;
        k = 195;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}

void spi_isr() interrupt 9 using 1     //SPI中斷服務程序 9 (004BH)
{
          
        SPSTAT = SPIF | WCOL;       //清除SPI狀態位
        SS = 1;                  //拉高從機的SS
       
}
void Delay20us()                //@22.1184MHz
{
        unsigned char i;

        i = 108;
        while (--i);
}




回復

使用道具 舉報

板凳
ID:87448 發表于 2015-10-4 01:37 | 只看該作者
//從機源碼
#include <STC15F2K60S2.H>
#include <STDIO.H>
#include "AD_UartInit.H"


uchar j;
void main()
{
DA_Pointer_Array= DA_Array;
DA_InitSpi();
AD_UartInit();
SPI_receive=0;
IE2=IE2|ESPI;   //使能SPI中斷
EA=1;


while(1){
             
       for(j=0;j<144;j++)         //RAM初始化
       {
       DA_Array[j]=0;
       }          

          while(!RI);
          RI=0;
          for(j=0;j<144;j++)
          {
          TI=1;
          printf("0x%bx\n",DA_Array[j]);
          }
          DA_Pointer_Array= DA_Array;
        }
}

  void spi_isr() interrupt 9 using 1     //SPI中斷服務程序 9 (004BH)
{

        SPSTAT = SPIF | WCOL;       //清除SPI狀態位 0XC0
           *DA_Pointer_Array=SPDAT;
        DA_Pointer_Array++;
       
}


回復

使用道具 舉報

地板
ID:87448 發表于 2015-10-5 01:12 | 只看該作者
問題已經找到
回復

使用道具 舉報

5#
ID:87448 發表于 2015-10-5 01:13 | 只看該作者
已經完美
回復

使用道具 舉報

6#
ID:90789 發表于 2015-10-5 15:41 來自手機 | 只看該作者
剛想請教
回復

使用道具 舉報

7#
ID:1 發表于 2015-10-6 14:59 來自手機 | 只看該作者
zhou792008 發表于 2015-10-5 01:13
已經完美

怎么解決的,樓主能分享一下嗎。期待
回復

使用道具 舉報

8#
ID:87448 發表于 2015-10-7 20:09 | 只看該作者
admin 發表于 2015-10-6 14:59
怎么解決的,樓主能分享一下嗎。期待


回復

使用道具 舉報

9#
ID:87448 發表于 2015-10-7 20:10 | 只看該作者
datasheet沒仔細看 結果15f從機本身就不正常!換了15w就解決了
回復

使用道具 舉報

10#
ID:385637 發表于 2020-7-18 10:12 | 只看該作者
那就是代碼沒問題,是STC芯片的問題嘍
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产亚洲精品精品国产亚洲综合 | 9999久久| 天天艹日日干 | 国产在线一区二区三区 | 中文字幕欧美一区 | 天天干天天爱天天操 | 日韩福利| www.玖玖玖 | 欧美成人a | 久久99久久 | 中文在线一区二区 | 亚洲一区精品在线 | 99在线免费观看视频 | 青青草综合 | 中文字幕亚洲精品在线观看 | 欧美亚洲日本 | 国产精品免费看 | 毛片免费观看视频 | 国产精品一区二区三区久久久 | 欧美精品久久一区 | 久久久久国产精品一区二区 | 亚洲精选久久 | 欧美 日本 国产 | 日韩精品av一区二区三区 | 国产午夜久久久 | 丁香色婷婷 | 国产精品国产成人国产三级 | 男女下面一进一出网站 | 色婷婷综合久久久久中文一区二区 | 天天躁日日躁性色aⅴ电影 免费在线观看成年人视频 国产欧美精品 | 成人深夜福利在线观看 | 亚洲精品视频免费 | 色综合国产 | 久草视频在线播放 | 91tv在线观看 | 成年人黄色免费视频 | 精品国产乱码久久久久久闺蜜 | 久久久人 | 精品一区二区三区在线观看 | 伊人伊人伊人 | 夜夜干夜夜操 |