<?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>MPC5xxxのトピックRe: IIC communication</title>
    <link>https://community.nxp.com/t5/MPC5xxx/IIC-communication/m-p/1732858#M24345</link>
    <description>&lt;DIV&gt;Given below is the example code used&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;#include "derivative.h" /* include peripheral declarations */&lt;/DIV&gt;&lt;DIV&gt;#include "project.h"&lt;/DIV&gt;&lt;DIV&gt;#include "mode.h"&lt;/DIV&gt;&lt;DIV&gt;#include "i2c.h"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;#define KEY_VALUE1 0x5AF0ul&lt;/DIV&gt;&lt;DIV&gt;#define KEY_VALUE2 0xA50Ful&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;extern void xcptn_xmpl(void);&lt;/DIV&gt;&lt;DIV&gt;void peri_clock_gating(void); /* Configure gating/enabling peripheral(I2C) clocks */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void hw_init(void)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;#if defined(DEBUG_SECONDARY_CORES)&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;uint32_t mctl = MC_ME.MCTL.R;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#if defined(TURN_ON_CPU1)&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/* enable core 1 in all modes */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;MC_ME.CCTL[2].R = 0x00FE;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/* Set Start address for core 1: Will reset and start */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;MC_ME.CADDR[2].R = 0x11d0000 | 0x1;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#endif&lt;/DIV&gt;&lt;DIV&gt;#if defined(TURN_ON_CPU2)&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/* enable core 2 in all modes */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;MC_ME.CCTL[3].R = 0x00FE;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/* Set Start address for core 2: Will reset and start */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;MC_ME.CADDR[3].R = 0x13a0000 | 0x1;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#endif&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;MC_ME.MCTL.R = (mctl &amp;amp; 0xffff0000ul) | KEY_VALUE1;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;MC_ME.MCTL.R =&amp;nbsp; mctl; /* key value 2 always from MCTL */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#endif /* defined(DEBUG_SECONDARY_CORES) */&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/************************************ Main ***********************************/&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;__attribute__ ((section(".text")))&lt;/DIV&gt;&lt;DIV&gt;int main(void)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;uint8_t data;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;xcptn_xmpl ();&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* Configure and Enable Interrupts */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;peri_clock_gating(); /* Configure gating/enabling peripheral(I2C) clocks */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;system160mhz();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Sets clock dividers= max freq,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;calls PLL_160MHz function which:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MC_ME.ME: enables all modes for Mode Entry module&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Connects XOSC to PLL&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PLLDIG: LOLIE=1, PLLCAL3=0x09C3_C000, no sigma delta, 160MHz&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MC_ME.DRUN_MC: configures sysclk = PLL&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Mode transition: re-enters DRUN which activates PLL=sysclk &amp;amp; peri clks&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*/&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;initI2C_1(); /* I2C1 module configured as a Master and in Transmit mode */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;initI2C_2(); /* I2C2 module configured as a Slave and in Receive mode */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/* Transmit Address */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;transmit_addr_master_I2C_1(0xFE);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;receive_addr_slave_I2C_2();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;while(1)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;transmit_data_master_I2C_1('H');&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;data = receive_data_slave_I2C_2();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if(data == 'H')&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SIUL2.MSCR[PA10].B.OBE ^= 1;&amp;nbsp; /* Pad PA10 (10): OBE=OBE xor 1. On EVB active low DS4 LED */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;data = 0;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;return 0;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/********************&amp;nbsp; End of Main ***************************************/&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void peri_clock_gating() { /* Configure gating/enabling peripheral(I2C) clocks */&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;MC_ME.RUN_PC[0].R = 0x00000000;&amp;nbsp; /* Gate off clock for all RUN modes */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;MC_ME.RUN_PC[1].R = 0x000000FE;&amp;nbsp; /* Configures peripheral clock for all RUN modes */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;MC_ME.PCTL[31].B.RUN_CFG = 0x1;&amp;nbsp; /* I2C_1: select peripheral configuration RUN_PC[1] */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;MC_ME.PCTL[32].B.RUN_CFG = 0x1;&amp;nbsp; /* I2C_2: select peripheral configuration RUN_PC[1] */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 03 Oct 2023 05:04:24 GMT</pubDate>
    <dc:creator>NandithaR</dc:creator>
    <dc:date>2023-10-03T05:04:24Z</dc:date>
    <item>
      <title>IIC communication</title>
      <link>https://community.nxp.com/t5/MPC5xxx/IIC-communication/m-p/1731184#M24332</link>
      <description>&lt;P&gt;There was an acknowledgement issue for the example code of I2C provided for MPC5748G.Is the I2C_2 module configured as slave within the microcontroller or an external slave,also how to get the address of slave.Is there any other factors other than the slave address that can lead to this no acknowledgement.&lt;/P&gt;</description>
      <pubDate>Thu, 28 Sep 2023 09:21:20 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MPC5xxx/IIC-communication/m-p/1731184#M24332</guid>
      <dc:creator>NandithaR</dc:creator>
      <dc:date>2023-09-28T09:21:20Z</dc:date>
    </item>
    <item>
      <title>Re: IIC communication</title>
      <link>https://community.nxp.com/t5/MPC5xxx/IIC-communication/m-p/1732486#M24342</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;could you please point to the example you are using? If MPC5748G is configured as slave then its address is specified by IBAD register. If it is master then slave address is sent by user, when addressing a slave. So be sure correct address is sent over I2C bus. Also check if bus is properly pulled-up.&lt;/P&gt;
