音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費(fèi)注冊(cè) 首頁(yè) | 行業(yè)黑名單 | 幫助
維庫(kù)電子市場(chǎng)網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

關(guān)于040和5043的接口程序問題

作者:bao11975 欄目:單片機(jī)
關(guān)于040和5043的接口程序問題
關(guān)于040和5043的接口程序問題
我現(xiàn)在用C8051F040,軟件模擬的方式對(duì)5V供電的5043設(shè)置,對(duì)SI、SO、CS、SCK均通過4.7K電阻上拉
但是現(xiàn)在的問題是只要一讀狀態(tài)寄存器,5043的REST腳有復(fù)位電平輸出
請(qǐng)教一下哪位大哥知道是什么原因
也請(qǐng)用040的朋友多交流
bao-11975@163.com
qq:22329794
我本來也想用040的硬件SPI,但是對(duì)5043的讀狀態(tài)寄存器,在給出0x05的讀命令(在SCK的上升沿,第0個(gè)到第7個(gè)脈沖輸出0x05),從第7個(gè)的下降沿開始,SO就有數(shù)據(jù)輸出了,040不象020那樣能夠控制要發(fā)出的無效字的長(zhǎng)度,我就不知道這里該怎么處理了。哪位大哥能不能給個(gè)思路?
我用硬件SPI的幾個(gè)函數(shù)如下:
void SPI0_Init (void)
{
    SFRPAGE = SPI0_PAGE;
    SPI0CFG = 0x40;              //主方式                 
                                       

    SPI0CN = 0x03;               // MASTER mode; SPI enabled; flags
                                 // cleared
    SPI0CKR = 15;              //SCK-->1M
    CS_5043 = 1;                // post SPI0/EEPROM available
//    EIE1 |= 0x01;                // enable SPI0 interrupts
    

}

void outbyte( unsigned CHAR byte)       //輸出一個(gè)數(shù)據(jù)到25045,此數(shù)據(jù)可能為地址,先導(dǎo)字,寫入的數(shù)據(jù)等
{
    SFRPAGE = SPI0_PAGE;

//    SPI0CFG = 0x40;              //主方式  
    

    SPIF = 0;
    SPI0DAT=byte;
    while (SPIF == 0);

}

unsigned CHAR inbyte(void)              //得到一個(gè)數(shù)據(jù),此數(shù)據(jù)可能為狀態(tài)寄存器數(shù)據(jù),讀出的單元數(shù)據(jù)等
{
    SFRPAGE = SPI0_PAGE;
    
    SPI0CFG = 0x60;              //主方式  
    
    
    SPIF = 0;
//    if(!(SPI0CFG&0x80==0x80))
    SPI0DAT=0;  
    while (SPIF == 0);
    temp5=SPI0DAT;
    return (temp5);
}


軟件模擬SPI的源程序如下:
#include <c8051f040.h>                          // SFR declarations

sbit cs=P2^2;
sbit si=P0^4;
sbit so=P0^3;
sbit sck=P0^2;
//***************************************************************
//**             All x5043 command                            **
//***************************************************************
#define  WREN         0X06
#define  WRDI         0X04
#define  WRSR         0X01
#define  RDSR         0x05
#define  WRITE        0x02   // 0 0 0 0 A8 0 1 0
#define  READ         0x03   // 0 0 0 0 A8 0 1 1
#define  STATUS_REG1  0X00   // WATCHDOG 200ms,  NO EEPROM PROTECT
#define  STATUS_REG2  0X38     // 看門狗被禁止,受保護(hù)的陣列為100-1FF
#define  STATUS_REG3  0X3c     // 看門狗被禁止,受保護(hù)的陣列為000-1FF
#define  STATUS_REG4  0X30     // 看門狗被禁止,無受保護(hù)的陣列
          // 7 6  5   4   3   2   1   0
          // 0 0 WD1 WD0 BL1  BL0 WEL WIP
          //  BL1   BL1       受保護(hù)的陣列地址
          //   0     0        無
          //   0     1        180-1FF
          //   1     0        100-1FF
          //   1     1        000-1FF
          //
          //   WEL:只讀位,WREN設(shè)置WEL位(使能寫操作);WRDI復(fù)位WEL位(禁止寫操作)
          //   WIP:只讀位,用RDSR讀。=1表示寫操作正在進(jìn)行。;=0,表示沒有寫操作
          //
          //   WD1   WD0      看門狗超時(shí)周期
          //   0      0         1.4S
          //   0      1         600mS
          //   1      0         200mS
          //   1      1         禁止


void si_h(void)     {si=1;}        
void si_l(void)     {si=0;}
void sck_h(void)     {sck=1;}
void sck_l(void)     {sck=0;}
void cs_h(void)     {cs=1;}
void cs_l(void)     {cs=0;}


void eeprominit(void);
void outbyte(unsigned CHAR byte);
unsigned CHAR inbyte(void);
voi
2樓: >>參與討論
bao11975
自己頂一下
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
繼電器跳動(dòng)!!!---求助了!!
遇到奇怪問題??大俠們幫忙分析!
那個(gè)牌子的仿真器(51系列)好用?
請(qǐng)教價(jià)格
請(qǐng)問做鍵盤顯示用什么片子好
免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào)