<?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>Kinetis Software Development KitのトピックKSDK, FRDM-K22F Device-composite (msd-cdc) example.</title>
    <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/KSDK-FRDM-K22F-Device-composite-msd-cdc-example/m-p/536620#M5545</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, i am using KSDK, FRDM-K22F and I am new to this.I want to take the data received from Virtual Communication port and then transmit to another UART port in the MSD-CDC example. can anyone please some documents indetail for Device-composite (msd-cdc) example. how to know which UART/USB port is configured for msd and cdc in the source code and what are the changes need to be done to achieve my objective? I need some basics information about this.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 05 Jul 2016 06:15:25 GMT</pubDate>
    <dc:creator>padmavathitiwar</dc:creator>
    <dc:date>2016-07-05T06:15:25Z</dc:date>
    <item>
      <title>KSDK, FRDM-K22F Device-composite (msd-cdc) example.</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/KSDK-FRDM-K22F-Device-composite-msd-cdc-example/m-p/536620#M5545</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi, i am using KSDK, FRDM-K22F and I am new to this.I want to take the data received from Virtual Communication port and then transmit to another UART port in the MSD-CDC example. can anyone please some documents indetail for Device-composite (msd-cdc) example. how to know which UART/USB port is configured for msd and cdc in the source code and what are the changes need to be done to achieve my objective? I need some basics information about this.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 05 Jul 2016 06:15:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/KSDK-FRDM-K22F-Device-composite-msd-cdc-example/m-p/536620#M5545</guid>
      <dc:creator>padmavathitiwar</dc:creator>
      <dc:date>2016-07-05T06:15:25Z</dc:date>
    </item>
    <item>
      <title>Re: KSDK, FRDM-K22F Device-composite (msd-cdc) example.</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/KSDK-FRDM-K22F-Device-composite-msd-cdc-example/m-p/536621#M5546</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello padmavathi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;dev_composite_cdc_msc_bm_frdmk22f example included at KSDK 2.0 uses USB OTG module (it only has 1 USB OTG module that is mapped to J16 USB connector) to work as composite MSD-CDC device.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Current CDC application is designed to implement a loopback communication (for more information, you can look to this thread &lt;A href="https://community.nxp.com/thread/359149" rel="noopener noreferrer" target="_blank"&gt;KSDK VCOM example does not work without loopback&lt;/A&gt;), so if you want to implement an USB-to-UART brigde you need to implement some modifications on it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;One important thing to consider is that MCU is also connected to K20 (which works as programmer/debugger interface and also emulates a UART-to-USB brige) which implements a CDC class to communicate any terminal (commonly for debug console) to K22 through UART1 that uses PTE0 and PTE1 as TX and RX respectively (see FRDM-K22 schematic for more information), you can use PRINTF function to send to UART1 module (that is connected to K20 and it will send this information to PC through USB) or you can use another UART instance.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So I will use this UART1 instance (that is already initialized at BOARD_InitDebugConsole function) to route the incomming data from USB CDC composite device and viceversa.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;First you will need to disable loopback implementation, so, comment these lines:&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;In USB_DeviceCdcVcomTask function (virtual_com.c file):&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="_jivemacro_uid_14685149121185400 jive_macro_code jive_text_macro" data-renderedposition="456_8_1192_192" jivemacro_uid="_14685149121185400" modifiedtitle="true"&gt;&lt;P&gt;#if 0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t size = s_sendSize;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s_sendSize = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; error = USB_DeviceCdcAcmSend(g_deviceComposite-&amp;gt;cdcVcom.cdcAcmHandle, USB_CDC_VCOM_DIC_BULK_IN_ENDPOINT,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s_currSendBuf, size);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (error != kStatus_USB_Success)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Failure to send Data Handling code here */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;#else&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;In USB_DeviceCdcVcomCallback function (virtual_com.c file):&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="_jivemacro_uid_14685151461218673 jive_macro_code jive_text_macro" data-renderedposition="674_8_1192_128" jivemacro_uid="_14685151461218673" modifiedtitle="true"&gt;&lt;P&gt;if ((epCbParam-&amp;gt;buffer != NULL) || ((epCbParam-&amp;gt;buffer == NULL) &amp;amp;&amp;amp; (epCbParam-&amp;gt;length == 0)))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* User: add your own code for send complete event */&lt;/P&gt;&lt;P&gt;#if 0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Schedule buffer for next receive event */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USB_DeviceCdcAcmRecv(handle, USB_CDC_VCOM_DIC_BULK_OUT_ENDPOINT, s_currRecvBuf,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_cdcVcomDicEndpoints[0].maxPacketSize);&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Then, you will need to add UART suport for current example, go to composite.c file and add header file for UART APIs (this same line should be added in virtual_com.c file):&lt;/LI&gt;&lt;/UL&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_1468515226436636" data-renderedposition="860_8_1192_16" jivemacro_uid="_1468515226436636" modifiedtitle="true"&gt;&lt;P&gt;#include "fsl_uart.h"&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Now we should add some logic for UART (variables, calling different APIs, etc), in this case basic implementation is added: Like this functonality is intended to be fully asynchronous, I enabled RX ring buffer implementation, so add these lines to composite.c file:&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Variables:&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_1468515542355242 jive_text_macro" data-renderedposition="986_8_1192_144" jivemacro_uid="_1468515542355242" modifiedtitle="true"&gt;&lt;P&gt;#define UART_BUFFER_SIZE&amp;nbsp; 10&lt;/P&gt;&lt;P&gt;uart_handle_t g_uart1Handle;&lt;/P&gt;&lt;P&gt;uart_transfer_t sendXfer;&lt;/P&gt;&lt;P&gt;uart_transfer_t receiveXfer;&lt;/P&gt;&lt;P&gt;uint8_t sendBuffer[UART_BUFFER_SIZE] = {0};&lt;/P&gt;&lt;P&gt;uint8_t receiveBuffer[UART_BUFFER_SIZE] = {0};&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;uint8_t g_bReceiveData = false;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;size_t count = 0;&lt;/P&gt;&lt;P&gt;uint8_t g_RxData = 0;&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;Prototypes:&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_14685155895887661 jive_text_macro" data-renderedposition="1156_8_1192_16" jivemacro_uid="_14685155895887661" modifiedtitle="true"&gt;&lt;P&gt;void UART_UserCallback(UART_Type *base, uart_handle_t *handle, status_t status, void *userData);&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;Modifications on main function (It is not necessary to add UART initialization is already made on Debug Console):&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="_jivemacro_uid_14685157647366524 jive_macro_code jive_text_macro" data-renderedposition="1198_8_1192_416" jivemacro_uid="_14685157647366524" modifiedtitle="true"&gt;&lt;P&gt;#if UART_IS_NOT_DEBUG_CONSOLE&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uart_config_t config;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * config.baudRate_Bps = 115200U;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * config.parityMode = kUART_ParityDisabled;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * config.stopBitCount = kUART_OneStopBit;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * config.txFifoWatermark = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * config.rxFifoWatermark = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * config.enableTx = false;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; * config.enableRx = false;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_GetDefaultConfig(&amp;amp;config);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; config.enableTx = true;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; config.enableRx = true;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_Init(UART1, &amp;amp;config, CLOCK_GetCoreSysClkFreq());&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_TransferCreateHandle(UART1, &amp;amp;g_uart1Handle, UART_UserCallback, NULL);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_TransferStartRingBuffer(UART1, &amp;amp;g_uart1Handle, receiveBuffer, UART_BUFFER_SIZE);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; receiveXfer.data = &amp;amp;g_RxData;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; receiveXfer.dataSize = 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (kStatus_Success == UART_TransferReceiveNonBlocking(UART1, &amp;amp;g_uart1Handle, &amp;amp;receiveXfer, &amp;amp;count)) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_bReceiveData = (count == 0 ? false : true );&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;Callback:&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_14685158163916293" data-renderedposition="1640_8_1192_144" jivemacro_uid="_14685158163916293" modifiedtitle="true"&gt;&lt;P&gt;/* UART user callback */&lt;/P&gt;&lt;P&gt;void UART_UserCallback(UART_Type *base, uart_handle_t *handle, status_t status, void *userData)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (kStatus_UART_RxIdle == status)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_bReceiveData = true;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;/PRE&gt;&lt;UL&gt;&lt;LI&gt;Finally, add UART sending and receiving APIs in virtual_com.c:&lt;/LI&gt;&lt;/UL&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_1468516028923586" data-renderedposition="1816_8_1192_80" jivemacro_uid="_1468516028923586" modifiedtitle="true"&gt;&lt;P&gt;extern uart_handle_t g_uart1Handle;&lt;/P&gt;&lt;P&gt;extern uart_transfer_t sendXfer;&lt;/P&gt;&lt;P&gt;extern uart_transfer_t receiveXfer;&lt;/P&gt;&lt;P&gt;extern uint8_t sendBuffer[];&lt;/P&gt;&lt;P&gt;extern uint8_t g_bReceiveData;&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And function USB_DeviceCdcVcomTask:&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code _jivemacro_uid_14685160742685796 jive_text_macro" data-renderedposition="1948_8_1192_992" jivemacro_uid="_14685160742685796" modifiedtitle="true"&gt;&lt;P&gt;void USB_DeviceCdcVcomTask(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; usb_status_t error = kStatus_USB_Error;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((1 == g_deviceComposite-&amp;gt;cdcVcom.attach) &amp;amp;&amp;amp; (1 == g_deviceComposite-&amp;gt;cdcVcom.startTransactions))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;#if 1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (g_bReceiveData)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; error = USB_DeviceCdcAcmSend(g_deviceComposite-&amp;gt;cdcVcom.cdcAcmHandle, USB_CDC_VCOM_DIC_BULK_IN_ENDPOINT,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; receiveXfer.data, receiveXfer.dataSize);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (error != kStatus_USB_Success)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Failure to send Data Handling code here */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Request for more data */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_bReceiveData = false;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_TransferReceiveNonBlocking(UART1, &amp;amp;g_uart1Handle, &amp;amp;receiveXfer, NULL);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* User Code */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ((0 != s_recvSize) &amp;amp;&amp;amp; (0xFFFFFFFFU != s_recvSize))&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int32_t i;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Copy Buffer to Send Buff */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i = 0; i &amp;lt; s_recvSize; i++)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s_currSendBuf[s_sendSize++] = s_currRecvBuf[i];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s_recvSize = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (s_sendSize)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;#if 0&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t size = s_sendSize;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s_sendSize = 0;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; error = USB_DeviceCdcAcmSend(g_deviceComposite-&amp;gt;cdcVcom.cdcAcmHandle, USB_CDC_VCOM_DIC_BULK_IN_ENDPOINT,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s_currSendBuf, size);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (error != kStatus_USB_Success)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Failure to send Data Handling code here */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;#else&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; memcpy(sendBuffer, s_currSendBuf, s_sendSize);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sendXfer.data = sendBuffer;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sendXfer.dataSize = s_sendSize;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s_sendSize = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* There is pending data to send to UART1 */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; UART_TransferSendNonBlocking(UART1, &amp;amp;g_uart1Handle, &amp;amp;sendXfer);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Schedule buffer for next receive event */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; error = USB_DeviceCdcAcmRecv(g_deviceComposite-&amp;gt;cdcVcom.cdcAcmHandle, USB_CDC_VCOM_DIC_BULK_OUT_ENDPOINT, s_currRecvBuf,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; g_cdcVcomDicEndpoints[0].maxPacketSize);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (error != kStatus_USB_Success)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Failure to send Data Handling code here */&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;#if USB_DEVICE_CONFIG_USE_TASK&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; USB_DeviceKhciTaskFunction(g_deviceComposite-&amp;gt;cdcVcom.deviceHandle);&lt;/P&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Re-compile the project and it should be working&lt;/P&gt;&lt;P&gt;&lt;SPAN class="lia-inline-image-display-wrapper" image-alt="Example.jpg"&gt;&lt;IMG alt="Example.jpg" src="https://community.nxp.com/t5/image/serverpage/image-id/36318i8B951C5C2540D561/image-size/large?v=v2&amp;amp;px=999" title="Example.jpg" /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Attach are modified files for your reference!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If something is not clear just let me know it!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Isaac&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 02 Nov 2020 13:35:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/KSDK-FRDM-K22F-Device-composite-msd-cdc-example/m-p/536621#M5546</guid>
      <dc:creator>isaacavila</dc:creator>
      <dc:date>2020-11-02T13:35:23Z</dc:date>
    </item>
    <item>
      <title>Re: KSDK, FRDM-K22F Device-composite (msd-cdc) example.</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/KSDK-FRDM-K22F-Device-composite-msd-cdc-example/m-p/536622#M5547</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;thank you..&lt;/P&gt;&lt;P&gt;i compiled the program, i was not able to transmit/receive any data in UART application (MBED port in Tera terminal). I tried to find out the error, but i am not able to..&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 Jul 2016 08:34:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/KSDK-FRDM-K22F-Device-composite-msd-cdc-example/m-p/536622#M5547</guid>
      <dc:creator>padmavathitiwar</dc:creator>
      <dc:date>2016-07-15T08:34:25Z</dc:date>
    </item>
    <item>
      <title>Re: KSDK, FRDM-K22F Device-composite (msd-cdc) example.</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/KSDK-FRDM-K22F-Device-composite-msd-cdc-example/m-p/536623#M5548</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello Padmavathi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Are you configuring baud rate to 115200? Is also USB CDC class being enumerated correctly?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Isaac&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 15 Jul 2016 13:37:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/KSDK-FRDM-K22F-Device-composite-msd-cdc-example/m-p/536623#M5548</guid>
      <dc:creator>isaacavila</dc:creator>
      <dc:date>2016-07-15T13:37:56Z</dc:date>
    </item>
    <item>
      <title>Re: KSDK, FRDM-K22F Device-composite (msd-cdc) example.</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/KSDK-FRDM-K22F-Device-composite-msd-cdc-example/m-p/536624#M5549</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;hi, i am sorry ...i was building same program...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;i build the files which you have given, but it showing some error.. please find the attached error below.&amp;nbsp;&amp;nbsp; please help me with the error.&amp;nbsp; its showing some fatal error.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;do i need to include any of the library files. please let&amp;nbsp; me know. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;thanks for you support...&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_0.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/36519i2426FCC21B7BEC0D/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_0.png" alt="pastedImage_0.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 18 Jul 2016 03:55:06 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/KSDK-FRDM-K22F-Device-composite-msd-cdc-example/m-p/536624#M5549</guid>
      <dc:creator>padmavathitiwar</dc:creator>
      <dc:date>2016-07-18T03:55:06Z</dc:date>
    </item>
    <item>
      <title>Re: KSDK, FRDM-K22F Device-composite (msd-cdc) example.</title>
      <link>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/KSDK-FRDM-K22F-Device-composite-msd-cdc-example/m-p/536625#M5550</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You are using KSDK 1.3 and provided project was created with KSDK 2.0. One important difference between these releases is that in KSDK 2.0, libraries are not longer required, however, in KSDK 1.3, you need to compile libraries and add them to project (for default examples, they are already included), so, you need to compile USB and platform library and then re-compile the project.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would recommend to use KSDK 2.0 and try the files that I sent to you, otherwise, you will need to apply same changes to KSDK 1.3 as they were described before.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope this helps!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards,&lt;BR /&gt;Isaac&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 19 Jul 2016 13:51:42 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Software-Development-Kit/KSDK-FRDM-K22F-Device-composite-msd-cdc-example/m-p/536625#M5550</guid>
      <dc:creator>isaacavila</dc:creator>
      <dc:date>2016-07-19T13:51:42Z</dc:date>
    </item>
  </channel>
</rss>