&lt;P&gt;BR, Petr&lt;/P&gt;</description>
      <pubDate>Mon, 02 Oct 2023 08:56:31 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MPC5xxx/IIC-communication/m-p/1732486#M24342</guid>
      <dc:creator>PetrS</dc:creator>
      <dc:date>2023-10-02T08:56:31Z</dc:date>
    </item>
    <item>
      <title>Re: IIC communication</title>
      <link>https://community.nxp.com/t5/MPC5xxx/IIC-communication/m-p/1732858#M24345</link>
      <description>&lt;DIV&gt;Given below is the example code used&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;#include "derivative.h" /* include peripheral declarations */&lt;/DIV&gt;&lt;DIV&gt;#include "project.h"&lt;/DIV&gt;&lt;DIV&gt;#include "mode.h"&lt;/DIV&gt;&lt;DIV&gt;#include "i2c.h"&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;#define KEY_VALUE1 0x5AF0ul&lt;/DIV&gt;&lt;DIV&gt;#define KEY_VALUE2 0xA50Ful&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;extern void xcptn_xmpl(void);&lt;/DIV&gt;&lt;DIV&gt;void peri_clock_gating(void); /* Configure gating/enabling peripheral(I2C) clocks */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void hw_init(void)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;#if defined(DEBUG_SECONDARY_CORES)&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;uint32_t mctl = MC_ME.MCTL.R;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#if defined(TURN_ON_CPU1)&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/* enable core 1 in all modes */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;MC_ME.CCTL[2].R = 0x00FE;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/* Set Start address for core 1: Will reset and start */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;MC_ME.CADDR[2].R = 0x11d0000 | 0x1;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#endif&lt;/DIV&gt;&lt;DIV&gt;#if defined(TURN_ON_CPU2)&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/* enable core 2 in all modes */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;MC_ME.CCTL[3].R = 0x00FE;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/* Set Start address for core 2: Will reset and start */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;MC_ME.CADDR[3].R = 0x13a0000 | 0x1;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#endif&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;MC_ME.MCTL.R = (mctl &amp;amp; 0xffff0000ul) | KEY_VALUE1;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;MC_ME.MCTL.R =&amp;nbsp; mctl; /* key value 2 always from MCTL */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;#endif /* defined(DEBUG_SECONDARY_CORES) */&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/************************************ Main ***********************************/&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;__attribute__ ((section(".text")))&lt;/DIV&gt;&lt;DIV&gt;int main(void)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;uint8_t data;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;xcptn_xmpl ();&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* Configure and Enable Interrupts */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;peri_clock_gating(); /* Configure gating/enabling peripheral(I2C) clocks */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;system160mhz();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; /* Sets clock dividers= max freq,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;calls PLL_160MHz function which:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MC_ME.ME: enables all modes for Mode Entry module&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Connects XOSC to PLL&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;PLLDIG: LOLIE=1, PLLCAL3=0x09C3_C000, no sigma delta, 160MHz&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;MC_ME.DRUN_MC: configures sysclk = PLL&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Mode transition: re-enters DRUN which activates PLL=sysclk &amp;amp; peri clks&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;*/&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;initI2C_1(); /* I2C1 module configured as a Master and in Transmit mode */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;initI2C_2(); /* I2C2 module configured as a Slave and in Receive mode */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;/* Transmit Address */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;transmit_addr_master_I2C_1(0xFE);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;receive_addr_slave_I2C_2();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;while(1)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;transmit_data_master_I2C_1('H');&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;data = receive_data_slave_I2C_2();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if(data == 'H')&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SIUL2.MSCR[PA10].B.OBE ^= 1;&amp;nbsp; /* Pad PA10 (10): OBE=OBE xor 1. On EVB active low DS4 LED */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;data = 0;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;return 0;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;/********************&amp;nbsp; End of Main ***************************************/&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void peri_clock_gating() { /* Configure gating/enabling peripheral(I2C) clocks */&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;MC_ME.RUN_PC[0].R = 0x00000000;&amp;nbsp; /* Gate off clock for all RUN modes */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;MC_ME.RUN_PC[1].R = 0x000000FE;&amp;nbsp; /* Configures peripheral clock for all RUN modes */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;MC_ME.PCTL[31].B.RUN_CFG = 0x1;&amp;nbsp; /* I2C_1: select peripheral configuration RUN_PC[1] */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;MC_ME.PCTL[32].B.RUN_CFG = 0x1;&amp;nbsp; /* I2C_2: select peripheral configuration RUN_PC[1] */&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 03 Oct 2023 05:04:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MPC5xxx/IIC-communication/m-p/1732858#M24345</guid>
      <dc:creator>NandithaR</dc:creator>
      <dc:date>2023-10-03T05:04:24Z</dc:date>
    </item>
    <item>
      <title>Re: IIC communication</title>
      <link>https://community.nxp.com/t5/MPC5xxx/IIC-communication/m-p/1734170#M24356</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;with below pin setting and EVB connection mentioned in the example the communication is done&lt;BR /&gt;&lt;BR /&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2023-10-05_12-09-42.png" style="width: 999px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/243684iB2BAB94F2FF365EF/image-size/large?v=v2&amp;amp;px=999" role="button" title="2023-10-05_12-09-42.png" alt="2023-10-05_12-09-42.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;DIV id="tinyMceEditorPetrS_0" class="mceNonEditable lia-copypaste-placeholder"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;P&gt;Instead of internal weak pull-ups I selected, an external pull-ups should be used as mentioned in the example.&lt;/P&gt;
