8051 మైక్రోకంట్రోలర్‌తో I2C-EEPROM ను ఎలా ఇంటర్‌ఫేస్ చేయాలి

సమస్యలను తొలగించడానికి మా పరికరాన్ని ప్రయత్నించండి





I2C లేదా IIC సంక్షిప్తీకరణ అనే పదం ఒక ఇంటర్ ఇంటిగ్రేటెడ్ సర్క్యూట్ మరియు నేను సి స్క్వేర్డ్ అని పిలుస్తారు. I2C ఒక సీరియల్ కంప్యూటర్ బస్సు , దీనిని NXP సెమీకండక్టర్స్ కనుగొన్నారు, దీనికి గతంలో ఫిలిప్స్ సెమీకండక్టర్స్ అని పేరు పెట్టారు. తక్కువ వేగవంతమైన పరిధీయ ఇంటిగ్రేటెడ్ సర్క్యూట్లను అటాచ్ చేయడానికి I2C బస్సు ఉపయోగించబడుతుంది మైక్రోకంట్రోలర్లు మరియు ప్రాసెసర్లు . 2006 సంవత్సరంలో, I2C ప్రోటోకాల్‌ను అమలు చేయడానికి లైసెన్సింగ్ ఫీజు అవసరం లేదు. కానీ ఎన్ఎక్స్పి సెమీకండక్టర్స్ కేటాయించిన ఐ 2 సి బానిస చిరునామాను పొందడానికి ఫీజు అవసరం.

టెక్సాస్ ఇన్స్ట్రుమెంట్స్, సిమెన్స్ ఎజి, ఎన్‌ఇసి, మోటరోలా, ఇంటర్‌సిల్ మరియు ఎస్‌టిమైక్రోఎలక్ట్రానిక్స్ వంటి కొంతమంది పోటీదారులు 1990 ల మధ్యలో మార్కెట్‌కు బాగా సరిపోయే ఐఐసి ఉత్పత్తులను ప్రకటించారు. 1995 సంవత్సరంలో, SMBus ను ఇంటెల్ నిర్వచించింది, ఇది I²C యొక్క ఉప సమూహం, ఇది ప్రోటోకాల్‌లు మరింత కఠినంగా ఉన్నాయని పేర్కొంది. SMBus యొక్క ముఖ్య ఉద్దేశ్యం ఇంటర్‌పెరాబిలిటీ మరియు దృ ness త్వానికి మద్దతు ఇవ్వడం. అందువల్ల, ప్రస్తుత I²C వ్యవస్థలు SMBus నుండి నియమాలు మరియు విధానాలను కలిగి ఉంటాయి, కొన్నిసార్లు ఇది I2C మరియు SMBus రెండింటినీ కనీస పునర్నిర్మాణంతో మద్దతు ఇస్తుంది.




I2C బస్సు

I2C బస్సు

8051 మైక్రోకంట్రోలర్‌తో ఇంటర్ఫేస్ I2C బస్- EEPROM

I2C బస్సు అంటే ఏమిటి

I2c బస్సు SDA (సీరియల్ డేటా లైన్) మరియు SCL (సీరియల్ క్లాక్ లైన్) వంటి రెండు ద్వి దిశాత్మక ఓపెన్-డ్రెయిన్ లైన్లను ఉపయోగిస్తుంది మరియు ఇవి రెసిస్టర్‌లతో పైకి లాగబడతాయి. బానిస పరికరంతో కమ్యూనికేషన్ ప్రారంభించడానికి I2C బస్సు మాస్టర్ పరికరాన్ని అనుమతిస్తుంది. ఈ రెండు పరికరాల మధ్య డేటా పరస్పరం మార్పిడి చేయబడుతుంది. ఉపయోగించిన సాధారణ వోల్టేజీలు + 3.3 వి లేదా + 5 వి అయినప్పటికీ అదనపు వోల్టేజ్‌లతో వ్యవస్థలు అనుమతించబడతాయి.



I2C ఇంటర్ఫేస్

I2C ఇంటర్ఫేస్

EEPROM

