亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? at24c512.c

?? 使用JTAG口對AT91R40008芯片進(jìn)行FLASH編程的程序
?? C
字號:
//*---------------------------------------------------------------------------
//*      ATMEL Microcontroller Software Support  -  ROUSSET  -
//*---------------------------------------------------------------------------
//* The software is delivered "AS IS" without warranty or condition of any
//* kind, either express, implied or statutory. This includes without
//* limitation any warranty or condition with respect to merchantability or
//* fitness for any particular purpose, or against the infringements of
//* intellectual property rights of others.
//*-----------------------------------------------------------------------------
//* File Name           : at24c512.c
//* Object              : Serial EEPROM Atmel AT24C512 Driver.
//*
//* 1.0 30/06/00 PF		: Creation
//* 1.1 15/01/02 JPP    : Clean
//*---------------------------------------------------------------------------

//* --------------------------- include file ----------------------------------

#include	"at24c512.h"					//* prototype at24 function & struc
#include    "global.h"
/*---------------------------  Constants definition -------------------------*/

#define OTHER_I2C

static u_short current_address;
#define DEBUG_TRACE_COM
/*--------------------  Function definition for I2C driver ------------------*/
#ifndef OTHER_I2C
//*-----------------------------------------------------------------------------
//* Function Name       :  no_handler_tc (I2Cdesc *I2C_pt)
//* Object              : I2C Error
//* Input Parameters    : <I2C_pt> = I2C Peripheral Descriptor pointer
//* Output Parameters   : none
//*-----------------------------------------------------------------------------
void no_handler_tc (I2Cdesc *I2C_pt)
{//* Begin
#ifdef DEBUG_TRACE_COM
	at91_print(&COM0,"\n\rat24: no_handler_tc ERROR !\n\r");
#endif  //* DEBUG_TRACE_COM
	at91_I2C_lineClose(&I2C_line);
}//* End

//*-----------------------------------------------------------------------------
//* Function Name       :  at91_I2CError(I2Cdesc *I2C_pt)
//* Object              : I2C Error
//* Input Parameters    : <I2C_pt> = I2C Peripheral Descriptor pointer
//*			: loadAddress  Address on slave
//*			: nbByte	   Read to bytes
//*			: I2C_address  I2C address Divice
//* Output Parameters   : none
//*-----------------------------------------------------------------------------
void at91_I2CError(I2Cdesc *I2C_pt)
{//* Begin
#ifdef DEBUG_TRACE_COM
	at91_print(&COM0,"\n\rat24: I2C EPROM ERROR !\n\r");
#endif  //* DEBUG_TRACE_COM
    //* change interrupt handler to at91_I2CTxSendStopSDA
    I2C_pt->I2CTCHandler = at91_I2CSendStopSDA;

}//* End
#endif // OTHER_I2C
/*-----------------  External Function definition for at24c512 --------------*/

//*--------------------------------------------------------------------------------
//* Function Name       : at24_Init( u_int speed )
//* Object              : Init the at14c512 driver
//* Input Parameters    : speed define in timer value by ((MCKI /4 ) / (I2C Freq))
//* Output Parameters   : None
//*---------------------------------------------------------------------------------
void at24_Init( u_int speed )
{//* Begin

    /*I2C init */
    I2C_line.pio_ctrl_desc  = &PIO_DESC;			//* PIO field
    I2C_line.pioa_base		= PIO_BASE;
    I2C_line.SDA_line 		= PIO_SDA ;
    I2C_line.SCL_line 		= PIO_SCL ;

    // EPROM AT24C512 address
    I2C_line.deviceAddress = AT24C512_I2C_ADDRESS;

    //* Timer 0 Counter field
    I2C_line.TCBase 	= TCB0_BASE;
    I2C_line.timerBase 	= TC2_BASE;
    I2C_line.channelId 	= TC2_ID;

    //* IRQ field
    I2C_line.timerBase->TC_IDR = 0x1FF;				//* disable interrupt
    I2C_line.AICHandler = tc2_interrupt_handler;
    I2C_line.I2CTCHandler = no_handler_tc;

    at91_I2C_lineOpen(&I2C_line, speed);


} //* End
//*---------------------------------------------------------------------------------------
//* Function Name       : at24_TransfertEnd(void)
//* Object              : Wait the end I2C transfert when I2C_line.state != OK
//* Input Parameters    : None
//* Output Parameters   : none
//*---------------------------------------------------------------------------------------
void  at24_TransfertEnd(void)
{//* Begin
	at91_I2CTransfertEnd(&I2C_line);
}//* End

