《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > 如何通過(guò)MAX2990 I2C接口向標(biāo)準(zhǔn)EEPROM (24C04)連接
如何通過(guò)MAX2990 I2C接口向標(biāo)準(zhǔn)EEPROM (24C04)連接
摘要: 本文介紹了如何通過(guò)MAX2990電力線通信調(diào)制解調(diào)器的I2C接口與外部EEPROM24C04連接,并給出了相應(yīng)的固件例程。I²C總線受控于MAX2990(主機(jī)),24C04EEPROM為從機(jī)器件。以下框圖給出了本文示例的硬件配置。
Abstract:
Key words :

  引言

  本文介紹了如何通過(guò)MAX2990電力線通信調(diào)制解調(diào)器的I2C接口與外部EEPROM 24C04連接,并給出了相應(yīng)的固件例程。I²C總線受控于MAX2990 (主機(jī)),24C04 EEPROM為從機(jī)器件。以下框圖給出了本文示例的硬件配置。

  

硬件配置 www.elecfans.com

 

  固件說(shuō)明

  I²C接口初始化

  一旦使能I²C模塊,SCL和SDA必須配置成漏極開(kāi)路狀態(tài),以確保I²C總線通信正常。由于I²C是GPIO端口的一個(gè)替代功能,固件必須確保SCL和SDA輸入在初始化期間禁止上拉(通過(guò)對(duì)端口控制器的輸出位寫零實(shí)現(xiàn))。

示例中,時(shí)鐘頻率為250kHz。首先需要配置MAX2990的I²C接口:

PO1_bit.Bit2 = 0; 		// Disables the GPIO function of the
PO1_bit.Bit3 = 0; 		// I2C pins

I2CCN_bit.I2CEN = 0; 	// Makes sure that I2C is disabled
			// to allow the changing of the I2C settings

I2CCN_bit.I2CMST = 1; 		// Sets the I2C engine to master mode
I2CCN_bit.I2CEA = 0; 		// 7-bit address mode
I2CCK_bit.I2CCKL = 0x40; 	// 2µs CLK-low, to define I2C frequency
I2CCK_bit.I2CCKH = 0x40; 	// 2µs CLK-high, to define I2C frequency

I2CTO = 200; 		// I2C_TIMEOUT
I2CST = 0x400; 		// Resets I2C status register

I2CCN_bit.I2CEN = 1; 		// Enables the I2C engine

寫模式

寫入24C04 EEPROM時(shí),必須通過(guò)I²C接口寫入以下字節(jié):

  1. EEPROM的I²C總線地址(這里為0xA0)
  2. EEPROM存儲(chǔ)器的地址
  3. 數(shù)據(jù)字節(jié)(地址將自動(dòng)遞增)

示例中試圖寫入以下字節(jié),從0x00地址開(kāi)始,向EEPROM寫入:0x12、0x34、0x56、0x78和0x90。

i2c_init_write(); 	// Sets the MAX2990 I2C Engine into write mode
i2c_write(0x50); 	// 24C04 write (adr = 0b1010 000 0) = 0xA0
		// The MAX2990 I2C engine shifts the I2C address by
			// 1 bit, because it will generate the R/W bit
			// automatically

i2c_write(0x00); 	// word address location
i2c_write(0x12); 	// data1
i2c_write(0x34); 	// data2
i2c_write(0x56); 	// data3
i2c_write(0x78); 	// data4
i2c_write(0x90); 	// data5
I2C_STOP; 		// Sends I2C stop-condition

讀模式

讀取我們寫入EEPROM的數(shù)據(jù)時(shí),為24C04留出足夠的寫時(shí)間非常關(guān)鍵。通常在“停止條件”后留出幾個(gè)毫秒的時(shí)間,請(qǐng)參考數(shù)據(jù)資料,確認(rèn)您的時(shí)間設(shè)置符合IC的要求。

i2c_init_write(); 	// Sets the MAX2990 I2C engine into write mode
i2c_write(0x50); 	// 24C04 write (adr = 0b1010 000 0) = 0xA0
		// The MAX2990 I2C engine shifts the I2C address by
			// 1 bit, because it will generate the R/W bit
			// automatically

i2c_write(0x00); 	// word address location

i2c_init_read(); 	// Sets the MAX2990 I2C engine into read mode

i2c_write(0x50); 	// 24C04 read (adr = 0b1010 000 1) = 0xA1
		// The MAX2990 I2C engine shifts the I2C address by
			// 1 bit, because it will generate the R/W bit
			// automatically