ఎలక్ట్రికల్లీ ఎరేజబుల్ ప్రోగ్రామబుల్ ROM (EEPROM) అనేది వినియోగదారు సవరించగలిగే ROM, ఇది సాధారణ ఎలక్ట్రికల్ వోల్టేజ్ కంటే ఎక్కువ అప్లికేషన్ ద్వారా తరచుగా తీసివేయబడుతుంది మరియు పునరుత్పత్తి చేయవచ్చు. EEPROM అనేది ఒక రకమైన అస్థిర జ్ఞాపకశక్తి, కంప్యూటర్లు వంటి ఎలక్ట్రానిక్ పరికరాల్లో శక్తిని వేరుచేసినప్పుడు చిన్న మొత్తంలో డేటాను నిల్వ చేయడానికి ఉపయోగిస్తారు.

8051 స్లిక్కర్ బోర్డు

8051 స్లిక్కర్ బోర్డు ఈ ప్రాంతంలోని సాంకేతిక విద్యార్థులకు సహాయపడటానికి ప్రత్యేకంగా రూపొందించబడింది పొందుపరిచిన వ్యవస్థలు . ఈ కిట్ యొక్క అన్ని లక్షణాలను రూపొందించారు 8051 మైక్రోకంట్రోలర్ బహుశా విద్యార్థులు ఉపయోగించుకుంటారు. ఈ స్ట్రైకర్ బోర్డు సీరియల్ పోర్ట్ ద్వారా చేయబడే ISP (ఇన్ సిస్టమ్ ప్రోగ్రామింగ్) కు మద్దతు ఇస్తుంది. ఈ కిట్ మరియు ఎన్ఎక్స్పి నుండి 8051 వేగం 8- బిట్ మైక్రోకంట్రోలర్ల చుట్టూ ఉన్న అనేక డిజైన్ల డీబగ్గింగ్ పురోగతిని సున్నితంగా చేయడానికి ప్రతిపాదించబడింది.

ఇంటర్ఫేసింగ్ I2C - EEPROM

కింది బొమ్మ 8051 మైక్రోకంట్రోలర్‌తో I2C-EEPROM ను ఇంటర్‌ఫేసింగ్ చూపిస్తుంది. ఇక్కడ, I2C అనేది మాస్టర్-స్లేవ్ ప్రోటోకాల్, ఇది క్లాక్ పల్స్ తో పాటు డేటాను కలిగి ఉంటుంది. సాధారణంగా, మాస్టర్ పరికరం క్లాక్ లైన్, ఎస్.సి.ఎల్. ఈ లైన్ I2C బస్సులో బదిలీ చేసే డేటా టైమింగ్‌ను ఆదేశిస్తుంది. గడియారం పనిచేయకపోతే, డేటా బదిలీ చేయబడదు. అన్ని బానిసలు ఒకే గడియారం, ఎస్.సి.ఎల్.


ఇంటర్ఫేసింగ్ I2C - EEPROM

ఇంటర్ఫేసింగ్ I2C - EEPROM

I2C బస్సు వివిధ పరికరాలకు మద్దతు ఇస్తుంది ప్రతి పరికరం ఎల్‌సిడి డ్రైవర్, మెమరీ కార్డ్, మైక్రోకంట్రోలర్ లేదా అని ప్రత్యేకమైన చిరునామా ద్వారా గుర్తించబడుతుంది కీబోర్డ్ యొక్క ఇంటర్ఫేసింగ్ ఇది Tx లేదా Rx గా పనిచేయగలదు పరికరం యొక్క పనితీరుపై ఆధారపడి ఉంటుంది. I2C ప్రోటోకాల్ ద్వారా EEPROM పరికరాన్ని నియంత్రించడానికి నియంత్రిక రూపొందించబడింది. ఇక్కడ, అతను I2C ప్రోటోకాల్ మాస్టర్ పరికరంగా పనిచేస్తుంది మరియు EEPROM ని నియంత్రిస్తుంది మరియు ఇది బానిసగా పనిచేస్తుంది. చిరునామా AND / OR డేటా బస్‌తో కూడిన నియంత్రణ సంకేతాల సమితిని బదిలీ చేయడం ద్వారా R / W కార్యకలాపాలు నైపుణ్యం కలిగి ఉంటాయి. ఈ సంకేతాలకు తగిన గడియార సంకేతాలతో హాజరు కావాలి

8051 మైక్రోకంట్రోలర్‌తో ఇంటర్ఫేస్ I2C బస్- EEPROM