//*---------------------------------------------------------------------------------------
//* Function Name       : at24_Write (u_short address, u_char *data_array, u_int num_bytes )
//* Object              : Write to serial EEPROM note: the data input buffer are free when
//*                       I2C_line.state != OK
//* Input Parameters    :
//*			address   : devive assress to write
//*         pointer   : data for write
//*			num_bytes : nbbyte
//* Output Parameters   : none
//*---------------------------------------------------------------------------------------
void at24_Write( u_short address, u_char *data_array, u_int num_bytes)
{//* Begin
    u_short num_page = num_bytes / AT25C512_PAGE_LENGTH;
    u_short cpt;

	//* set global buffer aadres
    I2C_line.TxEnd  = I2C_line.TxPtr  = data_array;

    //* Trig the timer
    I2C_line.timerBase->TC_CCR = TC_SWTRG;
	//* write modulo page block
	for (cpt=0; cpt<num_page; cpt++)
	{
		at91_I2CTransfertEnd(&I2C_line);
    	I2C_line.timerBase->TC_CCR = TC_SWTRG;
		at91_I2CWrite(&I2C_line,address+cpt*AT25C512_PAGE_LENGTH,AT25C512_PAGE_LENGTH);
    	I2C_line.timerBase->TC_CCR = TC_SWTRG;
    	//* Trig the timer
		at91_I2CTransfertEnd(&I2C_line);
	    //*  wait write tine 10 ms
    	I2C_line.timerBase->TC_CCR = TC_SWTRG;
    	at91_I2CWaitTime(&I2C_line,100,MCKKHz);

	}
    //* write modulo rest page
	if((num_page*AT25C512_PAGE_LENGTH) < num_bytes)
	{
		at91_I2CTransfertEnd(&I2C_line);
    	I2C_line.timerBase->TC_CCR = TC_SWTRG;
		at91_I2CWrite(&I2C_line,address+cpt*AT25C512_PAGE_LENGTH,(num_bytes-AT25C512_PAGE_LENGTH*cpt));
	    //*  wait write tine 10 ms
	    I2C_line.timerBase->TC_CCR = TC_SWTRG;
	    at91_I2CTransfertEnd(&I2C_line);
	    at91_I2CWaitTime(&I2C_line,100,MCKKHz);
	}

}//* End

//*---------------------------------------------------------------------------------------
//* Function Name       : at24_Read( u_short address, u_char *data_array, u_int num_bytes )
//* Object              : Reading the serial EEPROM  note: the data outout buffer are full
//*                       when I2C_line.state != OK
//* Input Parameters    :
//*			address   : devive assress to Read
//*         pointer   : data to read
//*			num_bytes : nbbyte
//* Output Parameters   : none
//*---------------------------------------------------------------------------------------
void  at24_Read(u_short address, u_char *data_array, u_int num_bytes)
{//* Begin

    //* Set the recivied buffer
    I2C_line.RxEnd = I2C_line.RxPtr  = data_array;

    //* Trig the timer
    I2C_line.timerBase->TC_CCR = TC_SWTRG;
	at91_I2CTransfertEnd(&I2C_line);
    at91_I2CRead(&I2C_line,address,num_bytes);

}//* End

/*-----------------------  special xmodem function  -------------------------*/
//*---------------------------------------------------------------------------------------
//* Function Name       : at24_init( u_short BaseAddress )
//* Object              : init the serial I2C eeprom driver at 50000 Khz and save the base
//*						  works address
//* Input Parameters    :
//*			BaseAddress : works address
//* Output Parameters   : none
//*---------------------------------------------------------------------------------------
void at24_init( u_short BaseAddress )
{//* Begin
	//* Set the base address
	current_address = BaseAddress;
	//* set at 50 kHz
	at24_Init((66000000/4)/50000);
}//* End

