<?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中的主题 Wrong LPCOpen ADC Init</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/Wrong-LPCOpen-ADC-Init/m-p/513133#M35</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by R2D2 on Fri Dec 05 23:17:25 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;LPCOpen sample: periph_adc is converting incredible slow&amp;nbsp; :(( &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;More than 50us for a single conversion&amp;nbsp; :quest: &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Init is showing:&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;
/** Maximum sample rate in Hz (12-bit conversions) */
#define ADC_MAX_SAMPLE_RATE 50000000

Chip_ADC_SetClockRate(LPC_ADC0, ADC_MAX_SAMPLE_RATE);&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So a 72MHz board should convert with 36MHz and a single conversion should cost me 25 cycles:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;That's 25*1/36E6 = &lt;/SPAN&gt;&lt;STRONG&gt;[color=#f00]700ns[/color]&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;What's wrong here?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;SPAN&gt;BTW: This problem isn't new, see &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.lpcware.com%2Fcontent%2Fforum%2Fslow-adc-conversion-xpresso-board" rel="nofollow noopener noreferrer" target="_blank"&gt;http://www.lpcware.com/content/forum/slow-adc-conversion-xpresso-board&lt;/A&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The answer is simple:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;After setting ADC divider in Chip_ADC_SetClockRate, there's a calibration done...&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;
Chip_ADC_StartCalibration(LPC_ADC0);&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;SPAN&gt;... and [color=#f00]this calibration is setting ADC clock to 500kHz[/color] &lt;SPAN class="lia-unicode-emoji" title=":face_with_open_mouth:"&gt;&lt;LI-EMOJI id="lia_face-with-open-mouth" title=":face_with_open_mouth:"&gt;&lt;/LI-EMOJI&gt;&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So ADC is 72 times slower than expected: 0.7us * 72 = 50 us, which is measured with DWT... &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[color=#090]&lt;/SPAN&gt;&lt;STRONG&gt;&lt;BR /&gt;Solution: Set ADC clock after calibration&amp;nbsp; &lt;SPAN class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;&lt;LI-EMOJI id="lia_slightly-smiling-face" title=":slightly_smiling_face:"&gt;&lt;/LI-EMOJI&gt;&lt;/SPAN&gt; &lt;/STRONG&gt;&lt;SPAN&gt;[/color]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Note: LPCOpen sample periph_adc_rom is calibrating before ADC clock setup...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 17:03:33 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T17:03:33Z</dc:date>
    <item>
      <title>Wrong LPCOpen ADC Init</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Wrong-LPCOpen-ADC-Init/m-p/513133#M35</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by R2D2 on Fri Dec 05 23:17:25 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;LPCOpen sample: periph_adc is converting incredible slow&amp;nbsp; :(( &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;More than 50us for a single conversion&amp;nbsp; :quest: &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Init is showing:&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;
/** Maximum sample rate in Hz (12-bit conversions) */
#define ADC_MAX_SAMPLE_RATE 50000000

Chip_ADC_SetClockRate(LPC_ADC0, ADC_MAX_SAMPLE_RATE);&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So a 72MHz board should convert with 36MHz and a single conversion should cost me 25 cycles:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;That's 25*1/36E6 = &lt;/SPAN&gt;&lt;STRONG&gt;[color=#f00]700ns[/color]&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;What's wrong here?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&lt;SPAN&gt;BTW: This problem isn't new, see &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fwww.lpcware.com%2Fcontent%2Fforum%2Fslow-adc-conversion-xpresso-board" rel="nofollow noopener noreferrer" target="_blank"&gt;http://www.lpcware.com/content/forum/slow-adc-conversion-xpresso-board&lt;/A&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The answer is simple:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;After setting ADC divider in Chip_ADC_SetClockRate, there's a calibration done...&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;
Chip_ADC_StartCalibration(LPC_ADC0);&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;SPAN&gt;... and [color=#f00]this calibration is setting ADC clock to 500kHz[/color] &lt;SPAN class="lia-unicode-emoji" title=":face_with_open_mouth:"&gt;&lt;LI-EMOJI id="lia_face-with-open-mouth" title=":face_with_open_mouth:"&gt;&lt;/LI-EMOJI&gt;&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So ADC is 72 times slower than expected: 0.7us * 72 = 50 us, which is measured with DWT... &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[color=#090]&lt;/SPAN&gt;&lt;STRONG&gt;&lt;BR /&gt;Solution: Set ADC clock after calibration&amp;nbsp; &lt;SPAN class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;&lt;LI-EMOJI id="lia_slightly-smiling-face" title=":slightly_smiling_face:"&gt;&lt;/LI-EMOJI&gt;&lt;/SPAN&gt; &lt;/STRONG&gt;&lt;SPAN&gt;[/color]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Note: LPCOpen sample periph_adc_rom is calibrating before ADC clock setup...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:03:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Wrong-LPCOpen-ADC-Init/m-p/513133#M35</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:03:33Z</dc:date>
    </item>
    <item>
      <title>Re: Wrong LPCOpen ADC Init</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/Wrong-LPCOpen-ADC-Init/m-p/513134#M36</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by nerd herd on Wed Dec 10 08:30:31 MST 2014&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi R2D2,&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thank you for finding this issue. This will be looked into and reported to the software team. :)&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:03:34 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/Wrong-LPCOpen-ADC-Init/m-p/513134#M36</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:03:34Z</dc:date>
    </item>
  </channel>
</rss>