మీరు చదవాలనుకుంటే, 8051 స్ట్రైకర్ బోర్డులో I2C బస్సును ఉపయోగించడం ద్వారా EEPROM ను వ్రాసి తొలగించండి. I2 బస్- EEPROM యొక్క ఇంటర్‌ఫేసింగ్ 8051 మైక్రోకంట్రోలర్ చాలా సులభం . ఈ ఇంటర్‌ఫేసింగ్ యొక్క ఆపరేషన్ WRITE వంటి సిగ్నల్‌ను పంపడం, తరువాత డేటా మరియు అడ్రస్ బస్. ఈ ఆపరేషన్‌లో, డేటాను నిల్వ చేయడానికి EEPROM ఉపయోగించబడుతుంది. 8051 కిట్‌లో, రెండు సంఖ్యల EEPROM పంక్తులు I2C మద్దతు ఉన్న డ్రైవర్లచే నియంత్రించబడతాయి. SCL మరియు SDA I2C ఆధారిత సీరియల్ EEPROM IC కి అనుసంధానించబడి ఉన్నాయి.

8051 మైక్రోకంట్రోలర్‌తో ఇంటర్ఫేస్ I2C బస్- EEPROM

8051 మైక్రోకంట్రోలర్‌తో ఇంటర్ఫేస్ I2C బస్- EEPROM

SDA మరియు SCL I2C పంక్తులను ఉపయోగించడం ద్వారా, EEPROM యొక్క రీడ్ అండ్ రైట్ ఆపరేషన్లు 8051 స్లిక్కర్ కిట్‌లో జరుగుతాయి

I2C యొక్క ఇంటర్‌ఫేసింగ్ చాలా సులభం మరియు ప్రతి డేటాలో EEPROM లో చదవండి / వ్రాయండి. ఆలస్యం కంపైలర్ మీద ఆధారపడి ఉంటుంది, మీరు ఎంపికలలో మార్పులు చేసిన వెంటనే ఆలస్యం మారుతుంది.

I2C ఇంటర్ఫేసింగ్ కోసం సోర్స్ కోడ్

# చేర్చండి
# చేర్చండి
# చేర్చండి

# ACK 1 ని నిర్వచించండి
# NO_ACK 0 ని నిర్వచించండి

సంతకం చేయని చార్ i
సంతకం చేయని చార్ EData [5]
సంతకం చేయని చార్ డేటా
InitSerial (శూన్యమైనది)
ఆలస్యం ఆలస్యం (సంతకం చేయని పూర్ణాంకం)
WriteI2C (సంతకం చేయని చార్) ను రద్దు చేయండి
ప్రారంభం (శూన్యమైనది)
void ఆపు (శూన్యమైనది)
శూన్యమైన రీడ్‌బైట్ (సంతకం చేయని పూర్ణాంకం)
రైట్బైట్ (సంతకం చేయని పూర్ణాంకం)
సంతకం చేయని చార్ ReadI2C (బిట్)

sbit SCL = P2 ^ 0 // SCL పిన్‌కు కనెక్ట్ చేయండి (గడియారం)
sbit SDA = P2 ^ 1 // SDA పిన్‌కు కనెక్ట్ చేయండి (డేటా)

// —————————————
// ప్రధాన కార్యక్రమం
// —————————————
void main (శూన్యమైనది)
{
InitSerial () // సీరియల్ పోర్టును ప్రారంభించండి
putchar (0x0C) // క్లియర్ హైపర్ టెర్మినల్
ఆలస్యం (5)
రైట్బైట్ (0x0000)
WriteI2C (‘A’) // డేటాను ఇక్కడ వ్రాయండి
WriteI2C (‘B’)
WriteI2C (‘C’)
WriteI2C (‘D’)
WriteI2C (‘E’)
WriteI2C (‘F’)
ఆపు ()
ఆలస్యం (10)

ReadBYTE (0x0000)
EData [0] = ReadI2C (NO_ACK)
EData [1] = ReadI2C (NO_ACK)
EData [2] = ReadI2C (NO_ACK)
EData [3] = ReadI2C (NO_ACK)
EData [4] = ReadI2C (NO_ACK)
EData [5] = ReadI2C (NO_ACK)

(i = 0i<6i++)
{
printf (“విలువ =% c n”, EData [i]) // ప్రదర్శన డేటా * /
ఆలస్యం (100)
}

అయితే (1)
}

