<?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 Re: Using shorter CRC polynomials on Kinetis CRC module (e. g. CRC-5 or CRC-12) in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Using-shorter-CRC-polynomials-on-Kinetis-CRC-module-e-g-CRC-5-or/m-p/1696783#M65367</link>
    <description>"I am planning an application that involves CRC with polynomials of unusual degrees."&lt;BR /&gt;&lt;BR /&gt;I am curious as to why?&lt;BR /&gt;&lt;BR /&gt;If you didn't already come across this, it might be helpful:&lt;BR /&gt;&lt;BR /&gt;&lt;A href="https://users.ece.cmu.edu/~koopman/crc/" target="_blank"&gt;https://users.ece.cmu.edu/~koopman/crc/&lt;/A&gt;&lt;BR /&gt;</description>
    <pubDate>Tue, 01 Aug 2023 13:55:55 GMT</pubDate>
    <dc:creator>bobpaddock</dc:creator>
    <dc:date>2023-08-01T13:55:55Z</dc:date>
    <item>
      <title>Using shorter CRC polynomials on Kinetis CRC module (e. g. CRC-5 or CRC-12)</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Using-shorter-CRC-polynomials-on-Kinetis-CRC-module-e-g-CRC-5-or/m-p/1696096#M65360</link>
      <description>&lt;P&gt;Hey!&lt;/P&gt;&lt;P&gt;I am planning an application that involves CRC with polynomials of unusual degrees.&lt;/P&gt;&lt;P&gt;Several Kinetis microcontrollers have a fast CRC engine, which supports either degree 16 polynomials or degree 32 polynomials (like Ethernet’s CRC-32). So far the documentation.&lt;/P&gt;&lt;P&gt;In general it is possible to use a certain CRC algorithm for polynomials of lower degree. (&lt;A href="https://community.nxp.com/t5/S32-Design-Studio/S32DS-CRC-8-calculation/m-p/901776/highlight/true#M4884" target="_self"&gt;Already pointed out here on the forum&lt;/A&gt;&amp;nbsp;or on &lt;A href="https://en.wikipedia.org/wiki/Mathematics_of_cyclic_redundancy_checks" target="_self"&gt;Wikipedia&lt;/A&gt;.) Just append the necessary amount of zeros &lt;EM&gt;to the least significant end&lt;/EM&gt; of the&amp;nbsp;polynomial, and remove them from the result. The input data does not need any modification. Once understood, it’s really that simple. &lt;LI-EMOJI id="lia_slightly-smiling-face" title=":slightly_smiling_face:"&gt;&lt;/LI-EMOJI&gt;&lt;/P&gt;&lt;P&gt;However, the documentation on the CRC module misses one certain thing: If the polynomial has degree 16 of 32, there will&amp;nbsp;&lt;EM&gt;always&lt;/EM&gt; be the lowest bit set in the CRC_GPOLY register (which uses normal polynomial representation). Therefore it may be sensible to optimize the hardware, such that the XOR operation on the lowest bit is not configurable, but always enabled.&lt;/P&gt;&lt;P&gt;When a polynomial of lower degree shall be used, it is neccesary to&amp;nbsp;&lt;EM&gt;clear&lt;/EM&gt; the lowest bit.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Does the CRC module support polynomials with the lowest bit cleared?&lt;/STRONG&gt; If yes, is this support general, or specific to a few devices?&lt;/P&gt;&lt;P&gt;Thanks in advance,&lt;/P&gt;&lt;P&gt;doxy&lt;/P&gt;</description>
      <pubDate>Mon, 31 Jul 2023 18:38:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Using-shorter-CRC-polynomials-on-Kinetis-CRC-module-e-g-CRC-5-or/m-p/1696096#M65360</guid>
      <dc:creator>doxy-oxyd</dc:creator>
      <dc:date>2023-07-31T18:38:33Z</dc:date>
    </item>
    <item>
      <title>Re: Using shorter CRC polynomials on Kinetis CRC module (e. g. CRC-5 or CRC-12)</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Using-shorter-CRC-polynomials-on-Kinetis-CRC-module-e-g-CRC-5-or/m-p/1696783#M65367</link>
      <description>"I am planning an application that involves CRC with polynomials of unusual degrees."&lt;BR /&gt;&lt;BR /&gt;I am curious as to why?&lt;BR /&gt;&lt;BR /&gt;If you didn't already come across this, it might be helpful:&lt;BR /&gt;&lt;BR /&gt;&lt;A href="https://users.ece.cmu.edu/~koopman/crc/" target="_blank"&gt;https://users.ece.cmu.edu/~koopman/crc/&lt;/A&gt;&lt;BR /&gt;</description>
      <pubDate>Tue, 01 Aug 2023 13:55:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Using-shorter-CRC-polynomials-on-Kinetis-CRC-module-e-g-CRC-5-or/m-p/1696783#M65367</guid>
      <dc:creator>bobpaddock</dc:creator>
      <dc:date>2023-08-01T13:55:55Z</dc:date>
    </item>
    <item>
      <title>Re: Using shorter CRC polynomials on Kinetis CRC module (e. g. CRC-5 or CRC-12</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Using-shorter-CRC-polynomials-on-Kinetis-CRC-module-e-g-CRC-5-or/m-p/1697706#M65378</link>
      <description>Why? Simple:&lt;BR /&gt;&lt;BR /&gt;I settled on a protocol based on the SPI bus with a frame size of 32 bits.&lt;BR /&gt;I think that SPI with 32 bits is the best tradeoff for all my requirements.&lt;BR /&gt;There I have at most 12 bits available for CRC.&lt;BR /&gt;&lt;BR /&gt;Another operating mode in the same application must use larger frame sizes,&lt;BR /&gt;which allow for 16–24 bit CRC.&lt;BR /&gt;&lt;BR /&gt;If Kinetis CRC modules support clearing the lowest polynomial bit, that allows&lt;BR /&gt;me to use both 24 bit and 8 bit CRC performed in hardware, which is definitely&lt;BR /&gt;the most simple solution. &lt;LI-EMOJI id="lia_slightly-smiling-face" title=":slightly_smiling_face:"&gt;&lt;/LI-EMOJI&gt;&lt;BR /&gt;&lt;BR /&gt;Yes bobpaddock, Koopman’s resources are great and helpful!</description>
      <pubDate>Wed, 02 Aug 2023 14:28:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Using-shorter-CRC-polynomials-on-Kinetis-CRC-module-e-g-CRC-5-or/m-p/1697706#M65378</guid>
      <dc:creator>doxy-oxyd</dc:creator>
      <dc:date>2023-08-02T14:28:24Z</dc:date>
    </item>
  </channel>
</rss>