unsigned char data[5]; 	// Array to store the received data
i2c_read(data[0]); // Reads 1 byte from I2C and writes it to the array
i2c_read(data[1]); // Reads 1 byte from I2C and writes it to the array
i2c_read(data[2]); // Reads 1 byte from I2C and writes it to the array
i2c_read(data[3]); // Reads 1 byte from I2C and writes it to the array
i2c_read(data[4]); // Reads 1 byte from I2C and writes it to the array
I2C_STOP; 		// Sends I2C stop-condition

現(xiàn)在,我們可以驗(yàn)證一下用于EEPROM讀、寫操作的功能。

i2c_init_write(void)
i2c_init_read(void)
i2c_write(UINT8 data)
i2c_read(UINT8 *data)

 

void i2c_init_write(void)
{
I2CCN_bit.I2CMODE = 0; // I2C transmit mode
I2CCN_bit.I2CACK = 1; // Creates I2C NACK so that slave can create ACK
I2C_START; 		// Generates I2C START condition
while( I2CCN_bit.I2CSTART == 1 ); 	// Waits until the START condition
				// was put to the I2C bus
I2CST_bit.I2CSRI = 0; 		// Resets the I2C interrupt flag
}

int i2c_init_read(void)
{
I2CCN_bit.I2CMODE = 1; 	// I2C read-mode
I2CCN_bit.I2CACK = 0; 	// Creates I2C ACK after receive
I2C_START; 		// Generates I2C START condition

while( I2CCN_bit.I2CSTART == 1 ); 	// Waits until the START condition
I2CST_bit.I2CSRI = 0; 		// Resets the I2C interrupt flag
}

void i2c_write(UINT8 data)
{
I2CBUF = data; 			// Puts the data on the I2C bus
while( I2CST_bit.I2CTXI == 0 ); 	// Waits for transfer complete
I2CST_bit.I2CTXI = 0; 		// Resets the I2C transmit complete
				// interrupt flag
}