// —————————————
// సీరియల్ పోర్టును ప్రారంభించండి
// —————————————
InitSerial (శూన్యమైనది)
{
SCON = 0x52 // సెటప్ సీరియల్ పోర్ట్ నియంత్రణ
TMOD = 0x20 // హార్డ్‌వేర్ (9600 BAUD @ 11.0592MHZ)
TH1 = 0xFD // TH1
TR1 = 1 // టైమర్ 1 ఆన్
}

// ——————————-
// ప్రారంభం I2C
// ——————————-
ప్రారంభం (శూన్యమైనది)
{
SDA = 1
SCL = 1
_బటన్ _ () _ నోప్_ ()
SDA = 0
_బటన్ _ () _ నోప్_ ()
SCL = 0
_బటన్ _ () _ నోప్_ ()
}

// ——————————-
// స్టాప్ I2C
// ——————————-
void ఆపు (శూన్యమైనది)
{
SDA = 0
_బటన్ _ () _ నోప్_ ()
SCL = 1
_బటన్ _ () _ నోప్_ ()
SDA = 1
}

// ——————————-
// I2C రాయండి
// ——————————-
రైట్ఐ 2 సి (సంతకం చేయని చార్ డేటా)
{

(i = 0i<8i++)
{
SDA = (డేటా & 0x80)? 1: 0
SCL = 1SCL = 0
సమాచారం<<=1
}

SCL = 1
_బటన్ _ () _ నోప్_ ()
SCL = 0

}

// ——————————-
// I2C చదవండి
// ——————————-
సంతకం చేయని చార్ ReadI2C (బిట్ ACK_Bit)
{

ప్రారంభం ()
WriteI2C (0xA1)

SDA = 1
(i = 0i<8i++)

SCL = 1
సమాచారం<<= 1
తేదీ = (తేదీ

if (ACK_Bit == 1)
SDA = 0 // ACK పంపండి
లేకపోతే
SDA = 1 // ACK పంపవద్దు

_బటన్ _ () _ నోప్_ ()
SCL = 1
_బటన్ _ () _ నోప్_ ()
SCL = 0
ఆపు ()
డేటాను తిరిగి ఇవ్వండి
}

// ——————————-
// 1 బైట్ ఫారం I2C చదవండి
// ——————————-
శూన్యమైన రీడ్‌బైట్ (సంతకం చేయని పూర్ణాంకం)
{
ప్రారంభం ()
WriteI2C (0xA0)
WriteI2C ((సంతకం చేయని చార్) (Addr >> 8) & 0xFF)
WriteI2C ((సంతకం చేయని చార్) Addr & 0xFF)
}

// ——————————-
// I2C కి 1 బైట్ రాయండి
// ——————————-
రైట్బైట్ (సంతకం చేయని పూర్ణాంకం)
{
ప్రారంభం ()
WriteI2C (0xA0)
WriteI2C ((సంతకం చేయని చార్) (Addr >> 8) & 0xFF) // చిరునామాను అధికంగా పంపండి
WriteI2C ((సంతకం చేయని చార్) Addr & 0xFF) // చిరునామాను తక్కువగా పంపండి
}

// —————————————
// ఆలస్యం mS ఫంక్షన్
// —————————————
ఆలస్యం ఆలస్యం (సంతకం చేయని పూర్ణాంకం)
{// mSec ఆలస్యం 11.0592 Mhz
సంతకం చేయని Int i // కైల్ v7.5a
అయితే (లెక్కించండి)
{
i = 115
అయితే (i> 0) i–
కౌంట్–
}
}

అందువలన, ఇదంతా I2C ఇంటర్ఫేస్ అమలు గురించి. ఈ భావనపై మీకు మంచి అవగాహన వచ్చిందని మేము ఆశిస్తున్నాము. ఇంకా, ఈ భావనకు సంబంధించి ఏదైనా ప్రశ్నలు లేదా ఇంటర్ఫేసింగ్ పరికరాలు దయచేసి దిగువ వ్యాఖ్య విభాగంలో వ్యాఖ్యానించడం ద్వారా మీ విలువైన సలహాలను ఇవ్వండి.