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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4161|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

CPHA與MISO,MOSI,SCLK限流電阻問題導(dǎo)致STC12C5A60S2的SPI通訊收到的值不對

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:279601 發(fā)表于 2018-1-27 09:01 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
5黑幣
最近在學(xué)習(xí)SPI通訊使用,用的是STC12C5A60S2單片機,使用的過程中遇到些問題求指導(dǎo),下面的程序是參考一些范例寫的,主機和從機都是用的STC12C5A60S2單片機最小系統(tǒng)(P1口沒有用上拉電阻,不知道有沒有影響),但通訊收到的值不對,希望大家指導(dǎo)一下,怎么修改?若有該款單片機使用且功能OK的范例希望可以分享下,謝謝啦!
主機程序
#include "STC12C5A60S2.H"
sbit led=P0^1;
sbit kg=P0^2;
char cksj;
char spifs,spijs;
char flag;
void Delays(int xms) /*1ms*/
{
    int i,j;
    for(i=xms;i>0;i--)
        for(j=125;j>0;j--);
}
void send(int SS)
{
TI=0;
SBUF=SS;
while(!TI);
TI=0;
}
void ini()
{
TMOD=0x21;
TH1=0xfd;
TL1=0xfd;
PCON=0x00;
SCON=0x50;
AUXR1=0X00;
SPCTL=0XF0;
TR1=1;
    EA=1;
ES=1;
flag=0;
spijs=0x12;
kg=1;
}
void main()
{
P0=0X00;
P1=0X00;
ini();
while(1);
}   
void chuankou()interrupt 4
{
if(RI)
{
  while(RI==0);
  cksj=SBUF;
  RI=0;
  spifs=cksj;
  kg=0;
  SPDAT=spifs;
  flag=0;
  while(flag==0)
  {
   flag=SPSTAT;
   flag=flag&0x80;
  }
  SPSTAT=0xc0;
  spijs=SPDAT;
  kg=1;
  send(spijs);
  send(0x11);
  Delays(10);
}
}   
從機
#include "STC12C5A60S2.H"
sbit led=P0^1;
char cksj;
char spifs,spijs;
char flag;
void Delays(int xms) /*1ms*/
{
    int i,j;
    for(i=xms;i>0;i--)
        for(j=125;j>0;j--);
}
void send(int SS)
{
TI=0;
SBUF=SS;
while(!TI);
TI=0;
}
void ini()
{
TMOD=0x21;
TH1=0xfd;
TL1=0xfd;
PCON=0x00;
SCON=0x50;
AUXR1=0X00;
SPCTL=0X60;
IE2=0X02;
TR1=1;
    EA=1;
flag=0;

}
void main()
{
P0=0X00;
P1=0X00;
ini();
awhile(1)
{
  if(flag==1)
  {
   flag=0;
  spifs=spijs;
  SPDAT=spifs;
  
  }
}
}   
void Spi()interrupt 9
{
  spijs=SPDAT;
  SPSTAT=0xc0;
  flag=1;

}   

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

使用道具 舉報

沙發(fā)
ID:279601 發(fā)表于 2018-1-29 17:04 | 只看該作者
自己又摸索了兩天算是有點結(jié)果了,首先miso,mosi,sclk在做SPI用時是強推挽輸出需要傳一個電阻限流在與另一個單片機相連,又將SPCTL寄存器里的CPHA設(shè)置成1(我用的是STC12C5A60S2,我看別人的案例中設(shè)置成0也可以,但他用的是15系列單片機,我在STC手冊里看到在SSIG為1的情況下CPHA=0操作未定義,所以我設(shè)置成了1 )

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

板凳
ID:279601 發(fā)表于 2018-1-29 17:17 | 只看該作者
經(jīng)過兩天摸索,總算有了點結(jié)果,MISO,MOSI,SCLK三個角需要串限流電阻,因為用作SPI時是強推挽模式,其次我將CPHA設(shè)置成了1(我用的是STC12C5A60S2,我看別人的例程里設(shè)置成0也行,他用的15系列,我看看手冊里寫的是SSIG=1時,CPHA=0操作未定義,所有我設(shè)置成了1),但現(xiàn)在還有一個問題就是,接收到的數(shù)據(jù)有時候正確,有時候錯誤(我懷疑是不是我采用杜邦線串電阻的方式連接主機和從機導(dǎo)致的,如果有大神知道可以指導(dǎo)下),等新買的單片機到手打算在進(jìn)一步驗證下(現(xiàn)在手上就2個STC12C5A60S2最小系統(tǒng))。
remark:下面是我改過之后的程序,現(xiàn)在驗證收到數(shù)據(jù)有時正確,有時錯誤,如果有大神知道原因,希望可以指導(dǎo)下
主機
#include "STC12C5A60S2.H"
sbit led=P0^1;
sbit kg=P0^2;
char cksj;
char spifs,spijs;
char flag;

