[资料分享] dspf28335(或2812)的SPI接口对EEPROM操作读写数据程序

Jacktang   2018-7-12 18:42 楼主
/*********************************************************************
        函数名:        void EEPROM_Write_Enable(void)
        目的:                EEPROM的写使能
        输入:                无
        输出:                无
*********************************************************************/
void EEPROM_Write_Enable(void)
{

        //判断SPI发送准备好
        while(Spi_TxReady() == 0);
        //
        GpioDataRegs.GPFDAT.bit.GPIOF3 = 0;//CS拉低
        //发送SPI
        SpiaRegs.SPITXBUF = WREN;//发送使能写指令
        //
        //判断SPI发送准备好
        while(Spi_TxReady() == 0);
        //
        delay_time(60);
        //
        GpioDataRegs.GPFDAT.bit.GPIOF3 = 1;//cs拉高
}

/*********************************************************************
        函数名:        void EEPROM_Write_Disable(void)
        目的:                EEPROM的写关闭
        输入:                无
        输出:                无
*********************************************************************/
void EEPROM_Write_Disable(void)
{
        //判断SPI发送准备好
        while(Spi_TxReady() == 0);
        //
        GpioDataRegs.GPFDAT.bit.GPIOF3 = 0;
        //发送SPI
        SpiaRegs.SPITXBUF = WRDI;//禁止写
        //
        //判断SPI发送准备好
        while(Spi_TxReady() == 0);
        //
        delay_time(100);
        //
        GpioDataRegs.GPFDAT.bit.GPIOF3 = 1;
}

/*********************************************************************
        函数名:        unsigned int EEPROM_Read_Status(void)
        目的:                EEPROM的读状态
        输入:                无
        输出:                无
*********************************************************************/
unsigned int EEPROM_Read_Status(void)
{
        unsigned int i,data;
        //判断SPI发送准备好
        while(Spi_TxReady() == 0);
        //
        GpioDataRegs.GPFDAT.bit.GPIOF3 = 0;
        //发送SPI
        SpiaRegs.SPITXBUF = RDSR;   //读状态寄存器
        //判断SPI发送准备好
         while(Spi_TxReady() == 0);
        //发送SPI
//        SpiaRegs.SPITXBUF = 0xff;  

        //        for(i = 0; i < 100; i++);
        //判断SPI接收准备好
        while(Spi_RxReady() == 0);
        data = SpiaRegs.SPIRXBUF;

        //判断SPI发送准备好
//        while(Spi_TxReady() == 0);
        //
//        GpioDataRegs.GPFDAT.bit.GPIOF3 = 1;
        //
        return data;
}

回复评论 (1)

请问剩余的程序还有吗
点赞  2018-10-13 15:00
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复