void i2c_read(UINT8 *data)
{
I2CBUF = 0xff; 	// Puts "all ones" on the I2C bus so that slave can pull
		// the bus down to generate zeros

while( !I2CST_bit.I2CRXI ); 		// Waits for receive complete
I2CST_bit.I2CRXI=0; 		// Resets the I2C receive complete
					// interrupt flag

*data = I2CBUF; 			// Writes the data to the pointer
}
此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲激情在线激情| 午夜欧美不卡精品aaaaa| 国产精品久久久久久超碰 | 久久国产精品第一页| 亚洲一区高清| 一区二区三区色| 一本一本大道香蕉久在线精品| 亚洲人成网站在线观看播放| 亚洲高清久久网| 亚洲第一精品电影| 久久精品国产免费| 亚洲第一中文字幕在线观看| 久久aⅴ国产紧身牛仔裤| 小黄鸭精品密入口导航| 性欧美18~19sex高清播放| 亚洲欧美在线一区| 欧美亚洲在线观看| 欧美一区二区三区四区夜夜大片| 午夜欧美不卡精品aaaaa| 欧美一区日韩一区| 久久精品一二三区| 亚洲国产精品久久久久秋霞不卡| 亚洲电影第1页| 亚洲电影免费在线观看| 亚洲黄一区二区| 亚洲狼人综合| 国产精品99久久久久久有的能看| 亚洲视频一二区| 亚洲欧美激情精品一区二区| 午夜精品久久久久久久久久久久 | 欧美天天综合网| 国产精品久久久久久亚洲毛片| 国产精品久久久久久久久| 国产精品免费网站| 国产一区二区精品丝袜| 在线播放中文一区| 亚洲老板91色精品久久| 在线亚洲观看| 新狼窝色av性久久久久久| 亚洲国产合集| 99精品视频免费观看| 亚洲一区二区三区视频播放| 欧美一区二区三区四区在线观看地址| 久久av资源网站| 麻豆成人精品| 欧美日韩一区二区三区免费| 国产精品色婷婷| 狠狠色狠狠色综合日日tαg| 亚洲黄色小视频| 亚洲性感美女99在线| 久久av红桃一区二区小说| 日韩视频久久| 香蕉乱码成人久久天堂爱免费| 久久午夜精品| 欧美色中文字幕| 国产专区一区| 日韩亚洲综合在线| 午夜精品国产| 日韩视频免费在线观看| 亚洲欧美一区二区视频| 久热这里只精品99re8久| 欧美日韩mp4| 国产一区视频网站| 亚洲精品一区中文| 欧美影院在线播放| 一本色道久久综合一区 | 欧美日韩免费高清| 国产亚洲欧美日韩日本| 亚洲精品久久嫩草网站秘色| 亚洲欧美日韩中文播放| 日韩亚洲视频| 久久久久久网| 国产精品成人一区二区三区夜夜夜| 国产一区二区中文| 亚洲视频一区在线观看| 最新日韩在线| 欧美一区二区精品久久911| 欧美成人免费一级人片100| 国产嫩草影院久久久久| 亚洲精品在线三区| 久久精品国产2020观看福利| 亚洲欧美日韩一区二区在线| 欧美大片一区二区三区| 国产日韩欧美一区在线| 日韩视频在线观看国产| 亚洲韩国精品一区| 欧美在线影院| 国产精品电影网站| 亚洲人成绝费网站色www| 欧美在线|欧美| 亚欧成人在线| 欧美午夜在线观看| 亚洲人体影院| 久久精品一级爱片| 久久精品五月婷婷| 国产精品日韩欧美一区| 日韩午夜一区| 亚洲精品日韩一| 鲁大师成人一区二区三区| 国产欧美二区| 亚洲一区二区精品在线观看| 一区二区三区**美女毛片| 欧美α欧美αv大片| 狠狠色综合色区| 欧美亚洲网站| 欧美伊人精品成人久久综合97| 欧美午夜精品久久久久久浪潮| 亚洲欧洲日本专区| 亚洲人体一区| 免费成人在线观看视频| 黄网站免费久久| 欧美影院午夜播放| 久久久久9999亚洲精品| 国产日韩综合| 校园春色综合网| 久久精品一区蜜桃臀影院| 国产日韩欧美麻豆| 午夜精品久久久久久久久久久久久 | 欧美一级欧美一级在线播放| 午夜激情亚洲| 国产精品久久久久久av福利软件 | 夜夜爽夜夜爽精品视频| 欧美精品大片| 亚洲区一区二区三区| 亚洲免费不卡| 欧美日韩伦理在线免费| 日韩一区二区免费看| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 国产亚洲毛片在线| 欧美自拍偷拍| 免费成人在线视频网站| 亚洲国产天堂久久国产91| av成人激情| 国产精品久久久一区麻豆最新章节| 在线视频你懂得一区| 午夜国产精品视频免费体验区| 国产精品视频一区二区三区| 午夜精品久久久久久久99水蜜桃| 久久精品亚洲精品| 18成人免费观看视频| 亚洲美女免费视频| 欧美日韩亚洲精品内裤| 一区二区三区黄色| 欧美一级二级三级蜜桃| 国产日韩精品一区二区三区 | 欧美系列一区| 亚洲你懂的在线视频| 久久精品国产久精国产爱| 狠狠色狠狠色综合日日91app| 亚洲精品在线视频| 国产精品高潮呻吟久久| 午夜精品福利视频| 免费看成人av| aa级大片欧美三级| 欧美一区高清| 亚洲电影在线免费观看| 一区二区国产日产| 国产精品麻豆va在线播放| 欧美一区二区三区久久精品| 久久综合影音| 99riav1国产精品视频| 午夜欧美电影在线观看| 激情亚洲一区二区三区四区| 99国产精品99久久久久久| 国产精品久久久久久久久久三级 | 亚洲图片欧洲图片av| 久久久久99精品国产片| 亚洲精品久久视频| 欧美在线视频日韩| 亚洲国产精品99久久久久久久久| 亚洲一二三区在线观看| 国内精品久久国产| 制服丝袜亚洲播放| 国语自产精品视频在线看8查询8| 亚洲精选一区二区| 国产农村妇女精品一区二区| 亚洲毛片在线观看| 国产日本欧美一区二区| 日韩视频三区| 国产亚洲精品aa午夜观看| 99国产麻豆精品| 国产一区二区高清| 亚洲一区免费网站| 亚洲春色另类小说| 欧美中日韩免费视频| 亚洲日韩第九十九页| 久久激情视频久久| 日韩亚洲视频在线| 老司机精品导航| 亚洲免费中文| 欧美精品在线观看| 亚洲国产美女精品久久久久∴| 欧美系列一区| 日韩视频在线播放| 国产一区二区三区黄视频| 国产精品99久久久久久久vr| 在线欧美三区| 久久av资源网站| 亚洲天堂黄色| 欧美日韩激情小视频|