void Delays(int xms)        /*1ms*/
{
    int i,j;
    for(i=xms;i>0;i--)
        for(j=125;j>0;j--);
}

void send(int SS)
{

TI=0;
SBUF=SS;
while(!TI);
TI=0;

}

void pkou()
{
        P0M0=0X00;
        P0M1=0X00;
        P1M0=0X00;
        P1M1=0X00;
        P2M0=0X00;
        P2M1=0X00;
        P3M0=0X00;
        P3M1=0X00;
}

void ini()
{
        TMOD=0x21;
        TH1=0xfd;
        TL1=0xfd;
        PCON=0x00;
        SCON=0x50;
        TR1=1;

        flag=0;
        spijs=0x12;
        kg=1;
        EA=0;

}
void inispi()
{
         
         SPDAT=0;
         SPSTAT=0XC0;
         SPCTL=0XFC;
         
}

void main()
{
         pkou();
     ini();
         inispi();
       
        while(1)
        {
        if(RI)
        {
                while(RI==0);
                spifs=SBUF;
                RI=0;
                kg=0;
                SPDAT=spifs;
                flag=0;
                while(flag==0)
                {
                        flag=SPSTAT;
                        flag=flag&0x80;
                }
                SPSTAT=0xc0;
                spijs=SPDAT;
                kg=1;
                send(spijs);
                send(0x11);
                Delays(10);

        }
        }
}   
從機
#include "STC12C5A60S2.H"
sbit led=P0^1;
char cksj;
char spifs,spijs;
char flag;

void pkou()
{
        P0M0=0X00;
        P0M1=0X00;
        P1M0=0X00;
        P1M1=0X00;
        P2M0=0X00;
        P2M1=0X00;
        P3M0=0X00;
        P3M1=0X00;
}


void ini()
{
        TMOD=0x21;
        TH1=0xfd;
        TL1=0xfd;
        PCON=0x00;
        SCON=0x50;


        IE2=0X02;
        TR1=1;
           EA=1;
        flag=0;
       

}
void inispi()
{
        SPDAT=0;
        SPSTAT=0XC0;
        SPCTL=0X6C;
}

void main()
{
        pkou();
        ini();
        inispi();
        while(1);
}   

void Spi()interrupt 9
{

               
                SPSTAT=0xc0;
                spijs=SPDAT;
                SPDAT=spijs;
               

       
}   

評分

參與人數(shù) 1黑幣 +80 收起 理由
admin + 80 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 天堂亚洲| 欧美精品久久久久 | 在线观看电影av | 亚洲国产一区二区三区在线观看 | 天天射天天干 | 日本综合在线观看 | 亚洲高清一区二区三区 | 玖草资源| 日本久久福利 | 在线看中文字幕 | 在线一区视频 | 久久精品电影 | a级免费黄色片 | 亚洲av毛片成人精品 | 狠狠色综合久久丁香婷婷 | 99精品九九 | 亚洲播放 | 天天操天天操 | 日韩视频―中文字幕 | 欧洲尺码日本国产精品 | 男女网站视频 | 精品乱码一区二区 | 日韩精品在线一区 | 黄视频在线网站 | 欧美日韩一卡 | 高清视频一区二区三区 | 亚洲黄色成人网 | 超碰在线免费 | www国产精品 | 中文字幕在线一区二区三区 | 久久精品一区二区 | 可以在线看的黄色网址 | 91福利在线观看 | 亚洲视频免费观看 | 精品国产黄色片 | 日本 欧美 国产 | 久久久久久成人 | 日韩福利| 亚洲欧洲精品一区 | 精品影院 | 成人啊啊啊 |