<?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>topic MPXY8300 LF receiver generates false interrupts in Sensors</title>
    <link>https://community.nxp.com/t5/Sensors/MPXY8300-LF-receiver-generates-false-interrupts/m-p/433805#M2096</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am dealing with MPXY8300 TPMS all in one chip ... I must say that it's documentation is not of the best quality as well as this is my third question in a row about this chip I couldn't get any single answer. So I really hope that in this section about sensors there will be somebody able to help me.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What I am about to make is to use LF 125KHz receiver for waking up my TPMS sensor. To be more precise I want to use Manchester mode. The code is veru simple as you can se down:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_14375630650737684" data-renderedposition="176_8_1156_384" jivemacro_uid="_14375630650737684" modifiedtitle="true"&gt;&lt;P&gt;void main(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* This code continously transmit TPMS packets of type VDO S1802020K */&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; UINT8 i;&lt;/P&gt;&lt;P&gt;&amp;nbsp; volatile UINT8 tmp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; volatile UINT8 RFRD_data[11];&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; PTADD |= BIT3;&amp;nbsp; // set pin A3 output&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Set up MCU and set STOP mode. */&lt;/P&gt;&lt;P&gt;&amp;nbsp; __RESET_WATCHDOG(); &lt;/P&gt;&lt;P&gt;&amp;nbsp; vfnSetupMCU();&lt;/P&gt;&lt;P&gt;&amp;nbsp; vfnSetSTOPMode(1); &lt;/P&gt;&lt;P&gt;&amp;nbsp; vfnSetupRFX();&lt;/P&gt;&lt;P&gt;&amp;nbsp; EnableInterrupts; &lt;/P&gt;&lt;P&gt;&amp;nbsp; LFCR = 0x84;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LFCS1 = 0x40;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LFCA1 = 0x61;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LFCA0 = 0x5E;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LFCS0 = 0x53;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LFCS0 |= BIT3;&lt;/P&gt;&lt;P&gt;&amp;nbsp; while(1);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;} /* main */&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is interrupt routine:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_14375631896235371" data-renderedposition="623_8_1156_320" jivemacro_uid="_14375631896235371" modifiedtitle="true"&gt;&lt;P&gt;#pragma CODE_SEG NON_BANKED&lt;/P&gt;&lt;P&gt;interrupt VectorNumber_Vlfrcvr void lfrcvr_isr(void)&lt;/P&gt;&lt;P&gt;{ &lt;/P&gt;&lt;P&gt; if (LFCS1 &amp;amp; BIT2){&amp;nbsp;&amp;nbsp; // wake up code A received&lt;/P&gt;&lt;P&gt;&amp;nbsp; LED_ON;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LED_OFF;&lt;/P&gt;&lt;P&gt; } else {&lt;/P&gt;&lt;P&gt;&amp;nbsp; if ((LFCS1 &amp;amp; BIT7) &amp;amp;&amp;amp; !(LFCS1 &amp;amp; BIT1)){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LED_ON;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LED_OFF;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt; LED_ON;&lt;/P&gt;&lt;P&gt; LED_OFF;&lt;/P&gt;&lt;P&gt; _asm BSET 6, 0x2F&lt;/P&gt;&lt;P&gt; _asm BSET 4, 0x2F&lt;/P&gt;&lt;P&gt; LFCS1 |= BIT6; // clear IF&lt;/P&gt;&lt;P&gt; //_asm cli;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;#pragma CODE_SEG DEFAULT&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As you can see, in the main function the program only loops infinitely. What happens is following. I am applying a 125KHz wake up signal from a commercial device. It starts with preamble, followed by synchronization followed by wake up code. After the reception of the wake up code, processor goes into interrupt service routine and the following flags from LFCS1 are set: LFDF, LFAF and MDDO.&lt;/P&gt;&lt;P&gt;First what I don't undestand is how is possible that other flags except LFAF are set. LFAF tells that wake up codes sent by the triggering device is the same as expected in the chip. Why LFDF flag is set, and why LFDATA regster contains 0x30. Why MDDO is set, which indicates that received Manchester data was not valid. I expect those flags are not set before correct reception of wake-up sequence.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What happens nect is following: Although I set LFDFAK flag (twice in this case) MDDO stays always one, so not cleared, which probably generates new interrupts. Finally the only thing my processor is doing is servicing ISR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the documentation, datasheet page 96, it is written:&lt;/P&gt;&lt;P&gt;"The LFR interrupt will be cleared when MDDO bit is cleared. The MDDO is cleared when a '1' is written to LFDFAK bit or a '0' is written to LFEN."&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am writting 1 to LFDFAK and MDDO stays 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In other two modes, direct MCU and Carrier detection, the processor works correctly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you in advace for your suggestions,&lt;/P&gt;&lt;P&gt;Nemanja&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 03 Feb 2026 23:06:34 GMT</pubDate>
    <dc:creator>nemanjasavic</dc:creator>
    <dc:date>2026-02-03T23:06:34Z</dc:date>
    <item>
      <title>MPXY8300 LF receiver generates false interrupts</title>
      <link>https://community.nxp.com/t5/Sensors/MPXY8300-LF-receiver-generates-false-interrupts/m-p/433805#M2096</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am dealing with MPXY8300 TPMS all in one chip ... I must say that it's documentation is not of the best quality as well as this is my third question in a row about this chip I couldn't get any single answer. So I really hope that in this section about sensors there will be somebody able to help me.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What I am about to make is to use LF 125KHz receiver for waking up my TPMS sensor. To be more precise I want to use Manchester mode. The code is veru simple as you can se down:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_14375630650737684" data-renderedposition="176_8_1156_384" jivemacro_uid="_14375630650737684" modifiedtitle="true"&gt;&lt;P&gt;void main(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; /* This code continously transmit TPMS packets of type VDO S1802020K */&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; UINT8 i;&lt;/P&gt;&lt;P&gt;&amp;nbsp; volatile UINT8 tmp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; volatile UINT8 RFRD_data[11];&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; PTADD |= BIT3;&amp;nbsp; // set pin A3 output&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; /* Set up MCU and set STOP mode. */&lt;/P&gt;&lt;P&gt;&amp;nbsp; __RESET_WATCHDOG(); &lt;/P&gt;&lt;P&gt;&amp;nbsp; vfnSetupMCU();&lt;/P&gt;&lt;P&gt;&amp;nbsp; vfnSetSTOPMode(1); &lt;/P&gt;&lt;P&gt;&amp;nbsp; vfnSetupRFX();&lt;/P&gt;&lt;P&gt;&amp;nbsp; EnableInterrupts; &lt;/P&gt;&lt;P&gt;&amp;nbsp; LFCR = 0x84;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LFCS1 = 0x40;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LFCA1 = 0x61;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LFCA0 = 0x5E;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LFCS0 = 0x53;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LFCS0 |= BIT3;&lt;/P&gt;&lt;P&gt;&amp;nbsp; while(1);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;} /* main */&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is interrupt routine:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_14375631896235371" data-renderedposition="623_8_1156_320" jivemacro_uid="_14375631896235371" modifiedtitle="true"&gt;&lt;P&gt;#pragma CODE_SEG NON_BANKED&lt;/P&gt;&lt;P&gt;interrupt VectorNumber_Vlfrcvr void lfrcvr_isr(void)&lt;/P&gt;&lt;P&gt;{ &lt;/P&gt;&lt;P&gt; if (LFCS1 &amp;amp; BIT2){&amp;nbsp;&amp;nbsp; // wake up code A received&lt;/P&gt;&lt;P&gt;&amp;nbsp; LED_ON;&lt;/P&gt;&lt;P&gt;&amp;nbsp; LED_OFF;&lt;/P&gt;&lt;P&gt; } else {&lt;/P&gt;&lt;P&gt;&amp;nbsp; if ((LFCS1 &amp;amp; BIT7) &amp;amp;&amp;amp; !(LFCS1 &amp;amp; BIT1)){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LED_ON;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LED_OFF;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt; }&lt;/P&gt;&lt;P&gt; LED_ON;&lt;/P&gt;&lt;P&gt; LED_OFF;&lt;/P&gt;&lt;P&gt; _asm BSET 6, 0x2F&lt;/P&gt;&lt;P&gt; _asm BSET 4, 0x2F&lt;/P&gt;&lt;P&gt; LFCS1 |= BIT6; // clear IF&lt;/P&gt;&lt;P&gt; //_asm cli;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;#pragma CODE_SEG DEFAULT&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As you can see, in the main function the program only loops infinitely. What happens is following. I am applying a 125KHz wake up signal from a commercial device. It starts with preamble, followed by synchronization followed by wake up code. After the reception of the wake up code, processor goes into interrupt service routine and the following flags from LFCS1 are set: LFDF, LFAF and MDDO.&lt;/P&gt;&lt;P&gt;First what I don't undestand is how is possible that other flags except LFAF are set. LFAF tells that wake up codes sent by the triggering device is the same as expected in the chip. Why LFDF flag is set, and why LFDATA regster contains 0x30. Why MDDO is set, which indicates that received Manchester data was not valid. I expect those flags are not set before correct reception of wake-up sequence.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What happens nect is following: Although I set LFDFAK flag (twice in this case) MDDO stays always one, so not cleared, which probably generates new interrupts. Finally the only thing my processor is doing is servicing ISR.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the documentation, datasheet page 96, it is written:&lt;/P&gt;&lt;P&gt;"The LFR interrupt will be cleared when MDDO bit is cleared. The MDDO is cleared when a '1' is written to LFDFAK bit or a '0' is written to LFEN."&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am writting 1 to LFDFAK and MDDO stays 1.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In other two modes, direct MCU and Carrier detection, the processor works correctly.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you in advace for your suggestions,&lt;/P&gt;&lt;P&gt;Nemanja&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 03 Feb 2026 23:06:34 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Sensors/MPXY8300-LF-receiver-generates-false-interrupts/m-p/433805#M2096</guid>
      <dc:creator>nemanjasavic</dc:creator>
      <dc:date>2026-02-03T23:06:34Z</dc:date>
    </item>
  </channel>
</rss>