&lt;P&gt;BR, Petr&lt;/P&gt;</description>
      <pubDate>Thu, 05 Oct 2023 10:18:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MPC5xxx/IIC-communication/m-p/1734170#M24356</guid>
      <dc:creator>PetrS</dc:creator>
      <dc:date>2023-10-05T10:18:02Z</dc:date>
    </item>
    <item>
      <title>Re: IIC communication</title>
      <link>https://community.nxp.com/t5/MPC5xxx/IIC-communication/m-p/1751691#M24479</link>
      <description>&lt;P&gt;When I2C0 is configured as master ,while trying to write 1 to MSSL it is not setting to one 1 .What might be the reason for that?&lt;/P&gt;</description>
      <pubDate>Fri, 03 Nov 2023 07:04:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MPC5xxx/IIC-communication/m-p/1751691#M24479</guid>
      <dc:creator>NandithaR</dc:creator>
      <dc:date>2023-11-03T07:04:17Z</dc:date>
    </item>
    <item>
      <title>Re: IIC communication</title>
      <link>https://community.nxp.com/t5/MPC5xxx/IIC-communication/m-p/1752595#M24488</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;share the code you have. The demo (I2C 1 to I2C2) you mentioned is working well, so I2C0 should work similarly. Be sure pins are properly initialized and bus have pull ups.&lt;/P&gt;&lt;P&gt;BR, Petr&lt;/P&gt;</description>
      <pubDate>Mon, 06 Nov 2023 07:43:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MPC5xxx/IIC-communication/m-p/1752595#M24488</guid>
      <dc:creator>PetrS</dc:creator>
      <dc:date>2023-11-06T07:43:00Z</dc:date>
    </item>
    <item>
      <title>Re: IIC communication</title>
      <link>https://community.nxp.com/t5/MPC5xxx/IIC-communication/m-p/1752640#M24489</link>
      <description>Given below is the code :Here we are trying to write to an external EEPROM M24512-DRE.&lt;BR /&gt;&lt;BR /&gt;//#include "i2c.h"&lt;BR /&gt;#include "I2C_0.h"&lt;BR /&gt;#include "derivative.h" /* include peripheral declarations */&lt;BR /&gt;#include "project.h"&lt;BR /&gt;#include "mode.h"&lt;BR /&gt;//#include&amp;lt;MPC5748G.h&amp;gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;void initI2C_0(void) { /* I2C0 module configured as a Master and in Transmit mode */&lt;BR /&gt;//I2C_0 SDA SIGNAL&lt;BR /&gt;SIUL2.MSCR[PO0].B.OBE = 1;&lt;BR /&gt;SIUL2.MSCR[PO0].B.ODE = 1;&lt;BR /&gt;SIUL2.MSCR[PO0].B.IBE = 1;&lt;BR /&gt;SIUL2.MSCR[PO0].B.PUS = 1;&lt;BR /&gt;SIUL2.MSCR[PO0].B.PUE = 1;&lt;BR /&gt;SIUL2.MSCR[PO0].B.SSS = 2;&lt;BR /&gt;SIUL2.IMCR[266].B.SSS = 3;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;//I2C_0 SCL SIGNAL&lt;BR /&gt;SIUL2.MSCR[PO1].B.OBE = 1;&lt;BR /&gt;SIUL2.MSCR[PO1].B.ODE = 1;&lt;BR /&gt;SIUL2.MSCR[PO1].B.IBE = 1;&lt;BR /&gt;SIUL2.MSCR[PO1].B.PUS = 1;&lt;BR /&gt;SIUL2.MSCR[PO1].B.PUE = 1;&lt;BR /&gt;SIUL2.MSCR[PO1].B.SSS = 2;&lt;BR /&gt;SIUL2.IMCR[265].B.SSS =3;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;I2C_0.IBFD.B.IBC = 0x20; /* Division ratio to obtain SCL frequency from Platform clock/2. */&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;//I2C_0.IBAD.R = 0X00; /* Address of slave is 0 */;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;I2C_0.IBCR.B.MDIS = 0; /* I2C module is enabled */&lt;BR /&gt;I2C_0.IBCR.B.IBIE = 0; /* Interrupt disabled */&lt;BR /&gt;&lt;BR /&gt;I2C_0.IBCR.B.TXRX = 1; /* Transmits Data */&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;I2C_0.IBSR.R = 0x12; // Clear the IBAL, IBIF flags;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;tI2C_0_fault I2C_0_WriteBlock(uint8_t dev_addr, uint16_t reg_addr, uint8_t reg_addr_nBytes, uint8_t *pData, uint8_t nBytes)&lt;BR /&gt;{&lt;BR /&gt;if(I2C_0_Res_flg==I2C_0_FLAG_NONE)&lt;BR /&gt;{&lt;BR /&gt;I2C_0_Dev_Addr = dev_addr; // address to select a slave&lt;BR /&gt;I2C_0_Addr = reg_addr; // slave register/memory address to be written&lt;BR /&gt;pI2C_0_Data = pData; // pointer to data to be written&lt;BR /&gt;I2C_0_nBytes = nBytes; // number of bytes to be written&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;if(I2C_0.IBSR.B.IBB==1) // check if bus is busy&lt;BR /&gt;{&lt;BR /&gt;I2C_0_fault = I2C_0_BUS_BUSY;&lt;BR /&gt;return(I2C_0_fault);&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;if(reg_addr_nBytes==2) I2C_0_stage = I2C_0_STAGE_WRITE_REG_ADDRESS_HIGH;&lt;BR /&gt;if(reg_addr_nBytes==1) I2C_0_stage = I2C_0_STAGE_WRITE_REG_ADDRESS_LOW;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;I2C_0_mode = I2C_0_MODE_WRITE;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;I2C_0_Res_flg = I2C_0_FLAG_TRANSMISSION_PROGRESS;&lt;BR /&gt;I2C_0_fault = I2C_0_FRAME_NO_ENDED;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;I2C_0.IBCR.B.MSSL = 1; // Set transmit and master mode&lt;BR /&gt;I2C_0.IBCR.B.TXRX= 1; // And generate start condition&lt;BR /&gt;I2C_0.IBSR.R = 0x12; // Clear the IBAL, IBIF flags;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;I2C_0.IBDR.R = I2C_0_Dev_Addr; // Send device address&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;if(I2C_0.IBCR.B.IBIE == 0) // if interrupt is not used&lt;BR /&gt;{&lt;BR /&gt;while(I2C_0_Res_flg==I2C_0_FLAG_TRANSMISSION_PROGRESS)&lt;BR /&gt;{&lt;BR /&gt;while (I2C_0.IBSR.B.IBIF==0){}; // Wait until IBIF;&lt;BR /&gt;I2C_0_Callback();&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;if(I2C_0_Res_flg==I2C_0_FLAG_TRANSMISSION_COMPLETE)&lt;BR /&gt;{&lt;BR /&gt;I2C_0_Res_flg=I2C_0_FLAG_NONE;&lt;BR /&gt;I2C_0_fault = I2C_0_NO_FAULT;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;if(I2C_0_stage==I2C_0_STAGE_NAK) I2C_0_fault = I2C_0_NO_ACK;&lt;BR /&gt;if(I2C_0_stage==I2C_0_STAGE_ARBITRATION_LOST) I2C_0_fault = I2C_0_ARBITRATION_LOST;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;return(I2C_0_fault);&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;tI2C_0_fault I2C_0_ReadBlock_defined_addr(uint8_t dev_addr, uint16_t reg_addr,&lt;BR /&gt;uint8_t reg_addr_nBytes, uint8_t *pData, uint8_t nBytes)&lt;BR /&gt;{&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;if(I2C_0_Res_flg==I2C_0_FLAG_NONE)&lt;BR /&gt;{&lt;BR /&gt;I2C_0_Dev_Addr = dev_addr; // address to select a slave&lt;BR /&gt;I2C_0_Addr = reg_addr; // slave register/memory address to be read&lt;BR /&gt;pI2C_0_Data = pData; // pointer to data buffer to be filled&lt;BR /&gt;I2C_0_nBytes = nBytes; // number of bytes to be read&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;if(I2C_0.IBSR.B.IBB==1) // check if bus is busy&lt;BR /&gt;{&lt;BR /&gt;I2C_0_fault = I2C_0_BUS_BUSY;&lt;BR /&gt;return(I2C_0_fault);&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;if(reg_addr_nBytes==2) I2C_0_stage = I2C_0_STAGE_WRITE_REG_ADDRESS_HIGH;&lt;BR /&gt;if(reg_addr_nBytes==1) I2C_0_stage = I2C_0_STAGE_WRITE_REG_ADDRESS_LOW;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;I2C_0_mode = I2C_0_MODE_READ;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;I2C_0_Res_flg = I2C_0_FLAG_TRANSMISSION_PROGRESS;&lt;BR /&gt;I2C_0_fault = I2C_0_FRAME_NO_ENDED;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;I2C_0.IBCR.B.MSSL = 1; // Set transmit and master mode&lt;BR /&gt;I2C_0.IBCR.B.TXRX = 1; // And generate start condition&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;I2C_0.IBDR.R = I2C_0_Dev_Addr; // Send device address&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;if(I2C_0.IBCR.B.IBIE == 0) // if interrupt is not used&lt;BR /&gt;{&lt;BR /&gt;while(I2C_0_Res_flg==I2C_0_FLAG_TRANSMISSION_PROGRESS)&lt;BR /&gt;{&lt;BR /&gt;while (I2C_0.IBSR.B.IBIF==0){}; // Wait until IBIF;&lt;BR /&gt;I2C_0_Callback();&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;if(I2C_0_Res_flg==I2C_0_FLAG_TRANSMISSION_COMPLETE)&lt;BR /&gt;{&lt;BR /&gt;I2C_0_Res_flg=I2C_0_FLAG_NONE;&lt;BR /&gt;I2C_0_fault = I2C_0_NO_FAULT;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;if(I2C_0_stage==I2C_0_STAGE_NAK) I2C_0_fault = I2C_0_NO_ACK;&lt;BR /&gt;if(I2C_0_stage==I2C_0_STAGE_ARBITRATION_LOST) I2C_0_fault = I2C_0_ARBITRATION_LOST;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;return(I2C_0_fault);&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;void I2C_0_Callback(void)&lt;BR /&gt;{&lt;BR /&gt;uint8_t dummy;&lt;BR /&gt;uint8_t status;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;status = I2C_0.IBSR.R;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;if(I2C_0.IBCR.B.MSSL) // if master mode&lt;BR /&gt;{&lt;BR /&gt;if(I2C_0.IBCR.B.TXRX) // if TX&lt;BR /&gt;{&lt;BR /&gt;if((status&amp;amp;1)==0) // if ACK received, RXAK == 0&lt;BR /&gt;{&lt;BR /&gt;switch(I2C_0_stage)&lt;BR /&gt;{&lt;BR /&gt;case I2C_0_STAGE_WRITE_REG_ADDRESS_HIGH:&lt;BR /&gt;{&lt;BR /&gt;I2C_0.IBDR.R = I2C_0_Addr_H; // Send upper byte of word address;&lt;BR /&gt;I2C_0_stage = I2C_0_STAGE_WRITE_REG_ADDRESS_LOW;&lt;BR /&gt;}&lt;BR /&gt;break;&lt;BR /&gt;case I2C_0_STAGE_WRITE_REG_ADDRESS_LOW:&lt;BR /&gt;{&lt;BR /&gt;I2C_0.IBDR.R = I2C_0_Addr_L; // Send lower byte of word address;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;if(I2C_0_mode==0) I2C_0_stage = I2C_0_STAGE_WRITE_DATA;&lt;BR /&gt;else I2C_0_stage = I2C_0_STAGE_REPEATED_START;&lt;BR /&gt;}&lt;BR /&gt;break;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;case I2C_0_STAGE_REPEATED_START:&lt;BR /&gt;{&lt;BR /&gt;I2C_0.IBCR.B.RSTA = 1; // generate repeated START&lt;BR /&gt;I2C_0.IBDR.R = I2C_0_Dev_Addr | 1; // Send byte Control&lt;BR /&gt;I2C_0_stage = I2C_0_STAGE_READ_DUMMY_DATA;&lt;BR /&gt;}&lt;BR /&gt;break;&lt;BR /&gt;case I2C_0_STAGE_READ_DUMMY_DATA:&lt;BR /&gt;{&lt;BR /&gt;I2C_0.IBCR.B.TXRX = 0; // set for receive&lt;BR /&gt;if(I2C_0_nBytes==1) I2C_0.IBCR.B.NOACK = 1; // if just 1 byte is going to be read&lt;BR /&gt;// NOACK next received byte&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;dummy = I2C_0.IBDR.R; // initiates next byte data receiving&lt;BR /&gt;}&lt;BR /&gt;break;&lt;BR /&gt;case I2C_0_STAGE_WRITE_DATA:&lt;BR /&gt;{&lt;BR /&gt;if(I2C_0_nBytes) // if not last byte TXed&lt;BR /&gt;{&lt;BR /&gt;I2C_0.IBDR.R = *pI2C_0_Data++; // write data;&lt;BR /&gt;I2C_0_nBytes--;&lt;BR /&gt;}&lt;BR /&gt;else // last byte TXed&lt;BR /&gt;{&lt;BR /&gt;I2C_0.IBCR.B.MSSL = 0; // Generate stop signal;&lt;BR /&gt;I2C_0_stage = I2C_0_STAGE_NONE;&lt;BR /&gt;I2C_0_Res_flg = I2C_0_FLAG_TRANSMISSION_COMPLETE; // end of I2C transfer&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;break;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;else&lt;BR /&gt;{&lt;BR /&gt;// byte not ACKed&lt;BR /&gt;I2C_0.IBCR.B.MSSL = 0; // Generate stop signal;&lt;BR /&gt;I2C_0_stage = I2C_0_STAGE_NAK;&lt;BR /&gt;I2C_0_Res_flg = I2C_0_FLAG_TRANSMISSION_COMPLETE;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;else // if RX&lt;BR /&gt;{&lt;BR /&gt;if((I2C_0_nBytes-2)==0)&lt;BR /&gt;{&lt;BR /&gt;I2C_0.IBCR.B.NOACK = 1; // NOACK next received byte&lt;BR /&gt;}&lt;BR /&gt;if((I2C_0_nBytes-1)==0)&lt;BR /&gt;{&lt;BR /&gt;I2C_0.IBCR.B.MSSL = 0; // Set IBCR, Generate stop signal;&lt;BR /&gt;I2C_0.IBCR.B.NOACK = 0; // Reset the NOACK to default value&lt;BR /&gt;I2C_0_stage = I2C_0_STAGE_NONE;&lt;BR /&gt;I2C_0_Res_flg = I2C_0_FLAG_TRANSMISSION_COMPLETE; // end of I2C transfer&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;*(pI2C_0_Data++) = I2C_0.IBDR.R; // Read the received byte from slave&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;I2C_0_nBytes--;&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;else // if slave mode&lt;BR /&gt;{&lt;BR /&gt;if(status&amp;amp;0x10) // if IBAL bit is set&lt;BR /&gt;{&lt;BR /&gt;I2C_0_stage = I2C_0_STAGE_ARBITRATION_LOST;&lt;BR /&gt;I2C_0_Res_flg = I2C_0_FLAG_TRANSMISSION_COMPLETE; // end of I2C transfer&lt;BR /&gt;I2C_0.IBSR.R = 0x10; // clear IBAL flag&lt;BR /&gt;}&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;I2C_0.IBSR.R = 0x2; // clear IBIF flag&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Mon, 06 Nov 2023 08:35:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MPC5xxx/IIC-communication/m-p/1752640#M24489</guid>
      <dc:creator>NandithaR</dc:creator>
      <dc:date>2023-11-06T08:35:56Z</dc:date>
    </item>
    <item>
      <title>Re: IIC communication</title>
      <link>https://community.nxp.com/t5/MPC5xxx/IIC-communication/m-p/1754888#M24500</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;I do not have right board now to test I2C0 on PO0/1 pins.&lt;BR /&gt;Once you write MSSL what is a value read from IBSR?&lt;BR /&gt;Maybe MSSL is cleared due to lose of arbitration.&lt;BR /&gt;&lt;SPAN&gt;Can you measure SDA/SCL lines at this time?&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;BR, Petr&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 09 Nov 2023 10:15:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MPC5xxx/IIC-communication/m-p/1754888#M24500</guid>
      <dc:creator>PetrS</dc:creator>
      <dc:date>2023-11-09T10:15:33Z</dc:date>
    </item>
  </channel>
</rss>

