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

📄 read-write_93c46_eeprom.c

📁 EEPROM acces under ADS
💻 C
字号:
/******************************************************************************
 *
 * Copyright (c) 2008
 * All rights reserved.
 * 
 *
 * Module Name: RW93C46.C
 * read the data from 93c46
 *
 * Created by : BD
 ******************************************************************************/
#include <stdio.h>
#include <string.h>
#include "platform.h"

#define cs vGPIO_DATAOUT->GPIODO0
#define	clk vGPIO_DATAOUT->GPIODO1
#define	dout vGPIO_DATAOUT->GPIODO2
#define	din vGPIO_DATAIN->GPIODI3


// reference to W90N740 datasheet
// GPIO Configuration Register
struct _GPIO_CFG  
{
    unsigned int GPIOCFG3_0 :1; // Operating mode for GPIO0~3         bit0~3
    unsigned int not_used 	:31;// not used here					bit4~31
};

// GPIO Direction Register
struct _GPIO_DIR  
{
    unsigned int GPIOD0   	:1; // GPIO0 direction      bit0
    unsigned int GPIOD1   	:1; // GPIO1 direction      bit1
    unsigned int GPIOD2   	:1; // GPIO2 direction      bit2
    unsigned int GPIOD3   	:1; // GPIO3 direction      bit3
    unsigned int not_used 	:28;// not used here		bit4~31
};

// GPIO Data Output Register
struct _GPIO_DATAOUT  
{
    unsigned int GPIODO0   	:1; // GPIO0 output     bit0
    unsigned int GPIODO1   	:1; // GPIO1 output     bit1
    unsigned int GPIODO2   	:1; // GPIO2 output     bit2
    unsigned int GPIODO3   	:1; // GPIO3 output     bit3
    unsigned int not_used 	:28;// not used here	bit4~31
};

// GPIO Data Input Register
struct _GPIO_DATAIN  
{
    unsigned int GPIODI0   	:1; // GPIO0 status     bit0
    unsigned int GPIODI1   	:1; // GPIO1 status     bit1
    unsigned int GPIODI2   	:1; // GPIO2 status     bit2
    unsigned int GPIODI3   	:1; // GPIO3 status     bit3
    unsigned int not_used 	:28;// not used here	bit4~31
};

struct _BITS  
{
    unsigned int bit0   	:1; // bit0
    unsigned int bit1   	:1; // bit1
    unsigned int bit2   	:1; // bit2
    unsigned int bit3   	:1; // bit3
    unsigned int bit4   	:1; // bit4
    unsigned int bit5   	:1; // bit5
    unsigned int bit6   	:1; // bit6
    unsigned int bit7   	:1; // bit7
};

union _BYTE
{
	struct _BITS bits;
	unsigned char int8; 
};

struct _GPIO_CFG * vGPIO_CFG;
struct _GPIO_DIR * vGPIO_DIR;
struct _GPIO_DATAOUT * vGPIO_DATAOUT;
struct _GPIO_DATAIN * vGPIO_DATAIN;

void Delay()
{
	int i, j;
	for (i = 0; i < 100; i++)
	{
		j++;
	}
}


int main(void)
{
	union _BYTE addr;
	union _BYTE data;
	
	int i;
	
	unsigned char data93C46[128];
	
	vGPIO_CFG = (struct _GPIO_CFG *)0xFFF83000;
	vGPIO_DIR = (struct _GPIO_DIR *)0xFFF83004;
	vGPIO_DATAOUT = (struct _GPIO_DATAOUT *)0xFFF83008;
	vGPIO_DATAIN = (struct _GPIO_DATAIN *)0xFFF8300C;
	
	
	vGPIO_CFG->GPIOCFG3_0 = 0;
	vGPIO_DIR->GPIOD0 = 1;	//cs
	vGPIO_DIR->GPIOD1 = 1;	//clk
	vGPIO_DIR->GPIOD2 = 1;	//din
	vGPIO_DIR->GPIOD3 = 0;	//dout
	
	
	addr.int8 = 0;
	
	
	for (i = 0; i < 128; i++)
//	for (; ; )
	{
		clk = 0;Delay();
		cs = 0;Delay();
		cs = 1;Delay();
		
		dout = 1;Delay();clk = 1;Delay();clk = 0;Delay();
		dout = 1;Delay();clk = 1;Delay();clk = 0;Delay();
		dout = 0;Delay();clk = 1;Delay();clk = 0;Delay();

		dout = addr.bits.bit6;Delay();clk = 1;Delay();clk = 0;Delay();
		dout = addr.bits.bit5;Delay();clk = 1;Delay();clk = 0;Delay();
		dout = addr.bits.bit4;Delay();clk = 1;Delay();clk = 0;Delay();
		dout = addr.bits.bit3;Delay();clk = 1;Delay();clk = 0;Delay();
		dout = addr.bits.bit2;Delay();clk = 1;Delay();clk = 0;Delay();
		dout = addr.bits.bit1;Delay();clk = 1;Delay();clk = 0;Delay();
		dout = addr.bits.bit0;Delay();clk = 1;Delay();clk = 0;Delay();
		
		clk = 1;Delay();clk = 0;Delay();

		data.bits.bit7 = din;Delay();clk = 1;Delay();clk = 0;Delay();
		data.bits.bit6 = din;Delay();clk = 1;Delay();clk = 0;Delay();
		data.bits.bit5 = din;Delay();clk = 1;Delay();clk = 0;Delay();
		data.bits.bit4 = din;Delay();clk = 1;Delay();clk = 0;Delay();
		data.bits.bit3 = din;Delay();clk = 1;Delay();clk = 0;Delay();
		data.bits.bit2 = din;Delay();clk = 1;Delay();clk = 0;Delay();
		data.bits.bit1 = din;Delay();clk = 1;Delay();clk = 0;Delay();
		data.bits.bit0 = din;Delay();clk = 1;Delay();clk = 0;Delay();
		
		cs = 0;Delay();
		
		data93C46[i] = data.int8;
		addr.int8 ++;
	}
	
	i = 0;
	
	return 0;
}

⌨️ 快捷键说明

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