<?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>How to get the voltage level of USB D+ and D-</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/65930/how-to-get-the-voltage-level-of-usb-d-and-d-</link><description>Hi, I want to distinguish whether the USB is connected to a PC or a power adapter. 
 For my application, FATFS still needs to work when connected to a power adapter, so it can not be distinguished via the USB event, as described in https://devzone.nordicsemi</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Tue, 15 Sep 2020 10:28:11 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/65930/how-to-get-the-voltage-level-of-usb-d-and-d-" /><item><title>RE: How to get the voltage level of USB D+ and D-</title><link>https://devzone.nordicsemi.com/thread/269613?ContentTypeID=1</link><pubDate>Tue, 15 Sep 2020 10:28:11 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d8d15930-5bc5-4de4-ba13-13ec2ad65d07</guid><dc:creator>Jason</dc:creator><description>&lt;p&gt;Hi Dmitry.&lt;/p&gt;
&lt;p&gt;Thank you for your reply.&lt;/p&gt;
&lt;p&gt;For the wall &lt;span&gt;adapter, APP_USBD_EVT_POWER_DETECTED is not the only&amp;nbsp;event.&amp;nbsp; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;pre class="ui-code" data-mode="text"&gt;void usbd_user_ev_handler(app_usbd_event_type_t event)
{
	if(event)
	{
		NRF_LOG_INFO(&amp;quot;USB event:%d&amp;quot;, event);
	}
    switch (event)
    {
        case APP_USBD_EVT_DRV_SUSPEND:
            //bsp_board_led_off(LED_USB_RESUME);
            break;
        case APP_USBD_EVT_DRV_RESUME:
            //bsp_board_led_on(LED_USB_RESUME);
            break;
        case APP_USBD_EVT_STARTED:
            //bsp_board_led_on(LED_USB_START);
            break;
        case APP_USBD_EVT_STOPPED:	  
		    NRF_LOG_INFO(&amp;quot;USB stopped&amp;quot;);
            UNUSED_RETURN_VALUE(fatfs_init());
            app_usbd_disable();
            //bsp_board_leds_off();
            break;
        case APP_USBD_EVT_POWER_DETECTED:
            NRF_LOG_INFO(&amp;quot;USB power detected&amp;quot;);
            if (!nrf_drv_usbd_is_enabled())
            {
                fatfs_uninit();
                app_usbd_enable();
            }
            break;
        case APP_USBD_EVT_POWER_REMOVED:
            NRF_LOG_INFO(&amp;quot;USB power removed&amp;quot;);
            app_usbd_stop();
            m_usb_connected = false;
            break;
        case APP_USBD_EVT_POWER_READY:
            NRF_LOG_INFO(&amp;quot;USB ready&amp;quot;);
            app_usbd_start();
            m_usb_connected = true;
            break;
        default:
            break;
    }
}&lt;/pre&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;the log as below when wall adapter is connected&lt;/strong&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;00&amp;gt; &amp;lt;info&amp;gt; app: USB event:8&lt;br /&gt;00&amp;gt; &lt;br /&gt;00&amp;gt; &amp;lt;info&amp;gt; app: USB power detected&lt;br /&gt;00&amp;gt; &lt;br /&gt;00&amp;gt; &amp;lt;info&amp;gt; app:&lt;/p&gt;
&lt;p&gt;00&amp;gt; &lt;br /&gt;00&amp;gt; &amp;lt;info&amp;gt; app: Un-initializing disk 0 (QSPI)...&lt;br /&gt;00&amp;gt; &lt;br /&gt;00&amp;gt; &amp;lt;info&amp;gt; app: USB event:10&lt;br /&gt;00&amp;gt; &lt;br /&gt;00&amp;gt; &amp;lt;info&amp;gt; app: USB ready&lt;br /&gt;00&amp;gt; &lt;br /&gt;00&amp;gt; &amp;lt;info&amp;gt; app: USB event:15&lt;br /&gt;00&amp;gt; &lt;br /&gt;00&amp;gt; &amp;lt;info&amp;gt; app: USB event:13&lt;br /&gt;00&amp;gt; &lt;br /&gt;00&amp;gt; &amp;lt;info&amp;gt; app: USB event:2&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;strong&gt;the log as below when PC is connected&lt;/strong&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;00&amp;gt; &amp;lt;info&amp;gt; app: Un-initializing disk 0 (QSPI)...&lt;br /&gt;00&amp;gt; &lt;br /&gt;00&amp;gt; &amp;lt;info&amp;gt; app: USB event:10&lt;br /&gt;00&amp;gt; &lt;br /&gt;00&amp;gt; &amp;lt;info&amp;gt; app: USB ready&lt;br /&gt;00&amp;gt; &lt;br /&gt;00&amp;gt; &amp;lt;info&amp;gt; app: USB event:15&lt;br /&gt;00&amp;gt; &lt;br /&gt;00&amp;gt; &amp;lt;info&amp;gt; app: USB event:13&lt;br /&gt;00&amp;gt; &lt;br /&gt;00&amp;gt; &amp;lt;info&amp;gt; app: USB event:2&lt;br /&gt;00&amp;gt; &lt;br /&gt;00&amp;gt; &amp;lt;info&amp;gt; app: USB event:3&lt;br /&gt;00&amp;gt; &lt;br /&gt;00&amp;gt; &amp;lt;info&amp;gt; app: USB event:1&lt;br /&gt;00&amp;gt; &lt;br /&gt;00&amp;gt; &amp;lt;info&amp;gt; app: USB event:15&lt;br /&gt;00&amp;gt; &lt;br /&gt;00&amp;gt; &amp;lt;info&amp;gt; app: USB event:1&lt;br /&gt;00&amp;gt; &lt;br /&gt;00&amp;gt; &amp;lt;info&amp;gt; app: USB event:15&lt;br /&gt;00&amp;gt; &lt;br /&gt;00&amp;gt; &amp;lt;info&amp;gt; app: USB event:15&lt;/p&gt;
&lt;p&gt;I tried to move the&amp;nbsp;fatfs_uninit function to the case of APP_USBD_EVT_DRV_RESUME event, but the MSC did not work .&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;Actually, My target is that do not&amp;nbsp;un-initialized the disk if connect to a&amp;nbsp;wall adapter.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: How to get the voltage level of USB D+ and D-</title><link>https://devzone.nordicsemi.com/thread/269593?ContentTypeID=1</link><pubDate>Tue, 15 Sep 2020 09:28:18 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f4a635f9-8eb5-47d2-9f6a-be1b0742bcb4</guid><dc:creator>Dmitry</dc:creator><description>&lt;p&gt;Hi Jason,&lt;/p&gt;
&lt;p&gt;&lt;span&gt;maybe I didn&amp;#39;t understand your case right, but I think you can still use USB SOF event - for&amp;nbsp;wall adapter, there will be only&amp;nbsp;APP_USBD_EVT_POWER_DETECTED.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;DPDMVALUE&lt;/span&gt;&lt;span&gt;&amp;nbsp;can only force D+ and D- to some state, it cannot be used to detect their states.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>