//*---------------------------------------------------------------------------------------
//* Function Name       : at24_write_block ( u_char *buffer,int size)
//* Object              : This function is called by xmodem function and write in the eeprom
//* Input Parameters    :
//*			 buffer - buffer address to write
//*			 size   - Size to write
//* Output Parameters   : TRUE
//*---------------------------------------------------------------------------------------
int at24_write_block ( u_char *buffer,int size)

{//* Begin
	at24_Write( current_address, buffer, size);
	current_address += size;
	//* waite the end of write
	at91_I2CTransfertEnd(&I2C_line);
	return(TRUE);
}//* End

//*---------------------------------------------------------------------------------------
//* Function Name       : at24_read_block ( u_int address, u_char *buffer,int size)
//* Object              : This function is called by xmodem function and read in the eeprom
//* Input Parameters    :
//*			 address- add to read
//*			 buffer - buffer address to Read
//*			 size   - Size to Read
//* Output Parameters   : TRUE
//*---------------------------------------------------------------------------------------
void at24_read_block ( int address, char *buffer,int size)
{//* Begin
	at24_Read( (u_short) address, (u_char *) buffer,(u_int) size);
	//* waite the end of read
	at91_I2CTransfertEnd(&I2C_line);
}//* End

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天天色图综合网| 精品精品国产高清a毛片牛牛 | 欧美日韩免费观看一区三区| 亚洲视频在线一区| 在线观看一区二区视频| 亚洲一区二区欧美| 91精品国产免费| 国产乱码字幕精品高清av| 久久久久国产精品人| 成人aa视频在线观看| 亚洲一区二区三区影院| 欧美一级黄色录像| 国产成人一级电影| 亚洲九九爱视频| 日韩欧美激情在线| 丰满放荡岳乱妇91ww| 一区二区三区久久久| 日韩欧美的一区| 99麻豆久久久国产精品免费优播| 亚洲激情在线激情| 精品美女在线播放| www.在线欧美| 日本视频免费一区| 中文字幕一区二区三区乱码在线| 欧美三区在线视频| 丁香天五香天堂综合| 亚洲国产精品久久不卡毛片| 欧美v国产在线一区二区三区| 99久久国产综合精品色伊| 日韩电影一区二区三区| 国产精品二三区| 日韩精品在线网站| 一本一道久久a久久精品综合蜜臀| 免费xxxx性欧美18vr| 亚洲欧洲精品天堂一级 | 亚洲国产精品传媒在线观看| 欧美丝袜第三区| 国产91在线|亚洲| 奇米影视在线99精品| 亚洲欧美另类在线| 国产亚洲视频系列| 欧美日韩亚洲综合一区二区三区| 懂色av一区二区三区免费看| 日本欧洲一区二区| 亚洲欧美日韩久久| 久久久久久久久97黄色工厂| 欧美剧在线免费观看网站| 成人深夜福利app| 奇米色777欧美一区二区| 亚洲男人的天堂在线观看| 久久久99精品久久| 日韩精品中文字幕一区二区三区| 欧美图区在线视频| 99国产精品久久久久久久久久| 久久99精品国产麻豆不卡| 丝袜亚洲精品中文字幕一区| 亚洲三级在线观看| 国产精品毛片久久久久久久| 欧美精品一区二区三区蜜桃| 精品视频免费在线| 色呦呦一区二区三区| 99久久免费视频.com| 成人午夜av在线| 成人精品一区二区三区四区 | 日本一区二区高清| 国产亚洲欧美中文| 久久久久国产免费免费| 精品福利在线导航| 精品国产露脸精彩对白| 91精品视频网| 91精品黄色片免费大全| 欧美色图第一页| 欧美精品在线观看播放| 在线播放亚洲一区| 这里只有精品视频在线观看| 欧美精品久久一区二区三区| 欧美视频一二三区| 欧美视频在线不卡| 欧美精品99久久久**| 欧美精品精品一区| 日韩午夜av电影| www激情久久| 久久久综合激的五月天| 欧美国产欧美综合| 亚洲三级电影网站| 无吗不卡中文字幕| 老司机精品视频在线| 国产一区二区三区高清播放| 国产成人99久久亚洲综合精品| 大胆亚洲人体视频| 91麻豆国产自产在线观看| 欧美日韩一区二区三区高清| 欧美一区二区精品久久911| 日韩精品综合一本久道在线视频| 久久久99久久| 一区二区三区在线高清| 日本不卡一区二区三区高清视频| 国内精品久久久久影院一蜜桃| 成人黄色在线网站| 欧美做爰猛烈大尺度电影无法无天| 91.com在线观看| 久久综合五月天婷婷伊人| 国产精品欧美一区二区三区| 一个色在线综合| 七七婷婷婷婷精品国产| 成人av在线资源| 欧美精品亚洲一区二区在线播放| 久久久久亚洲综合| 亚洲国产成人私人影院tom| 亚洲午夜免费视频| 国产综合一区二区| 色综合视频在线观看| 日韩美一区二区三区| 成人免费在线播放视频| 琪琪一区二区三区| 91视频.com| 欧美成人高清电影在线| 中文字幕亚洲在| 捆绑紧缚一区二区三区视频| 99在线精品免费| 精品国产第一区二区三区观看体验 | 午夜欧美在线一二页| 久久精品国产久精国产| 91在线无精精品入口| 日韩一区二区高清| 亚洲啪啪综合av一区二区三区| 美女网站一区二区| 色一区在线观看| 国产欧美视频一区二区三区| 午夜伦欧美伦电影理论片| 成人激情动漫在线观看| 欧美久久久久久久久中文字幕| 亚洲国产精品v| 美女免费视频一区二区| 91色.com| 国产日产欧美一区二区视频| 全国精品久久少妇| 一本大道久久a久久精品综合| 久久先锋影音av鲁色资源网| 午夜在线成人av| 99久精品国产| 国产精品入口麻豆九色| 久久国产欧美日韩精品| 欧美电影一区二区| 一区二区三区免费看视频| 国产成人av一区| 亚洲精品一区二区三区在线观看 | 另类小说色综合网站| 欧美精品日日鲁夜夜添| 亚洲精品国产精华液| 不卡在线视频中文字幕| 久久久久久久久一| 极品少妇一区二区| 日韩精品一区二区三区三区免费| 亚洲丶国产丶欧美一区二区三区| 99精品欧美一区| 中文字幕在线一区免费| 国产成人在线影院| 国产亚洲va综合人人澡精品 | 成人精品视频网站| 国产偷国产偷亚洲高清人白洁| 九九九精品视频| 精品久久久久一区| 经典三级一区二区| 欧美精品一区二区三区视频| 韩国精品主播一区二区在线观看 | av不卡一区二区三区| 国产精品网曝门| av不卡在线观看| 亚洲精品第一国产综合野| 色狠狠色狠狠综合| 亚洲一二三四在线观看| 欧美视频精品在线观看| 日韩高清在线一区| 日韩欧美一二区| 国产福利91精品| 亚洲欧美色图小说| 欧美日韩电影一区| 日本麻豆一区二区三区视频| 精品第一国产综合精品aⅴ| 激情图片小说一区| 国产精品欧美综合在线| 91久久奴性调教| 日本aⅴ免费视频一区二区三区 | 欧美一区二区三区四区五区| 精品一区二区三区蜜桃| 国产精品女上位| 欧美日韩一区二区三区四区 | 中文字幕中文字幕中文字幕亚洲无线| 97aⅴ精品视频一二三区| 亚洲午夜一区二区三区| 欧美大片在线观看一区| 成人在线一区二区三区| 一区二区三区在线高清| 日韩精品一区二区三区四区| 成年人国产精品| 天堂久久一区二区三区| 国产性色一区二区| 欧美中文字幕一区二区三区亚洲| 日韩av在线免费观看不卡|