<?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中的主题 I2C USER SPACE problem in uclnux on LPC1788 cortex m3 mio board</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/I2C-USER-SPACE-problem-in-uclnux-on-LPC1788-cortex-m3-mio-board/m-p/522045#M4681</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by shamvhgowda on Mon Feb 17 00:12:20 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello Friends,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am using Ububtu 12.04 version and doing uclinux on LPC 1788 Board.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Since I'm new to LPCware and also new to LPC1788 uclinux. I am writing Device drivers for LPC1788 uclinux . So i'm strucked in i2c communication protocol. So can anyone help me to solve this issue.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here is my user space code&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#include &amp;lt;signal.h&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#include &amp;lt;string.h&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#include &amp;lt;fcntl.h&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#include &amp;lt;linux/i2c.h&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#include &amp;lt;linux/i2c-dev.h&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#include &amp;lt;linux/kernel.h&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#include &amp;lt;linux/fs.h&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;int main ( void )&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;int file;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;int adapter_nr = 0; /* probably dynamically determined */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;char filename[20];&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;char i = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;int&amp;nbsp; res;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;char buf[8],Buffer1[8];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;buf[0] = 00;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Seconds&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;buf[1] = 00;&amp;nbsp;&amp;nbsp; // Minutes&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;buf[2] = 00;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Hours&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;buf[3] = 00;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Day of week&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;buf[4] = 15;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Date&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;buf[5] = 02;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Month&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;buf[6] = 14;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Year&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;buf[7] = 0x00;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Control&amp;nbsp; = 00h &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;for(i=0; i&amp;lt;7; i++)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;buf&lt;/SPAN&gt;&lt;I&gt; = RX8035_toBCD(buf&lt;I&gt;);&lt;BR /&gt;}&lt;BR /&gt;//-- Set control bits&lt;BR /&gt;buf[2] &amp;amp;= 0x3F;&amp;nbsp;&amp;nbsp;&amp;nbsp; //-- Hours&amp;nbsp;&amp;nbsp;&amp;nbsp; bit 7(12/24) = 0(12-hour mode)&lt;BR /&gt;buf[5] &amp;amp;= 0x1F;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;snprintf(filename, 19, "/dev/i2c-%d", adapter_nr);//Make sure to give mknod /dev/i2c-2 c 89 0 in target(minicom)&lt;BR /&gt;file = open(filename, O_RDWR);&lt;BR /&gt;if (file &amp;lt; 0)&lt;BR /&gt;{&lt;BR /&gt;printf("/* ERROR IN FILE OPEN\r\n");&lt;BR /&gt;return 0;&lt;BR /&gt;}&lt;BR /&gt;else&lt;BR /&gt;printf("File open Success\r\n");&lt;BR /&gt;&lt;BR /&gt;int addr = 0x64; /* The I2C slave address(rtc) address */&lt;BR /&gt;&lt;BR /&gt;if (ioctl(file, I2C_SLAVE, addr) &amp;lt; 0) &lt;BR /&gt;{&lt;BR /&gt;printf("/* ERROR IN ioctl \r\n");&amp;nbsp;&amp;nbsp; &lt;BR /&gt;/* ERROR HANDLING; you can check errno to see what went wrong */&lt;BR /&gt;return 0;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;/* Using I2C Write, equivalent of &lt;BR /&gt;i2c_smbus_write_word_data(file, register, 0x6543) */&lt;BR /&gt;&lt;BR /&gt;if (write(file, buf, 8) != 8)&lt;BR /&gt;{&lt;BR /&gt;printf("/* ERROR IN write\r\n");&lt;BR /&gt;/* ERROR HANDLING: i2c transaction failed */&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;else&lt;BR /&gt;printf(" WRITE Succes %d\n",buf[0]);&lt;BR /&gt;&lt;BR /&gt;int addr1 = 0x65; /* The I2C address */&lt;BR /&gt;if (ioctl(file, I2C_SLAVE_FORCE, addr1) &amp;lt; 0) &lt;BR /&gt;{&lt;BR /&gt;printf("/* ERROR IN ioctl \r\n");&amp;nbsp;&amp;nbsp; &lt;BR /&gt;/* ERROR HANDLING; you can check errno to see what went wrong */&lt;BR /&gt;return 0;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;/* Using I2C Read, equivalent of i2c_smbus_read_byte(file) */&lt;BR /&gt;if (read(file, Buffer1, 8) != 8) &lt;BR /&gt;{&lt;BR /&gt;printf("/* ERROR IN Read\r\n");&lt;BR /&gt;/* ERROR HANDLING: i2c transaction failed */&lt;BR /&gt;} &lt;BR /&gt;else &lt;BR /&gt;{&lt;BR /&gt;printf("Succes %d\n",Buffer1[0]);&lt;BR /&gt;/* buf[0] contains the read byte */&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;In target(minicom) i got error like this&lt;BR /&gt;&lt;BR /&gt;~ # chmod +x i2capp &lt;BR /&gt;~ # ./i2capp &lt;BR /&gt;File open Success&lt;BR /&gt;/* ERROR IN writ------------[ cut here ]------------&lt;BR /&gt;WARNING: at kernel/irq/manage.c:274 0xa00865e7()&lt;BR /&gt;Unbalanced enable for IRQ 10&lt;BR /&gt;Modules linked in:&lt;BR /&gt;Backtrace: no frame pointer&lt;BR /&gt;---[ end trace 84d59ffaa05f0b6c ]---&lt;BR /&gt;e&lt;BR /&gt;/* ERROR IN Read&lt;BR /&gt;~ # &lt;BR /&gt;&lt;BR /&gt;Any reply will be appreciated and i need reply soon because i am strucked from past 3 days. and tell me if i'm doing any thing wrong.&lt;BR /&gt;&lt;BR /&gt;Thanq&lt;BR /&gt;Sham&lt;/I&gt;&lt;/I&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 17:55:17 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T17:55:17Z</dc:date>
    <item>
      <title>I2C USER SPACE problem in uclnux on LPC1788 cortex m3 mio board</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/I2C-USER-SPACE-problem-in-uclnux-on-LPC1788-cortex-m3-mio-board/m-p/522045#M4681</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by shamvhgowda on Mon Feb 17 00:12:20 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hello Friends,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I am using Ububtu 12.04 version and doing uclinux on LPC 1788 Board.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Since I'm new to LPCware and also new to LPC1788 uclinux. I am writing Device drivers for LPC1788 uclinux . So i'm strucked in i2c communication protocol. So can anyone help me to solve this issue.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Here is my user space code&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#include &amp;lt;signal.h&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#include &amp;lt;stdio.h&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#include &amp;lt;string.h&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#include &amp;lt;fcntl.h&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#include &amp;lt;linux/i2c.h&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#include &amp;lt;linux/i2c-dev.h&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;#include &amp;lt;linux/kernel.h&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;#include &amp;lt;linux/fs.h&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;int main ( void )&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;int file;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;int adapter_nr = 0; /* probably dynamically determined */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;char filename[20];&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;char i = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;int&amp;nbsp; res;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;char buf[8],Buffer1[8];&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;buf[0] = 00;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Seconds&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;buf[1] = 00;&amp;nbsp;&amp;nbsp; // Minutes&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;buf[2] = 00;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Hours&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;buf[3] = 00;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Day of week&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;buf[4] = 15;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Date&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;buf[5] = 02;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Month&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;buf[6] = 14;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Year&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;buf[7] = 0x00;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Control&amp;nbsp; = 00h &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;for(i=0; i&amp;lt;7; i++)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;buf&lt;/SPAN&gt;&lt;I&gt; = RX8035_toBCD(buf&lt;I&gt;);&lt;BR /&gt;}&lt;BR /&gt;//-- Set control bits&lt;BR /&gt;buf[2] &amp;amp;= 0x3F;&amp;nbsp;&amp;nbsp;&amp;nbsp; //-- Hours&amp;nbsp;&amp;nbsp;&amp;nbsp; bit 7(12/24) = 0(12-hour mode)&lt;BR /&gt;buf[5] &amp;amp;= 0x1F;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;snprintf(filename, 19, "/dev/i2c-%d", adapter_nr);//Make sure to give mknod /dev/i2c-2 c 89 0 in target(minicom)&lt;BR /&gt;file = open(filename, O_RDWR);&lt;BR /&gt;if (file &amp;lt; 0)&lt;BR /&gt;{&lt;BR /&gt;printf("/* ERROR IN FILE OPEN\r\n");&lt;BR /&gt;return 0;&lt;BR /&gt;}&lt;BR /&gt;else&lt;BR /&gt;printf("File open Success\r\n");&lt;BR /&gt;&lt;BR /&gt;int addr = 0x64; /* The I2C slave address(rtc) address */&lt;BR /&gt;&lt;BR /&gt;if (ioctl(file, I2C_SLAVE, addr) &amp;lt; 0) &lt;BR /&gt;{&lt;BR /&gt;printf("/* ERROR IN ioctl \r\n");&amp;nbsp;&amp;nbsp; &lt;BR /&gt;/* ERROR HANDLING; you can check errno to see what went wrong */&lt;BR /&gt;return 0;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;/* Using I2C Write, equivalent of &lt;BR /&gt;i2c_smbus_write_word_data(file, register, 0x6543) */&lt;BR /&gt;&lt;BR /&gt;if (write(file, buf, 8) != 8)&lt;BR /&gt;{&lt;BR /&gt;printf("/* ERROR IN write\r\n");&lt;BR /&gt;/* ERROR HANDLING: i2c transaction failed */&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;else&lt;BR /&gt;printf(" WRITE Succes %d\n",buf[0]);&lt;BR /&gt;&lt;BR /&gt;int addr1 = 0x65; /* The I2C address */&lt;BR /&gt;if (ioctl(file, I2C_SLAVE_FORCE, addr1) &amp;lt; 0) &lt;BR /&gt;{&lt;BR /&gt;printf("/* ERROR IN ioctl \r\n");&amp;nbsp;&amp;nbsp; &lt;BR /&gt;/* ERROR HANDLING; you can check errno to see what went wrong */&lt;BR /&gt;return 0;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;/* Using I2C Read, equivalent of i2c_smbus_read_byte(file) */&lt;BR /&gt;if (read(file, Buffer1, 8) != 8) &lt;BR /&gt;{&lt;BR /&gt;printf("/* ERROR IN Read\r\n");&lt;BR /&gt;/* ERROR HANDLING: i2c transaction failed */&lt;BR /&gt;} &lt;BR /&gt;else &lt;BR /&gt;{&lt;BR /&gt;printf("Succes %d\n",Buffer1[0]);&lt;BR /&gt;/* buf[0] contains the read byte */&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;In target(minicom) i got error like this&lt;BR /&gt;&lt;BR /&gt;~ # chmod +x i2capp &lt;BR /&gt;~ # ./i2capp &lt;BR /&gt;File open Success&lt;BR /&gt;/* ERROR IN writ------------[ cut here ]------------&lt;BR /&gt;WARNING: at kernel/irq/manage.c:274 0xa00865e7()&lt;BR /&gt;Unbalanced enable for IRQ 10&lt;BR /&gt;Modules linked in:&lt;BR /&gt;Backtrace: no frame pointer&lt;BR /&gt;---[ end trace 84d59ffaa05f0b6c ]---&lt;BR /&gt;e&lt;BR /&gt;/* ERROR IN Read&lt;BR /&gt;~ # &lt;BR /&gt;&lt;BR /&gt;Any reply will be appreciated and i need reply soon because i am strucked from past 3 days. and tell me if i'm doing any thing wrong.&lt;BR /&gt;&lt;BR /&gt;Thanq&lt;BR /&gt;Sham&lt;/I&gt;&lt;/I&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:55:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/I2C-USER-SPACE-problem-in-uclnux-on-LPC1788-cortex-m3-mio-board/m-p/522045#M4681</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:55:17Z</dc:date>
    </item>
  </channel>
</rss>

