?? read-write_93c46_eeprom.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 + -