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

登錄 免費(fèi)注冊(cè) 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | 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

有誰讀過FM25C64

作者:janemxq 欄目:DSP技術(shù)
有誰讀過FM25C64
我用2812EEPROM(FM25C64),通訊方式采用spi,但是寫入一個(gè)數(shù),讀出的數(shù)總是
0xFF,
*************************************************************************/
#include "DSP28_Device.h"
unsigned int *ram_addr;
unsigned int flag,EEPROM_Addr11,Write_Length11;
unsigned CHAR Spi_VarRx[155];
void InitSpi(void)
{
    // Initialize SPI-A:
    GpioDataRegs.GPFDAT.bit.GPIOF3 = 1;//SPISTEA high
    GpioDataRegs.GPFDAT.bit.GPIOF14=1; // 25LC_HOLD
    GpioDataRegs.GPADAT.bit.GPIOA4=1;  // 25LC_WP OUTPUT
    /* 8 bit data */
    // 47 C7 polarity =1 07 87 polarity=0
    // 16 phase =1   06 phase=0
    SpiaRegs.SPICCR.all = 0x07;       //上升沿8位長度  清 sw reset 位
    
    SpiaRegs.SPICTL.all = 0x06;          //信號(hào)不延遲.3/主機(jī).2/使能發(fā)送.1/使能 int 0
    
    SpiaRegs.SPIBRR = 0x1e;              //低速外設(shè)BAUDRATE=150M/4/15=2.5M
    
    SpiaRegs.SPICCR.all = 0x87;          //準(zhǔn)備下一字節(jié)收發(fā) 置 sw reset 位    
   
    //PieCtrl.PIEIER6.bit.INTx1 = 1;
   //PieCtrl.PIEIER6.bit.INTx2 = 1;
    
}

unsigned int Spi_TxReady(void)
{
    unsigned int i;
    if(SpiaRegs.SPISTS.bit.BUFFULL_FLAG == 1)
    {
        i = 0;
    }
    else
    {
        i = 1;
    }
    return(i);
}

unsigned int Spi_RxReady(void)
{
    unsigned int i;
    if(SpiaRegs.SPISTS.bit.INT_FLAG == 1)
    {
        i = 1;
    }
    else
    {
        i = 0;
    }
    return(i);    
}
/*********************************************************************
    函數(shù)名:    void EEPROM_Write_Enable(void)
    目的:        EEPROM的寫使能
    輸入:        無
    輸出:        無
*********************************************************************/
void EEPROM_Write_Enable(void)
{
//    unsigned int i;
    //判斷SPI發(fā)送準(zhǔn)備好
    while(Spi_TxReady() == 0);
    //
    GpioDataRegs.GPFDAT.bit.GPIOF3 = 0; //使能ste
    asm (" RPT #2 || NOP");
    //發(fā)送SPI
    SpiaRegs.SPITXBUF = WREN;
    //
    //判斷SPI發(fā)送準(zhǔn)備好
    while(Spi_TxReady() == 0);
    //
    delay_time(60);
    //
    GpioDataRegs.GPFDAT.bit.GPIOF3 = 1;
}

/*********************************************************************
    函數(shù)名:    void EEPROM_Write_Disable(void)
    目的:        EEPROM的寫關(guān)閉
    輸入:        無
    輸出:        無
*********************************************************************/
void EEPROM_Write_Disable(void)
{
    //判斷SPI發(fā)送準(zhǔn)備好
    while(Spi_TxReady() == 0);
    //
    GpioDataRegs.GPFDAT.bit.GPIOF3 = 0;
    //發(fā)送SPI
    SpiaRegs.SPITXBUF = WRDI;
    //
    //判斷SPI發(fā)送準(zhǔn)備好
    while(Spi_TxReady() == 0);
    //
    delay_time(100);
    //
    GpioDataRegs.GPFDAT.bit.GPIOF3 = 1;
}

/*********************************************************************
    函數(shù)名:    unsigned int EEPROM_Read_Status(void)
    目的:        EEPROM的讀狀態(tài)
    輸入:        無
    輸出:        無
*********************************************************************/
unsigned int EEPROM_Read_Status(void)
{
    unsigned int i,data;
    //判斷SPI發(fā)送準(zhǔn)備好
    while(Spi_TxReady() == 0);
    //
    GpioDataRegs.GPFDAT.bit.GPIOF3 = 0;
    //發(fā)送SPI
    SpiaRegs.SPITXBUF = RDSR;
    //判斷SPI發(fā)送準(zhǔn)備好
//    while(Spi_TxReady() == 0);
    //發(fā)送SPI
//    SpiaRegs.SPITXBUF = 0xff;
    for(i = 0; i < 100; i++);
    //判斷SPI發(fā)送準(zhǔn)備好
    while(Spi_RxReady() == 0);
    //發(fā)送SPI
    data = SpiaRegs.SPIRXBUF;
    //判斷SPI發(fā)送準(zhǔn)備好
//    while(Spi_TxReady() == 0);
    //
    GpioDataRegs.GPFDAT.bit.GPIOF3 = 1;
    return data;
}

/*********************************************************************
    函數(shù)名:    void EEPROM_Write_Status(unsigned int write_status)
    目的:        EEPROM的寫狀態(tài)
    輸入:        write_status    寫狀態(tài)寄存器的控制字
    輸出:        無
*********************************************************************/
void EEPROM_Write_Status(unsigned int write_status)
{
    unsigned int i;
    //判斷SPI發(fā)送準(zhǔn)備好
    while(Spi_TxReady() == 0);
    GpioDataRegs.GPFDAT.bit.GPIOF3 = 0;
    asm (" RPT #2 || NOP");
    //發(fā)送SPI
    SpiaRegs.SPITXBUF = WRSR;
    //判斷SPI發(fā)送準(zhǔn)備好
    while(Spi_TxReady() == 0);
    //發(fā)送SPI
    SpiaRegs.SPITXBUF = write_status;
    //判斷SPI發(fā)送準(zhǔn)備好
    while(Spi_TxReady() == 0);
    //
    //delay_time(100);
  &nb
2樓: >>參與討論
ssj
仔細(xì)看看datasheet
仔細(xì)讀讀25C64手冊(cè)的讀寫時(shí)序,有可能是你的寫過程沒有嚴(yán)格按照他的要求作造成的。我就范過同樣的毛病,查問題查的頭疼。

3樓: >>參與討論
f702p
還沒解決呀?
其實(shí)你讀的是偽數(shù)據(jù)呀,呵呵,
簡單的說,每次spitx就有一個(gè)偽數(shù)據(jù),這樣說,懂不??

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
求救:6713板上(Emulator)計(jì)算結(jié)果與simulator不一致?
卷積計(jì)算不明白,x[n]卷h[n] = h[n]卷x[n],我用圖解法卷的不對(duì)
關(guān)于中斷和主程序之間的矛盾
CCS有BUG?
DSP剛開始學(xué),碰到一個(gè)很奇怪的問題
免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


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