<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>LPC Microcontrollers中的主题 Re: Problem on LPC2148 I2C</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/Problem-on-LPC2148-I2C/m-p/549238#M13794</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by vtw.433e on Mon Jun 13 06:43:17 MST 2016&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;What is "not working". What are you expecting to happen, and what is actually happening. Without more information we cannot help!&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 19:49:28 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T19:49:28Z</dc:date>
    <item>
      <title>Problem on LPC2148 I2C</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Problem-on-LPC2148-I2C/m-p/549237#M13793</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by rajavarmanslr on Mon Jun 13 05:22:40 MST 2016&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;[h2]&amp;nbsp; **-------------------------------------------CODE 1-----------------------------------------** [/h2]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;DIV class="j-rte-table"&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca" style="border:1px solid black;background-color:#cacaca;border:1px solid black;background-color:#cacaca;background-color:#cacaca;border:1px solid black;background-color:#cacaca;border:1px solid black;"&gt; &lt;PRE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #include&amp;lt;lpc214x.h&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; void ser_init(void);
&amp;nbsp;&amp;nbsp;&amp;nbsp; void tx(unsigned char c);
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char rx(void);
&amp;nbsp;&amp;nbsp;&amp;nbsp; void tx_string(unsigned char *s);
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; void i2c_init(void);
&amp;nbsp;&amp;nbsp;&amp;nbsp; void write(unsigned char data,unsigned char addr);
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char read(unsigned char addr);
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; int main()
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char temp;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ser_init();
&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_init();
&amp;nbsp;&amp;nbsp;&amp;nbsp; tx_string("Writing\n\r");
&amp;nbsp;&amp;nbsp;&amp;nbsp; write('A',0x00);
&amp;nbsp;&amp;nbsp;&amp;nbsp; tx_string("Write successfully...\n\r");
&amp;nbsp;&amp;nbsp;&amp;nbsp; tx_string("Reading...\n\r");
&amp;nbsp;&amp;nbsp;&amp;nbsp; temp=read(0x00);
&amp;nbsp;&amp;nbsp;&amp;nbsp; tx_string("Received data is : ");
&amp;nbsp;&amp;nbsp;&amp;nbsp; tx(temp);
&amp;nbsp;&amp;nbsp;&amp;nbsp; while(1);
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; void i2c_init()
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; PINSEL0|=0x50;
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0SCLH=75;
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0SCLL=75;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; void write(unsigned char data,unsigned char addr)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char addL,addH;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; addL=addr&amp;amp;0xff;
&amp;nbsp;&amp;nbsp;&amp;nbsp; addH=(addr&amp;amp;0xff) &amp;gt;&amp;gt;8;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONCLR=0x000000FF; //Clear all I2C settings
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONSET=1&amp;lt;&amp;lt;6;//I2EN=1
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONSET=1&amp;lt;&amp;lt;5;//Start
&amp;nbsp;&amp;nbsp;&amp;nbsp; while(I2C0STAT != 0x08);
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONCLR=(1&amp;lt;&amp;lt;5)|(1&amp;lt;&amp;lt;3);//Clear Start and Interrupt
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0DAT = 0xA0;
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONSET=1&amp;lt;&amp;lt;2;
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONCLR=(1&amp;lt;&amp;lt;3);//Clear Interrupt
&amp;nbsp;&amp;nbsp;&amp;nbsp; while(I2C0STAT != 0x18);
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0DAT = addH;
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONCLR=(1&amp;lt;&amp;lt;3);//Clear Interrupt
&amp;nbsp;&amp;nbsp;&amp;nbsp; while(I2C0STAT != 0x28);
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0DAT = addL;
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONCLR=(1&amp;lt;&amp;lt;3);//Clear Interrupt
&amp;nbsp;&amp;nbsp;&amp;nbsp; while(I2C0STAT != 0x28);&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0DAT = data;
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONCLR=(1&amp;lt;&amp;lt;3);//Clear Interrupt
&amp;nbsp;&amp;nbsp;&amp;nbsp; while(I2C0STAT != 0x28);
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONCLR=(1&amp;lt;&amp;lt;3);//Clear Interrupt
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONSET=1&amp;lt;&amp;lt;4;//Stop
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char read(unsigned char addr)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char read=0,addL,addH;
&amp;nbsp;&amp;nbsp;&amp;nbsp; addL=addr&amp;amp;0xff;
&amp;nbsp;&amp;nbsp;&amp;nbsp; addH=(addr&amp;amp;0xff00)&amp;gt;&amp;gt;8;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONCLR=0x000000FF; //Clear all I2C settings
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONSET=1&amp;lt;&amp;lt;6;//I2EN=1
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONSET=1&amp;lt;&amp;lt;5;//Start
&amp;nbsp;&amp;nbsp;&amp;nbsp; while(I2C0STAT != 0x08);
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONCLR=(1&amp;lt;&amp;lt;5)|(1&amp;lt;&amp;lt;3);//Clear Start and Interrupt
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0ADR = 0xA0;
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0DAT = 0xA0;
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONCLR=(1&amp;lt;&amp;lt;3);//Clear Interrupt
&amp;nbsp;&amp;nbsp;&amp;nbsp; while(I2C0STAT != 0x18);
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0DAT = addH;
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONCLR=(1&amp;lt;&amp;lt;3);//Clear Interrupt
&amp;nbsp;&amp;nbsp;&amp;nbsp; while(I2C0STAT != 0x28);
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0DAT = addL;
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONCLR=(1&amp;lt;&amp;lt;3);//Clear Interrupt
&amp;nbsp;&amp;nbsp;&amp;nbsp; while(I2C0STAT != 0x28);
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONSET=(1&amp;lt;&amp;lt;2)|(1&amp;lt;&amp;lt;5); //Start
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONCLR=(1&amp;lt;&amp;lt;3);//Clear Interrupt
&amp;nbsp;&amp;nbsp;&amp;nbsp; while(I2C0STAT != 0x10);
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0ADR = 0xA1;
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0DAT = 0xA1;
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONCLR=(1&amp;lt;&amp;lt;3) | (1&amp;lt;&amp;lt;5);//Clear Interrupt , Start
&amp;nbsp;&amp;nbsp;&amp;nbsp; while(I2C0STAT != 0x40);
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONCLR=(1&amp;lt;&amp;lt;3);//Clear Interrupt
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; while(I2C0STAT != 0x50);
&amp;nbsp;&amp;nbsp;&amp;nbsp; read=I2C0DAT;
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONCLR=(1&amp;lt;&amp;lt;3);//Clear Interrupt
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONCLR=(1&amp;lt;&amp;lt;3);//Clear Interrupt
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONSET=1&amp;lt;&amp;lt;4;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; return read;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; void ser_init()
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; VPBDIV=0x02;
&amp;nbsp;&amp;nbsp;&amp;nbsp; PINSEL0|=0x05;
&amp;nbsp;&amp;nbsp;&amp;nbsp; U0LCR=0x83;
&amp;nbsp;&amp;nbsp;&amp;nbsp; U0DLL=195;
&amp;nbsp;&amp;nbsp;&amp;nbsp; U0DLM=0;
&amp;nbsp;&amp;nbsp;&amp;nbsp; U0LCR=0x03;
&amp;nbsp;&amp;nbsp;&amp;nbsp; U0TER=(1&amp;lt;&amp;lt;7);
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; void tx(unsigned char c)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; U0THR=c;
&amp;nbsp;&amp;nbsp;&amp;nbsp; while((U0LSR&amp;amp;(1&amp;lt;&amp;lt;5))==0);
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; void tx_string(unsigned char *s)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; while(*s)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; tx(*s++);
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char rx()
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; while((U0LSR&amp;amp;(1&amp;lt;&amp;lt;0))==0);
&amp;nbsp;&amp;nbsp;&amp;nbsp; return U0RBR;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;[h2]**--------------------------------------CODE 2-----------------------------------------**[/h2]&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;DIV class="j-rte-table"&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca" style="border:1px solid black;background-color:#cacaca;border:1px solid black;background-color:#cacaca;background-color:#cacaca;border:1px solid black;background-color:#cacaca;border:1px solid black;"&gt; &lt;PRE&gt;#include&amp;lt;lpc214x.h&amp;gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; #define delay for(i=0;i&amp;lt;100000;i++)
&amp;nbsp;&amp;nbsp;&amp;nbsp; #define FALSE 0
&amp;nbsp;&amp;nbsp;&amp;nbsp; #define TRUE 1
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned long int i;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; void i2c_init(void);
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char check_status(unsigned char status);
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char i2c_write(unsigned char data,unsigned char status);
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char i2c_read(void);
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char send_byte(unsigned char data,unsigned char address);
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char read_byte(unsigned char address);
&amp;nbsp;&amp;nbsp;&amp;nbsp; void i2c_delay(void);
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; void ser_init(void);
&amp;nbsp;&amp;nbsp;&amp;nbsp; void tx(unsigned char c);
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char rx(void);
&amp;nbsp;&amp;nbsp;&amp;nbsp; void tx_string(unsigned char *s);
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; int main(void)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; ser_init();
&amp;nbsp;&amp;nbsp;&amp;nbsp; tx_string("I2C INTERFACING\n\r");
&amp;nbsp;&amp;nbsp;&amp;nbsp; send_byte('w',0x00);
&amp;nbsp;&amp;nbsp;&amp;nbsp; delay;
&amp;nbsp;&amp;nbsp;&amp;nbsp; tx_string("I2C Write\n\r");
&amp;nbsp;&amp;nbsp;&amp;nbsp; delay;
&amp;nbsp;&amp;nbsp;&amp;nbsp; tx(read_byte(0x01));
&amp;nbsp;&amp;nbsp;&amp;nbsp; while(1);
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; void ser_init()
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; VPBDIV=0x02;
&amp;nbsp;&amp;nbsp;&amp;nbsp; PINSEL0|=0x05;
&amp;nbsp;&amp;nbsp;&amp;nbsp; U0LCR=0x83;
&amp;nbsp;&amp;nbsp;&amp;nbsp; U0DLL=195;
&amp;nbsp;&amp;nbsp;&amp;nbsp; U0DLM=0;
&amp;nbsp;&amp;nbsp;&amp;nbsp; U0LCR=0x03;
&amp;nbsp;&amp;nbsp;&amp;nbsp; U0TER=(1&amp;lt;&amp;lt;7);
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; void tx(unsigned char c)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; U0THR=c;
&amp;nbsp;&amp;nbsp;&amp;nbsp; while((U0LSR&amp;amp;(1&amp;lt;&amp;lt;5))==0);
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; void tx_string(unsigned char *s)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; while(*s)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; tx(*s++);
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char rx()
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; while((U0LSR&amp;amp;(1&amp;lt;&amp;lt;0))==0);
&amp;nbsp;&amp;nbsp;&amp;nbsp; return U0RBR;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; void i2c_init(void)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; PCONP|= 0x00000080;// Power on I2C0 peripheral
&amp;nbsp;&amp;nbsp;&amp;nbsp; PINSEL0 |= 0x50;/*Initialize Pin Connect Block P0.2 as SCL0 P0.3 as SDA0*/
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONCLR = 0x6C;/*Clear AA, I2C Interrupt Flag, Start Bit*/
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONSET = 0x40;/*Enable I2C0*/
&amp;nbsp;&amp;nbsp;&amp;nbsp; /*I2C0SCLH = 75;
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0SCLL = 75;*/
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0SCLH = 14745600/(2*50000);
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0SCLL = 14745600/(2*50000);
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char check_status(unsigned char status)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned long int time=0;
&amp;nbsp;&amp;nbsp;&amp;nbsp; while(time&amp;lt;300000)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(I2C0CONSET &amp;amp; 1&amp;lt;&amp;lt;3)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (I2C0STAT == status)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; return TRUE;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; time++;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; return FALSE;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char i2c_write(unsigned char data,unsigned char status)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0DAT = data &amp;amp; 0xFF;;
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONCLR = 0X2C;
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!check_status(0x08))/*Wait for the Status Set*/
&amp;nbsp;&amp;nbsp;&amp;nbsp; return FALSE;
&amp;nbsp;&amp;nbsp;&amp;nbsp; else
&amp;nbsp;&amp;nbsp;&amp;nbsp; return TRUE;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char i2c_read(void)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONCLR= 0x2C;// clear all except I2EN 
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!check_status(0x58))/* Wait for Status Set - 0x58 */
&amp;nbsp;&amp;nbsp;&amp;nbsp; return FALSE;
&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_delay();
&amp;nbsp;&amp;nbsp;&amp;nbsp; return (char)I2C0DAT;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char send_byte(unsigned char data,unsigned char address)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; //-------------------START--------------------------------------------
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONSET = 0x20;/*Set the Start Bit*/
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!check_status(0x08))/*Wait for the Status Set*/
&amp;nbsp;&amp;nbsp;&amp;nbsp; return FALSE;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; //------------------SEND SLAVE ADDRESS---------------------------------
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_delay();
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!i2c_write(0xA0,0x18))
&amp;nbsp;&amp;nbsp;&amp;nbsp; return FALSE;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; //------------------SEND ADDRESS--------------------------------------
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_delay();
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!i2c_write(address,0x28))
&amp;nbsp;&amp;nbsp;&amp;nbsp; return FALSE;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; //------------------SEND DATA----------------------------------------
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_delay();
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!i2c_write(data,0x28))
&amp;nbsp;&amp;nbsp;&amp;nbsp; return FALSE;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; //-------------------STOP---------------------------------------------
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_delay();
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONSET= 0x10;// generate stop condition
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONCLR= 0x2C;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; return TRUE;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char read_byte(unsigned char address)
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned char read;
&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_init();
&amp;nbsp;&amp;nbsp;&amp;nbsp; //-------------------START--------------------------------------------
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONSET = 0x20;/*Set the Start Bit*/
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!check_status(0x08))/*Wait for the Status Set*/
&amp;nbsp;&amp;nbsp;&amp;nbsp; return FALSE;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; //------------------SEND SLAVE ADDRESS---------------------------------
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_delay();
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!i2c_write(0xA0,0x18))
&amp;nbsp;&amp;nbsp;&amp;nbsp; return FALSE;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; //------------------SEND ADDRESS--------------------------------------
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_delay();
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!i2c_write(address,0x28))
&amp;nbsp;&amp;nbsp;&amp;nbsp; return FALSE;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONCLR= 0x08;// clear SI flag
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONSET= 0x10;// generate stop condition
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; //-------------------START--------------------------------------------
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONSET = 0x20;/*Set the Start Bit*/
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!check_status(0x08))/*Wait for the Status Set*/
&amp;nbsp;&amp;nbsp;&amp;nbsp; return FALSE;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; //------------------SEND READ ADDRESS--------------------------------------
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0DAT = 0xA1;
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONCLR= 0x28;// clear all except I2EN and AA
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(!check_status(0x40))/*Wait for the Status Set*/
&amp;nbsp;&amp;nbsp;&amp;nbsp; return FALSE;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; //----------------------READ-------------------------------------------------
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; read = i2c_read();
&amp;nbsp;&amp;nbsp;&amp;nbsp; //-------------------STOP---------------------------------------------
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; i2c_delay();
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONSET= 0x10;// generate stop condition
&amp;nbsp;&amp;nbsp;&amp;nbsp; I2C0CONCLR= 0x2C;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; return read;
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; void i2c_delay()
&amp;nbsp;&amp;nbsp;&amp;nbsp; {
&amp;nbsp;&amp;nbsp;&amp;nbsp; unsigned long int i2c_del;
&amp;nbsp;&amp;nbsp;&amp;nbsp; for(i2c_del=0;i2c_del&amp;lt;=100000;i2c_del++);
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;STRONG&gt;This is my I2C code with LPC2148. But these codes are not working. Please help me in this problem. Thanks in advance&lt;/STRONG&gt;&lt;BR /&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-338035" rel="nofollow noopener noreferrer" target="_blank"&gt;code%201.rar&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 19:49:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Problem-on-LPC2148-I2C/m-p/549237#M13793</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T19:49:27Z</dc:date>
    </item>
    <item>
      <title>Re: Problem on LPC2148 I2C</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Problem-on-LPC2148-I2C/m-p/549238#M13794</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by vtw.433e on Mon Jun 13 06:43:17 MST 2016&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;What is "not working". What are you expecting to happen, and what is actually happening. Without more information we cannot help!&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 19:49:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Problem-on-LPC2148-I2C/m-p/549238#M13794</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T19:49:28Z</dc:date>
    </item>
    <item>
      <title>Re: Problem on LPC2148 I2C</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Problem-on-LPC2148-I2C/m-p/549239#M13795</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;bump&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 19 Jun 2016 01:13:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Problem-on-LPC2148-I2C/m-p/549239#M13795</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-19T01:13:03Z</dc:date>
    </item>
  </channel>
</rss>

