<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>SAADC Offset Calibration errors and input resistance</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/44300/saadc-offset-calibration-errors-and-input-resistance</link><description>nrf52832. 
 SDK14.2 
 Segger ES V3.34a 
 
 With an initial prototype batch of 30, we have noticed 4 modules that have incorrect voltage readings, reading low (&amp;quot;Bad Modules&amp;quot;). 
 Normally we implement the calibration routine for the offset, but found when</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Tue, 12 Mar 2019 14:51:04 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/44300/saadc-offset-calibration-errors-and-input-resistance" /><item><title>RE: SAADC Offset Calibration errors and input resistance</title><link>https://devzone.nordicsemi.com/thread/175722?ContentTypeID=1</link><pubDate>Tue, 12 Mar 2019 14:51:04 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:30cb9de3-35d5-48a6-a918-0b526de63a12</guid><dc:creator>Jared</dc:creator><description>&lt;p&gt;I&amp;#39;m suspecting that the issue might be a HW issue, more specially ground bounce on the PCB.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Could you share the schematic and layout files of the prototype?&lt;/li&gt;
&lt;li&gt;Do you have the possibility of using differential mode and see if you&amp;#39;re still observing the issue?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Best regards&lt;/p&gt;
&lt;p&gt;Jared&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SAADC Offset Calibration errors and input resistance</title><link>https://devzone.nordicsemi.com/thread/175571?ContentTypeID=1</link><pubDate>Tue, 12 Mar 2019 09:18:42 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:196e57b5-8751-4130-a297-6968bd69c701</guid><dc:creator>while(1)</dc:creator><description>&lt;p&gt;The dies are all&amp;nbsp; nRF5283-QFAA-E00.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SAADC Offset Calibration errors and input resistance</title><link>https://devzone.nordicsemi.com/thread/175115?ContentTypeID=1</link><pubDate>Fri, 08 Mar 2019 16:23:13 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5e4fcb2f-5259-45ee-8fd5-fdbf8e2b48ec</guid><dc:creator>while(1)</dc:creator><description>&lt;p&gt;Hi Jared,&lt;/p&gt;
&lt;p&gt;Thanks for looking into this...&lt;/p&gt;
&lt;p&gt;First i do this in my &amp;quot;call back&amp;quot;&lt;/p&gt;
&lt;p&gt;//set the do calibration flag.&lt;br /&gt;if((m_adc_evt_counter % SAADC_CALIBRATION_INTERVAL) == 0 &amp;amp;&amp;amp; p_event-&amp;gt;type == NRF_DRV_SAADC_EVT_DONE &amp;amp;&amp;amp; m_saadc_calibrate_done == false ) //Evaluate if offset calibration should be performed. Configure the SAADC_CALIBRATION_INTERVAL constant to change the calibration frequency&lt;/p&gt;
&lt;p&gt;{ &lt;br /&gt;nrf_drv_saadc_abort(); // Abort all ongoing conversions. Calibration cannot be run if SAADC is busy&lt;br /&gt;while(NRF_SAADC-&amp;gt;STATUS == (SAADC_STATUS_STATUS_Busy &amp;lt;&amp;lt; SAADC_STATUS_STATUS_Pos))&lt;br /&gt; &lt;br /&gt;m_saadc_calibrate = true; // Set flag to trigger calibration in main context when SAADC is stopped&lt;br /&gt;}&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;then I do this in main&lt;/p&gt;
&lt;p&gt;if(m_saadc_calibrate == true)&lt;br /&gt; {&lt;/p&gt;
&lt;p&gt;//Workaround&lt;br /&gt; //Calibration should follow the pattern STOP -&amp;gt; STOPPED -&amp;gt; CALIBRATEOFFSET -&amp;gt; CALIBRATEDONE -&amp;gt; STOP -&amp;gt; STOPPED -&amp;gt; START.&lt;br /&gt; NRF_LOG_INFO(&amp;quot;SAADC calibration starting now... \r\n&amp;quot;); //&lt;br /&gt; m_saadc_calibrate = false;&lt;br /&gt; while(nrf_drv_saadc_calibrate_offset() != NRF_SUCCESS); //Trigger calibration task&lt;/p&gt;
&lt;p&gt;nrf_saadc_disable();&lt;br /&gt; while(NRF_SAADC-&amp;gt;STATUS == (SAADC_STATUS_STATUS_Busy &amp;lt;&amp;lt; SAADC_STATUS_STATUS_Pos))&lt;br /&gt; {}&lt;br /&gt; nrf_saadc_enable();&lt;br /&gt; while(NRF_SAADC-&amp;gt;STATUS == (SAADC_STATUS_STATUS_Busy &amp;lt;&amp;lt; SAADC_STATUS_STATUS_Pos))&lt;br /&gt; {}&lt;br /&gt; m_saadc_calibrate_done = true;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt; }&lt;/p&gt;
&lt;p&gt;The weird thing is the loading of our potential divider.&amp;nbsp; The reading across it is way out of specification for our 0.1% resisters.&lt;/p&gt;
&lt;p&gt;sorry for the poor formatting&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;also the die is&amp;nbsp; nRF5283-QFAA-E00 for both examples&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SAADC Offset Calibration errors and input resistance</title><link>https://devzone.nordicsemi.com/thread/175052?ContentTypeID=1</link><pubDate>Fri, 08 Mar 2019 14:19:29 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b9aba536-2cb7-4b24-8fad-9e8f14e28be4</guid><dc:creator>Jared</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;As previously mentioned in this thread, one should have Tacq &amp;gt; 10 due to some &lt;a href="https://www.nordicsemi.com/DocLib/Content/Errata/nRF52832_Rev2/latest/ERR/nRF52832/Rev2/latest/err_832_new"&gt;Errata&amp;#39;s&lt;/a&gt;. I see that you have already tried increasing it, could you try: &lt;a href="https://www.nordicsemi.com/DocLib/Content/Errata/nRF52832_Rev2/latest/ERR/nRF52832/Rev2/latest/anomaly_832_86"&gt;Apply STOP task after calibration, before sampling. CALIBRATEOFFSET -&amp;gt; CALIBRATEDONE -&amp;gt; STOP -&amp;gt; STOPPED -&amp;gt; START&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Best regards&lt;/p&gt;
&lt;p&gt;Jared&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SAADC Offset Calibration errors and input resistance</title><link>https://devzone.nordicsemi.com/thread/174069?ContentTypeID=1</link><pubDate>Mon, 04 Mar 2019 15:51:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:0a3a2b03-b363-471b-8985-b2c9e3de886b</guid><dc:creator>hmolesworth</dc:creator><description>&lt;p&gt;There are some errata issues when Tacq &amp;lt; 5uSecs, so 40uSec test rules out those. This is another errata, easy to check, which might vary between specific dies of the same code:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;3.24 [86] SAADC: Triggering START task after offset&amp;nbsp;calibration may write a sample to RAM&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Also this one, but only for Tacq &amp;gt; 10uSecs&lt;/p&gt;
&lt;p&gt;&lt;em&gt;3.50 [178] SAADC: END event firing too early&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Are the dies all the same code (die rev &amp;amp; date)? Looks like a question for Nordic team ..&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SAADC Offset Calibration errors and input resistance</title><link>https://devzone.nordicsemi.com/thread/173891?ContentTypeID=1</link><pubDate>Mon, 04 Mar 2019 09:18:20 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:bd2e2603-36a8-480a-acae-1b8a60e6d85b</guid><dc:creator>while(1)</dc:creator><description>&lt;p&gt;Hi hmolesworth,&lt;/p&gt;
&lt;p&gt;Thanks for taking your time to look at this. I have the same results with 40uS with no change or improvements. We have also swapped all the external components from one board to the other. My issue here is&amp;nbsp;two distinct difference in operation from one device to another, both with the same firmware and operating conditions.&amp;nbsp;It&amp;#39;s my hunch that what ever is loading our external p.d. is also affecting the calibration.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: SAADC Offset Calibration errors and input resistance</title><link>https://devzone.nordicsemi.com/thread/173765?ContentTypeID=1</link><pubDate>Fri, 01 Mar 2019 16:36:40 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:33c93905-9fb6-4290-b86b-18c27f303b23</guid><dc:creator>hmolesworth</dc:creator><description>&lt;p&gt;As a test you might try slowing down the sampling (say to 10uSec) just in case those parts have higher external impedance for some reason, maybe component tolerance or even incorrect components in the case of resistors or damaged if there are any aliasing filter capacitors. The calibration is ineffective if the sampling time doesn&amp;#39;t allow full 12-bit settle on the internal sampling capacitor.&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="c_cpp"&gt;TACQ [μs]    Max source resistance [kOhm]
      3               10
      5               40
      10             100
      15             200
      20             400
      40             800&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>