⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 spi.c

📁 串行存储芯片AT45DB161B的驱动程序
💻 C
字号:
/*
 * All rights reserved. 	
 * atmel corporation data flash at45db161B driver.
 */

#ifndef	__SPI_C__
#define	__SPI_C__

//#pragma LARGE  
#include "SPI.h"
#include "config.h"
#include <stdlib.h>
#include <intrins.h>
// AT45DB161 operate code define
#define AT45DB_BUFFER1_XFER	    0x53
#define AT45DB_BUFFER2_XFER	    0x55
#define AT45DB_BUFFER1_WRITE	0x84
#define AT45DB_BUFFER2_WRITE	0x87
#define AT45DB_WRITE_ONLY1	    0x88
#define AT45DB_WRITE_ONLY2	    0x89
#define AT45DB_PAGE_ERASE	    0x81
#define AT45DB_STATUS_READ	    0xd7
#define AT45DB_ARRAY_READ	    0xE8

// Added by alex 2007/10/24
#define MAIN_TO_BUFFER1_TRANSFER	0x53
#define BUFFER1_WRITE_ONLY			0x84
#define BUFFER1_TO_MAIN_IN_ERASE	0x83
#define AUTO_PAGE_REWRITE			0x58

#define _at45db_begin()	       _nop_();\ 
                               _nop_();\ 
								EE_CS = 0;

#define _at45db_end()	    	EE_CS = 1;

void delay_ms(unsigned long count)
{
	unsigned char i;
	while (count--)
	{
		for (i=0; i<180; i++)
		{
			_nop_();
            _nop_();
		}
	}
}

void _delayxms(unsigned short count)
{
	unsigned char i;
	while (count--)
	{
		for (i=0; i<120; i++)
		{
			_nop_();
		}
	}
}


void at45db_init()
{
	_delayxms(100);

	EE_RST = 1;
	EE_CS  = 1;
	EE_SCK = 1;
	EE_SO  = 1;
	EE_SI  = 1;
}


void _at45db_write8(unsigned char udata)   //small
{
	unsigned char i;
	for (i = 0; i < 8; i ++)
	{
		EE_SCK = 0;
		if ((udata & 0x80) == 0x80)
		{
			EE_SO = 1;
		}
		else
		{
			EE_SO = 0;
		}
		udata = udata << 1;
		EE_SCK = 1;
	}
	EE_SO = 0;
	EE_SCK = 0;
}

unsigned char _at45db_read8()   //small
{
	//unsigned char i, rdata = 0x00;
	unsigned char i;	
    xdata unsigned char rdata = 0x00;
    //EE_SI = 1;
	for (i = 0; i < 8; i ++)
	{
		EE_SCK = 1;
		
        rdata = (rdata << 1) | EE_SI;
		
		EE_SCK = 0;
	}

	return rdata;
}


unsigned char _at45db_check_busy()
{
	unsigned char idle = 0x80;
	unsigned short i = 1024;

	while (i --)							// 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -