<?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: ADC sampling rate improvement in LPCXpresso IDE</title>
    <link>https://community.nxp.com/t5/LPCXpresso-IDE/ADC-sampling-rate-improvement/m-p/536262#M4989</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by NXP_Europe on Mon Jul 30 12:20:31 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi ranaya,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;did you try the 'burst mode'?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 16 Jun 2016 01:41:46 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-16T01:41:46Z</dc:date>
    <item>
      <title>ADC sampling rate improvement</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/ADC-sampling-rate-improvement/m-p/536259#M4986</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by ranaya on Thu Jul 26 01:17:56 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi all.....&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;nbsp;&amp;nbsp; I need help from u to improve my adc sampling rate of lpc1769 (xpresso board). I'm expecting to have up to 100k sampling rate for my application. It's a data logger which required logging data to an SD card. I use adc polling method. Use CMSIS libraries with little modifications.&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;These are my peripheral settings :&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;System runs at 100MHz&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;ADC clock set to 8MHz &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;SSP clock rate is 10MHz&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;My logging code :&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;

&amp;nbsp;&amp;nbsp;&amp;nbsp; while(1){
&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp;&amp;nbsp;&amp;nbsp; ADCVal = ADCRead(0);
&amp;nbsp;&amp;nbsp;&amp;nbsp; sprintf(Float_STR,"%3.3u\r\n",ADCVal);
&amp;nbsp;&amp;nbsp;&amp;nbsp; res = f_write(&amp;amp;File,Float_STR,(BYTE)strlen(Float_STR),&amp;amp;btw);
&amp;nbsp;&amp;nbsp;&amp;nbsp; if (alarm_on!= 0){
&amp;nbsp;&amp;nbsp;&amp;nbsp; if(del&amp;gt;1)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;

&amp;nbsp;&amp;nbsp;&amp;nbsp; del++;
&amp;nbsp;&amp;nbsp;&amp;nbsp; alarm_on = 0;

&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Adc Read code:&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;
uint32_t ADCRead( uint8_t channelNum ){
#if !ADC_INTERRUPT_FLAG
&amp;nbsp; uint32_t regVal, ADC_Data;
#endif
&amp;nbsp; /* channel number is 0 through 7
&amp;nbsp; if ( channelNum &amp;gt;= ADC_NUM )
&amp;nbsp; {
channelNum = 0;
&amp;nbsp; }*/
&amp;nbsp; LPC_ADC-&amp;gt;CR &amp;amp;= 0xFFFFFF00;
&amp;nbsp; LPC_ADC-&amp;gt;CR |= (1 &amp;lt;&amp;lt; 24) | (1 &amp;lt;&amp;lt; channelNum);// switch channel,start A/D convert

#if !ADC_INTERRUPT_FLAG
&amp;nbsp; while ( 1 ){/* wait until end of A/D convert */
regVal = LPC_ADC-&amp;gt;DR[channelNum];
if ( regVal &amp;amp; ADC_DONE ){
&amp;nbsp;&amp;nbsp; break;
}
&amp;nbsp; }
&amp;nbsp; LPC_ADC-&amp;gt;CR &amp;amp;= 0xF8FFFFFF;/* stop ADC now */&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&amp;nbsp; if ( regVal &amp;amp; ADC_OVERRUN ){/* save data when it's not overrun, otherwise, return zero */
&amp;nbsp; return ( 0 );
&amp;nbsp; }
&amp;nbsp; ADC_Data = ( regVal &amp;gt;&amp;gt; 4 ) &amp;amp; 0xFFF;
&amp;nbsp; return ( ADC_Data );/* return A/D conversion value */
#else
&amp;nbsp; return ( channelNum );/* if it's interrupt driven, the ADC reading is 
done inside the handler. so, return channel number */
#endif
}
&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Use RTC interrupt for 1 sec, record adc for 2 seconds. For file handling Elm fatfs is used. According to the UM, adc takes 65 cycles from the adc clock. Here ignoring the delays occur from fatfs, adc sample rate should be = adc clk/65 = 123 KHz ! I sampled a 1kz signal, and found that from log data, actual adc sampling rate is around 40Kz. Can any 1 suggest me a method to improve this ? &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;And is it ok to run both adc and ssp clocks in this way (clock speed?) ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Many Thankx&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 01:41:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/ADC-sampling-rate-improvement/m-p/536259#M4986</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T01:41:44Z</dc:date>
    </item>
    <item>
      <title>Re: ADC sampling rate improvement</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/ADC-sampling-rate-improvement/m-p/536260#M4987</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by gbm on Thu Jul 26 03:03:47 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Basic improvement -&amp;gt; change your algorithm to:&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;while (1)
{
read previous ADC measure
start next ADC measure
process the value read
}&lt;/PRE&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 01:41:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/ADC-sampling-rate-improvement/m-p/536260#M4987</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T01:41:45Z</dc:date>
    </item>
    <item>
      <title>Re: ADC sampling rate improvement</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/ADC-sampling-rate-improvement/m-p/536261#M4988</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by ranaya on Thu Jul 26 10:52:01 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi gbm, thanx for the quick response...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt; Here i'm using poling method. AdcRead() waits until conversion's done inside it. Then returns the adcvalue. So the best way is without waiting inside this function, (without calling) execute the same lines in main function, process previous value until the current reading is done am I right ??&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;What abut the execution time of f_write ? Is there a way to measure it in xpresso platform ? What if f_write() takes longer time than the time for next adc reading execution ?&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Thanx&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 01:41:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/ADC-sampling-rate-improvement/m-p/536261#M4988</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T01:41:45Z</dc:date>
    </item>
    <item>
      <title>Re: ADC sampling rate improvement</title>
      <link>https://community.nxp.com/t5/LPCXpresso-IDE/ADC-sampling-rate-improvement/m-p/536262#M4989</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by NXP_Europe on Mon Jul 30 12:20:31 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi ranaya,&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;did you try the 'burst mode'?&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 16 Jun 2016 01:41:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPCXpresso-IDE/ADC-sampling-rate-improvement/m-p/536262#M4989</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-16T01:41:46Z</dc:date>
    </item>
  </channel>
</rss>

