<?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中的主题 LPC1347 I2C LPCOpen driver problem or bug [Solved/Alternative]</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1347-I2C-LPCOpen-driver-problem-or-bug-Solved-Alternative/m-p/587403#M21624</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by bjornenerdes on Thu Apr 10 02:32:35 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;While trying to migrate to LPCOpen 2.05 for LPC13xx I had trouble initiating the I2C driver Chip layer (NO_BOARD_LIB).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;What I found was that the PRESETCTRL was not set:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_SYSCTL-&amp;gt;PRESETCTRL |= (0x1&amp;lt;&amp;lt;1);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Anyone having similar problems? Or am using it in the wrong way?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Now it is functioning with the following code in sysinit.c:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
STATIC const PINMUX_GRP_T pinmuxing[] = {
{0,&amp;nbsp; 4,&amp;nbsp; (IOCON_FUNC1 | IOCON_SFI2C_EN)},
{0,&amp;nbsp; 5,&amp;nbsp; (IOCON_FUNC1 | IOCON_SFI2C_EN)},
};
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;And in main.c:&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
static uint8_t txBuffer[64];
static uint8_t rxBuffer[64];
void I2C_IRQHandler(void) {
if (Chip_I2C_IsMasterActive(I2C0)) {
Chip_I2C_MasterStateHandler(I2C0);
} else {
Chip_I2C_SlaveStateHandler(I2C0);
}
}
int main(void) {
// START Initializations =====================================================
// Clock init
 if (SysTick_Config(SystemCoreClock / 1000)) {&amp;nbsp;&amp;nbsp; /* Timer 1 msec interrupts&amp;nbsp; */
while (1);}
&amp;nbsp;&amp;nbsp;&amp;nbsp; // I2C Init
 static I2C_XFER_T xfer;
 LPC_SYSCTL-&amp;gt;PRESETCTRL |= (0x1&amp;lt;&amp;lt;1);
&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_GPIO_Init(LPC_GPIO_PORT);
&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_I2C_Init(I2C0);
&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_I2C_SetClockRate(I2C0, 100000);
&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_I2C_SetMasterEventHandler(I2C0, Chip_I2C_EventHandler);
&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_EnableIRQ(I2C0_IRQn);

&amp;nbsp;&amp;nbsp;&amp;nbsp; txBuffer[0] = 0x01;
&amp;nbsp;&amp;nbsp;&amp;nbsp; xfer.slaveAddr = 0x28;
&amp;nbsp;&amp;nbsp;&amp;nbsp; xfer.txBuff = txBuffer;
&amp;nbsp;&amp;nbsp;&amp;nbsp; xfer.txSz = 1;
&amp;nbsp;&amp;nbsp;&amp;nbsp; xfer.rxSz = 2;
&amp;nbsp;&amp;nbsp;&amp;nbsp; xfer.rxBuff = rxBuffer;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_I2C_MasterTransfer(I2C0, &amp;amp;xfer);
return(0);
}
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Kind regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Björn&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;==========Solver/Alternative============&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Instead of using Chip_I2C_Init(); use master version Chip_I2CM_Init();&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 20:26:13 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T20:26:13Z</dc:date>
    <item>
      <title>LPC1347 I2C LPCOpen driver problem or bug [Solved/Alternative]</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1347-I2C-LPCOpen-driver-problem-or-bug-Solved-Alternative/m-p/587403#M21624</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by bjornenerdes on Thu Apr 10 02:32:35 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;While trying to migrate to LPCOpen 2.05 for LPC13xx I had trouble initiating the I2C driver Chip layer (NO_BOARD_LIB).&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;What I found was that the PRESETCTRL was not set:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;LPC_SYSCTL-&amp;gt;PRESETCTRL |= (0x1&amp;lt;&amp;lt;1);&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Anyone having similar problems? Or am using it in the wrong way?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Now it is functioning with the following code in sysinit.c:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
STATIC const PINMUX_GRP_T pinmuxing[] = {
{0,&amp;nbsp; 4,&amp;nbsp; (IOCON_FUNC1 | IOCON_SFI2C_EN)},
{0,&amp;nbsp; 5,&amp;nbsp; (IOCON_FUNC1 | IOCON_SFI2C_EN)},
};
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;And in main.c:&lt;/SPAN&gt;&lt;BR /&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD bgcolor="#cacaca"&gt; &lt;PRE&gt;
static uint8_t txBuffer[64];
static uint8_t rxBuffer[64];
void I2C_IRQHandler(void) {
if (Chip_I2C_IsMasterActive(I2C0)) {
Chip_I2C_MasterStateHandler(I2C0);
} else {
Chip_I2C_SlaveStateHandler(I2C0);
}
}
int main(void) {
// START Initializations =====================================================
// Clock init
 if (SysTick_Config(SystemCoreClock / 1000)) {&amp;nbsp;&amp;nbsp; /* Timer 1 msec interrupts&amp;nbsp; */
while (1);}
&amp;nbsp;&amp;nbsp;&amp;nbsp; // I2C Init
 static I2C_XFER_T xfer;
 LPC_SYSCTL-&amp;gt;PRESETCTRL |= (0x1&amp;lt;&amp;lt;1);
&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_GPIO_Init(LPC_GPIO_PORT);
&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_I2C_Init(I2C0);
&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_I2C_SetClockRate(I2C0, 100000);
&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_I2C_SetMasterEventHandler(I2C0, Chip_I2C_EventHandler);
&amp;nbsp;&amp;nbsp;&amp;nbsp; NVIC_EnableIRQ(I2C0_IRQn);

&amp;nbsp;&amp;nbsp;&amp;nbsp; txBuffer[0] = 0x01;
&amp;nbsp;&amp;nbsp;&amp;nbsp; xfer.slaveAddr = 0x28;
&amp;nbsp;&amp;nbsp;&amp;nbsp; xfer.txBuff = txBuffer;
&amp;nbsp;&amp;nbsp;&amp;nbsp; xfer.txSz = 1;
&amp;nbsp;&amp;nbsp;&amp;nbsp; xfer.rxSz = 2;
&amp;nbsp;&amp;nbsp;&amp;nbsp; xfer.rxBuff = rxBuffer;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Chip_I2C_MasterTransfer(I2C0, &amp;amp;xfer);
return(0);
}
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Kind regards,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Björn&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;==========Solver/Alternative============&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Instead of using Chip_I2C_Init(); use master version Chip_I2CM_Init();&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 20:26:13 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/LPC1347-I2C-LPCOpen-driver-problem-or-bug-Solved-Alternative/m-p/587403#M21624</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T20:26:13Z</dc:date>
    </item>
  </channel>
</rss>

