å®ç°åçæºåPCæºè¿è¡SPIé讯æ¹æ³ï¼
1ï¼çµè·¯è®¾è®¡
设计ççµè·¯ï¼å©ç¨ä¸¤çAT89C52è¯çï¼ä¸çå为åé模åï¼ä¸çå为æ¥æ¶æ¨¡åãåå«ç¼ååéåæ¥æ¶ç¨åºï¼å®ç°æ°æ®çåéåæ¥åãéè¿LEDæ¾ç¤ºæ¥æ¶å°çæ°æ®ãéè¿ç¤ºæ³¢å¨è§å¯è¾åºç波形ã
2ï¼ç¼åç¨åº
æ ¹æ®è®¾è®¡å¥½ççµè·¯åé¢ç®è¦æ±åå«ç¼åæ°æ®åéç¨åºåæ°æ®æ¥æ¶ç¨åºã â ï¼æ°æ®åéç¨åº #define
uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
//--------------------------- #include <REG52.H>
#include<STDIO.H>
//--------------------------- sbit SPICLK = P1^0; //æ¶éä¿¡å· sbit MOSI = P1^1; //主å¨ä»¶æ°æ®è¾åºï¼ä»å¨ä»¶æ°æ®è¾å
¥ sbit MISO = P1^2; //主å¨ä»¶æ°æ®è¾å
¥ï¼ä»å¨ä»¶æ°æ®è¾åº
sbit SS = P1^3; //ä»å¨ä»¶ä½¿è½ä¿¡å·
void Dat_Transmit(uchar dat) //åéæ°æ®ç¨åº
{ uchar i,datbuf;
datbuf=dat;
SS=1; while(SS){;} for(i=0;i<8;i++) {
while(SPICLK){;} if(datbuf&0x80) MISO=1; else
MISO=0;
datbuf=(datbuf<<1); while(~SPICLK){;}
}
}
void main(void)
{ uchar i; while(1) {
for(i=0;i<10;i++) {
Dat_Transmit(i);
}
}
}
â¡ï¼æ°æ®æ¥æ¶ç¨åº #define uchar unsigned char
#define uint unsigned int #define ulong
unsigned long
//--------------------------- #include <REG52.H>
#include<STDIO.H>
//--------------------------- sbit SPICLK = P1^0; //æ¶éä¿¡å· sbit MOSI = P1^1; //主å¨ä»¶æ°æ®è¾åºï¼ä»å¨ä»¶æ°æ®è¾å
¥ sbit MISO = P1^2; //主å¨ä»¶æ°æ®è¾å
¥ï¼ä»å¨ä»¶æ°æ®è¾åº sbit SS = P1^3; //ä»å¨ä»¶ä½¿è½ä¿¡å·
//--------------------------- void Nop(void)
{ ;
}
void Delay(uchar t) { while(t--){;}
}
uchar Data_Receive(void) //æ°æ®æ¥æ¶ç¨åº
{ uchar i,dat=0,temp; bit
bt;
SPICLK=1; MISO=1; SS=0;
//éä¸å¨ä»¶
Nop(); Nop();
for(i=0;i<8;i++) { SPICLK=1;
Nop()
Nop(); Nop(); SPICLK=0; Nop(); Nop();
bt=MISO; if(bt)
temp=0x01;
else
temp=0x00;
dat=(dat<<1);
dat=(dat|temp);
}
SS=1; SPICLK=1;
return dat;
}
void main(void)
{ uchar exdat; uchar i=0;
uchar code
table[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
0x7F,0x6F}; P2=0;
while(1) { exdat=Data_Receive(); P0=table[exdat];
for(i=0;i<200;i++)
Delay(200);
}
}
3ï¼çµè·¯ä»¿ç
å°æ°æ®åéç¨åºçæçHEXæ件载å
¥å°åéæ°æ®ç模åï¼å°æ°æ®æ¥æ¶ç¨åºçæçHEXæ件载å
¥å°æ¥æ¶æ°æ®ç模åãå¨è¾åºç«¯å£è¿æ¥LEDç¯çå°è¾åºä¿¡æ¯ï¼å©ç¨ç¤ºæ³¢å¨è§å¯è¾åºæ³¢å½¢ã
4ï¼SPIæ»çº¿ç®ä»
SPI ( Serial Peripheral Interface ââ串è¡å¤è®¾æ¥å£) æ»çº¿æ¯Motorolaå
¬å¸æ¨åºçä¸ç§åæ¥ä¸²è¡æ¥å£ææ¯ãSPIæ»çº¿ç³»ç»æ¯ä¸ç§åæ¥ä¸²è¡å¤è®¾æ¥å£,å
许MCUï¼å¾®æ§å¶å¨ï¼ä¸åç§å¤å´è®¾å¤ä»¥ä¸²è¡æ¹å¼è¿è¡éä¿¡ãæ°æ®äº¤æ¢ãå¤å´è®¾å¤å
æ¬FLASHRAMãA/ D 转æ¢å¨ãç½ç»æ§å¶å¨ãMCU çãSPIï¼æ¯ä¸ç§é«éçï¼å
¨åå·¥ï¼åæ¥çéä¿¡æ»çº¿ï¼å¹¶ä¸å¨è¯çç管èä¸åªå ç¨åæ ¹çº¿ï¼è约äºè¯çç管èï¼åæ¶ä¸ºPCBçå¸å±ä¸èç空é´ï¼æä¾æ¹ä¾¿ï¼æ£æ¯åºäºè¿ç§ç®åæç¨çç¹æ§ï¼ç°å¨è¶æ¥è¶å¤çè¯çéæäºè¿ç§éä¿¡åè®®ãå
¶å·¥ä½æ¨¡å¼æ两ç§ï¼ä¸»æ¨¡å¼åä»æ¨¡å¼ãSPIæ¯ä¸ç§å
许ä¸ä¸ªä¸»è®¾å¤å¯å¨ä¸ä¸ªä»è®¾å¤çåæ¥é讯çåè®®ï¼ä»èå®ææ°æ®ç交æ¢ãä¹å°±æ¯SPIæ¯ä¸ç§è§å®å¥½çé讯æ¹å¼ãè¿ç§éä¿¡æ¹å¼çä¼ç¹æ¯å ç¨ç«¯å£è¾å°ï¼ä¸è¬4æ ¹å°±å¤åºæ¬é讯äºï¼ä¸ç®çµæºçº¿ï¼ãåæ¶ä¼ è¾é度ä¹å¾é«ãä¸è¬æ¥è¯´è¦æ±ä¸»è®¾å¤è¦æSPIæ§å¶å¨ï¼ä¹å¯ç¨æ¨¡ææ¹å¼ï¼ï¼å°±å¯ä»¥ä¸åºäºSPIçè¯çé讯äºã
å©ç¨SPIæ»çº¿å¯å¨è½¯ä»¶çæ§å¶ä¸ææåç§ç³»ç»ãå¦1个主MCUåå 个ä»MCUãå 个ä»MCUç¸äºè¿æ¥ææå¤ä¸»æºç³»ç»ï¼åå¸å¼ç³»ç»ï¼ã1个主MCUå1个æå 个ä»Iï¼O设å¤æææçåç§ç³»ç»çãå¨å¤§å¤æ°åºç¨åºåï¼å¯ä½¿ç¨1个MCUä½ä¸ºä¸»æ§æºæ¥æ§å¶æ°æ®ï¼å¹¶å1个æå 个ä»å¤å´å¨ä»¶ä¼ é该æ°æ®ãä»å¨ä»¶åªæå¨ä¸»æºåå½ä»¤æ¶æè½æ¥æ¶æåéæ°æ®ãå
¶æ°æ®çä¼ è¾æ ¼å¼æ¯é«ä½ï¼MSBï¼å¨åï¼ä½ä½ï¼LSBï¼å¨åã
å½ä¸ä¸ªä¸»æ§æºéè¿SPIä¸å ç§ä¸åç串è¡Iï¼Oè¯çç¸è¿æ¶ï¼å¿
须使ç¨æ¯ççå
许æ§å¶ç«¯ï¼è¿å¯éè¿MCUçIï¼O端å£è¾åºçº¿æ¥å®ç°ãä½åºç¹å«æ³¨æè¿äºä¸²è¡Iï¼Oè¯ççè¾å
¥è¾åºç¹æ§ï¼é¦å
æ¯è¾å
¥è¯çç串è¡æ°æ®è¾åºæ¯å¦æä¸ææ§å¶ç«¯ãå¹³æ¶æªéä¸è¯çæ¶ï¼è¾åºç«¯åºå¤äºé«é»æã
è¥æ²¡æä¸ææ§å¶ç«¯ï¼ååºå¤å ä¸æé¨ãå¦åMCUçMISO端åªè½è¿æ¥1个è¾å
¥è¯çãå
¶æ¬¡æ¯è¾åºè¯çç串è¡æ°æ®è¾å
¥æ¯å¦æå
许æ§å¶ç«¯ãå 为åªæå¨æ¤è¯çå
许æ¶ï¼SCKèå²ææ串è¡æ°æ®ç§»å
¥è¯¥è¯çï¼å¨ç¦æ¢æ¶ï¼SCK对è¯çæ å½±åãè¥æ²¡æå
许æ§å¶ç«¯ï¼ååºå¨å¤å´ç¨é¨çµè·¯å¯¹SCKè¿è¡æ§å¶ï¼ç¶ååå å°è¯ççæ¶éè¾å
¥ç«¯ï¼å½ç¶ï¼ä¹å¯ä»¥åªå¨SPIæ»çº¿ä¸è¿æ¥1个è¯çï¼èä¸åè¿æ¥å
¶å®è¾å
¥æè¾åºè¯çã
SPIæ¥å£æ¯å¨CPUåå¤å´ä½éå¨ä»¶ä¹é´è¿è¡åæ¥ä¸²è¡æ°æ®ä¼ è¾ï¼å¨ä¸»å¨ä»¶ç移ä½èå²ä¸ï¼æ°æ®æä½ä¼ è¾ï¼é«ä½å¨åï¼ä½ä½å¨åï¼ä¸ºå
¨åå·¥éä¿¡ï¼æ°æ®ä¼ è¾é度æ»ä½æ¥è¯´æ¯I2Cæ»çº¿è¦å¿«ï¼é度å¯è¾¾å°å Mbpsã
5ï¼SPIæ»çº¿å·¥ä½åç
SPIæ»çº¿ç³»ç»æ¯ä¸ç§åæ¥ä¸²è¡å¤è®¾æ¥å£ï¼å®å¯ä»¥ä½¿MCUä¸åç§å¤å´è®¾å¤ä»¥ä¸²è¡æ¹å¼è¿è¡é信以交æ¢ä¿¡æ¯ãSPIæä¸ä¸ªå¯åå¨åå«ä¸ºï¼æ§å¶å¯åå¨SPCRï¼ç¶æå¯åå¨SPSRï¼æ°æ®å¯åå¨ãå¤å´è®¾å¤ãç½ç»æ§å¶å¨ãLCDæ¾ç¤ºé©±å¨å¨ãA/D转æ¢å¨åMCUçã
æ¥å£å
æ¬ä»¥ä¸åç§ä¿¡å·ï¼
ï¼1ï¼MOSI â 主å¨ä»¶æ°æ®è¾åºï¼ä»å¨ä»¶æ°æ®è¾å
¥ï¼
ï¼2ï¼MISO â 主å¨ä»¶æ°æ®è¾å
¥ï¼ä»å¨ä»¶æ°æ®è¾åºï¼
ï¼3ï¼SCLK â æ¶éä¿¡å·ï¼ç±ä¸»å¨ä»¶äº§çï¼
ï¼4ï¼ SS âä»å¨ä»¶ä½¿è½ä¿¡å·ï¼ç±ä¸»å¨ä»¶æ§å¶,æçICä¼æ 注为CS(Chip select)ã å¨ç¹å¯¹ç¹çéä¿¡ä¸ï¼SPIæ¥å£ä¸éè¦è¿è¡å¯»åæä½ï¼ä¸ä¸ºå
¨åå·¥éä¿¡ï¼æ¾å¾ç®åé«æã
温馨提示:答案为网友推荐,仅供参考