Exclude bak files from Git, more CDC ACM ports.
This commit is contained in:
parent
0649a20515
commit
1567387843
|
@ -44,6 +44,10 @@ add_executable(${MCUX_SDK_PROJECT_NAME}
|
|||
"${ProjDirPath}/source/freertos_hello.c"
|
||||
"${ProjDirPath}/source/usb_device_interface_0_cic_vcom.c"
|
||||
"${ProjDirPath}/source/usb_device_interface_0_cic_vcom.h"
|
||||
"${ProjDirPath}/source/usb_device_interface_2_cic_vcom.c"
|
||||
"${ProjDirPath}/source/usb_device_interface_2_cic_vcom.h"
|
||||
"${ProjDirPath}/source/usb_device_interface_4_cic_vcom.c"
|
||||
"${ProjDirPath}/source/usb_device_interface_4_cic_vcom.h"
|
||||
"${ProjDirPath}/source/generated/usb_device_composite.c"
|
||||
"${ProjDirPath}/source/generated/usb_device_composite.h"
|
||||
"${ProjDirPath}/source/generated/usb_device_descriptor.c"
|
||||
|
|
|
@ -1,490 +0,0 @@
|
|||
/*
|
||||
* How to setup clock using clock driver functions:
|
||||
*
|
||||
* 1. Call CLOCK_InitXXXPLL() to configure corresponding PLL clock.
|
||||
*
|
||||
* 2. Call CLOCK_InitXXXpfd() to configure corresponding PLL pfd clock.
|
||||
*
|
||||
* 3. Call CLOCK_SetMux() to configure corresponding clock source for target clock out.
|
||||
*
|
||||
* 4. Call CLOCK_SetDiv() to configure corresponding clock divider for target clock out.
|
||||
*
|
||||
* 5. Call CLOCK_SetXtalFreq() to set XTAL frequency based on board settings.
|
||||
*
|
||||
*/
|
||||
|
||||
/* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
|
||||
!!GlobalInfo
|
||||
product: Clocks v7.0
|
||||
processor: MIMXRT1052xxxxB
|
||||
package_id: MIMXRT1052DVL6B
|
||||
mcu_data: ksdk2_0
|
||||
processor_version: 9.0.1
|
||||
board: IMXRT1050-EVKB
|
||||
* BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
|
||||
|
||||
#include "clock_config.h"
|
||||
#include "fsl_iomuxc.h"
|
||||
|
||||
/*******************************************************************************
|
||||
* Definitions
|
||||
******************************************************************************/
|
||||
|
||||
/*******************************************************************************
|
||||
* Variables
|
||||
******************************************************************************/
|
||||
/* System clock frequency. */
|
||||
extern uint32_t SystemCoreClock;
|
||||
|
||||
/*******************************************************************************
|
||||
************************ BOARD_InitBootClocks function ************************
|
||||
******************************************************************************/
|
||||
void BOARD_InitBootClocks(void)
|
||||
{
|
||||
BOARD_BootClockRUN();
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
********************** Configuration BOARD_BootClockRUN ***********************
|
||||
******************************************************************************/
|
||||
/* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
|
||||
!!Configuration
|
||||
name: BOARD_BootClockRUN
|
||||
called_from_default_init: true
|
||||
outputs:
|
||||
- {id: AHB_CLK_ROOT.outFreq, value: 600 MHz}
|
||||
- {id: CAN_CLK_ROOT.outFreq, value: 40 MHz}
|
||||
- {id: CKIL_SYNC_CLK_ROOT.outFreq, value: 32.768 kHz}
|
||||
- {id: CLK_1M.outFreq, value: 1 MHz}
|
||||
- {id: CLK_24M.outFreq, value: 24 MHz}
|
||||
- {id: CSI_CLK_ROOT.outFreq, value: 12 MHz}
|
||||
- {id: ENET1_TX_CLK.outFreq, value: 2.4 MHz}
|
||||
- {id: ENET_125M_CLK.outFreq, value: 2.4 MHz}
|
||||
- {id: ENET_25M_REF_CLK.outFreq, value: 1.2 MHz}
|
||||
- {id: FLEXIO1_CLK_ROOT.outFreq, value: 30 MHz}
|
||||
- {id: FLEXIO2_CLK_ROOT.outFreq, value: 30 MHz}
|
||||
- {id: FLEXSPI_CLK_ROOT.outFreq, value: 160 MHz}
|
||||
- {id: GPT1_ipg_clk_highfreq.outFreq, value: 75 MHz}
|
||||
- {id: GPT2_ipg_clk_highfreq.outFreq, value: 75 MHz}
|
||||
- {id: IPG_CLK_ROOT.outFreq, value: 150 MHz}
|
||||
- {id: LCDIF_CLK_ROOT.outFreq, value: 67.5 MHz}
|
||||
- {id: LPI2C_CLK_ROOT.outFreq, value: 60 MHz}
|
||||
- {id: LPSPI_CLK_ROOT.outFreq, value: 105.6 MHz}
|
||||
- {id: LVDS1_CLK.outFreq, value: 1.2 GHz}
|
||||
- {id: MQS_MCLK.outFreq, value: 1080/17 MHz}
|
||||
- {id: PERCLK_CLK_ROOT.outFreq, value: 75 MHz}
|
||||
- {id: PLL7_MAIN_CLK.outFreq, value: 24 MHz}
|
||||
- {id: SAI1_CLK_ROOT.outFreq, value: 1080/17 MHz}
|
||||
- {id: SAI1_MCLK1.outFreq, value: 1080/17 MHz}
|
||||
- {id: SAI1_MCLK2.outFreq, value: 1080/17 MHz}
|
||||
- {id: SAI1_MCLK3.outFreq, value: 30 MHz}
|
||||
- {id: SAI2_CLK_ROOT.outFreq, value: 1080/17 MHz}
|
||||
- {id: SAI2_MCLK1.outFreq, value: 1080/17 MHz}
|
||||
- {id: SAI2_MCLK3.outFreq, value: 30 MHz}
|
||||
- {id: SAI3_CLK_ROOT.outFreq, value: 1080/17 MHz}
|
||||
- {id: SAI3_MCLK1.outFreq, value: 1080/17 MHz}
|
||||
- {id: SAI3_MCLK3.outFreq, value: 30 MHz}
|
||||
- {id: SEMC_CLK_ROOT.outFreq, value: 75 MHz}
|
||||
- {id: SPDIF0_CLK_ROOT.outFreq, value: 30 MHz}
|
||||
- {id: TRACE_CLK_ROOT.outFreq, value: 132 MHz}
|
||||
- {id: UART_CLK_ROOT.outFreq, value: 80 MHz}
|
||||
- {id: USDHC1_CLK_ROOT.outFreq, value: 198 MHz}
|
||||
- {id: USDHC2_CLK_ROOT.outFreq, value: 198 MHz}
|
||||
settings:
|
||||
- {id: CCM.AHB_PODF.scale, value: '1', locked: true}
|
||||
- {id: CCM.ARM_PODF.scale, value: '2', locked: true}
|
||||
- {id: CCM.FLEXSPI_PODF.scale, value: '3', locked: true}
|
||||
- {id: CCM.FLEXSPI_SEL.sel, value: CCM.PLL3_SW_CLK_SEL}
|
||||
- {id: CCM.LPSPI_PODF.scale, value: '5', locked: true}
|
||||
- {id: CCM.PERCLK_PODF.scale, value: '2', locked: true}
|
||||
- {id: CCM.SEMC_PODF.scale, value: '8'}
|
||||
- {id: CCM.TRACE_CLK_SEL.sel, value: CCM_ANALOG.PLL2_MAIN_CLK}
|
||||
- {id: CCM.TRACE_PODF.scale, value: '4', locked: true}
|
||||
- {id: CCM_ANALOG.PLL1_BYPASS.sel, value: CCM_ANALOG.PLL1}
|
||||
- {id: CCM_ANALOG.PLL1_PREDIV.scale, value: '1', locked: true}
|
||||
- {id: CCM_ANALOG.PLL1_VDIV.scale, value: '50', locked: true}
|
||||
- {id: CCM_ANALOG.PLL2.denom, value: '1', locked: true}
|
||||
- {id: CCM_ANALOG.PLL2.num, value: '0', locked: true}
|
||||
- {id: CCM_ANALOG.PLL2_BYPASS.sel, value: CCM_ANALOG.PLL2_OUT_CLK}
|
||||
- {id: CCM_ANALOG.PLL2_PFD0_BYPASS.sel, value: CCM_ANALOG.PLL2_PFD0}
|
||||
- {id: CCM_ANALOG.PLL2_PFD1_BYPASS.sel, value: CCM_ANALOG.PLL2_PFD1}
|
||||
- {id: CCM_ANALOG.PLL2_PFD2_BYPASS.sel, value: CCM_ANALOG.PLL2_PFD2}
|
||||
- {id: CCM_ANALOG.PLL2_PFD3_BYPASS.sel, value: CCM_ANALOG.PLL2_PFD3}
|
||||
- {id: CCM_ANALOG.PLL3_BYPASS.sel, value: CCM_ANALOG.PLL3}
|
||||
- {id: CCM_ANALOG.PLL3_PFD0_BYPASS.sel, value: CCM_ANALOG.PLL3_PFD0}
|
||||
- {id: CCM_ANALOG.PLL3_PFD0_DIV.scale, value: '33', locked: true}
|
||||
- {id: CCM_ANALOG.PLL3_PFD0_MUL.scale, value: '18', locked: true}
|
||||
- {id: CCM_ANALOG.PLL3_PFD1_BYPASS.sel, value: CCM_ANALOG.PLL3_PFD1}
|
||||
- {id: CCM_ANALOG.PLL3_PFD2_BYPASS.sel, value: CCM_ANALOG.PLL3_PFD2}
|
||||
- {id: CCM_ANALOG.PLL3_PFD3_BYPASS.sel, value: CCM_ANALOG.PLL3_PFD3}
|
||||
- {id: CCM_ANALOG.PLL4.denom, value: '50'}
|
||||
- {id: CCM_ANALOG.PLL4.div, value: '47'}
|
||||
- {id: CCM_ANALOG.PLL5.denom, value: '1'}
|
||||
- {id: CCM_ANALOG.PLL5.div, value: '31', locked: true}
|
||||
- {id: CCM_ANALOG.PLL5.num, value: '0'}
|
||||
- {id: CCM_ANALOG.PLL5_BYPASS.sel, value: CCM_ANALOG.PLL5_POST_DIV}
|
||||
- {id: CCM_ANALOG.PLL5_POST_DIV.scale, value: '2'}
|
||||
- {id: CCM_ANALOG.VIDEO_DIV.scale, value: '4'}
|
||||
- {id: CCM_ANALOG_PLL_ENET_POWERDOWN_CFG, value: 'Yes'}
|
||||
- {id: CCM_ANALOG_PLL_USB1_POWER_CFG, value: 'Yes'}
|
||||
- {id: CCM_ANALOG_PLL_VIDEO_POWERDOWN_CFG, value: 'No'}
|
||||
sources:
|
||||
- {id: XTALOSC24M.RTC_OSC.outFreq, value: 32.768 kHz, enabled: true}
|
||||
* BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
|
||||
|
||||
/*******************************************************************************
|
||||
* Variables for BOARD_BootClockRUN configuration
|
||||
******************************************************************************/
|
||||
const clock_arm_pll_config_t armPllConfig_BOARD_BootClockRUN =
|
||||
{
|
||||
.loopDivider = 100, /* PLL loop divider, Fout = Fin * 50 */
|
||||
.src = 0, /* Bypass clock source, 0 - OSC 24M, 1 - CLK1_P and CLK1_N */
|
||||
};
|
||||
const clock_sys_pll_config_t sysPllConfig_BOARD_BootClockRUN =
|
||||
{
|
||||
.loopDivider = 1, /* PLL loop divider, Fout = Fin * ( 20 + loopDivider*2 + numerator / denominator ) */
|
||||
.numerator = 0, /* 30 bit numerator of fractional loop divider */
|
||||
.denominator = 1, /* 30 bit denominator of fractional loop divider */
|
||||
.src = 0, /* Bypass clock source, 0 - OSC 24M, 1 - CLK1_P and CLK1_N */
|
||||
};
|
||||
const clock_usb_pll_config_t usb1PllConfig_BOARD_BootClockRUN =
|
||||
{
|
||||
.loopDivider = 0, /* PLL loop divider, Fout = Fin * 20 */
|
||||
.src = 0, /* Bypass clock source, 0 - OSC 24M, 1 - CLK1_P and CLK1_N */
|
||||
};
|
||||
const clock_video_pll_config_t videoPllConfig_BOARD_BootClockRUN =
|
||||
{
|
||||
.loopDivider = 31, /* PLL loop divider, Fout = Fin * ( loopDivider + numerator / denominator ) */
|
||||
.postDivider = 8, /* Divider after PLL */
|
||||
.numerator = 0, /* 30 bit numerator of fractional loop divider, Fout = Fin * ( loopDivider + numerator / denominator ) */
|
||||
.denominator = 1, /* 30 bit denominator of fractional loop divider, Fout = Fin * ( loopDivider + numerator / denominator ) */
|
||||
.src = 0, /* Bypass clock source, 0 - OSC 24M, 1 - CLK1_P and CLK1_N */
|
||||
};
|
||||
/*******************************************************************************
|
||||
* Code for BOARD_BootClockRUN configuration
|
||||
******************************************************************************/
|
||||
void BOARD_BootClockRUN(void)
|
||||
{
|
||||
/* Init RTC OSC clock frequency. */
|
||||
CLOCK_SetRtcXtalFreq(32768U);
|
||||
/* Enable 1MHz clock output. */
|
||||
XTALOSC24M->OSC_CONFIG2 |= XTALOSC24M_OSC_CONFIG2_ENABLE_1M_MASK;
|
||||
/* Use free 1MHz clock output. */
|
||||
XTALOSC24M->OSC_CONFIG2 &= ~XTALOSC24M_OSC_CONFIG2_MUX_1M_MASK;
|
||||
/* Set XTAL 24MHz clock frequency. */
|
||||
CLOCK_SetXtalFreq(24000000U);
|
||||
/* Enable XTAL 24MHz clock source. */
|
||||
CLOCK_InitExternalClk(0);
|
||||
/* Enable internal RC. */
|
||||
CLOCK_InitRcOsc24M();
|
||||
/* Switch clock source to external OSC. */
|
||||
CLOCK_SwitchOsc(kCLOCK_XtalOsc);
|
||||
/* Set Oscillator ready counter value. */
|
||||
CCM->CCR = (CCM->CCR & (~CCM_CCR_OSCNT_MASK)) | CCM_CCR_OSCNT(127);
|
||||
/* Setting PeriphClk2Mux and PeriphMux to provide stable clock before PLLs are initialed */
|
||||
CLOCK_SetMux(kCLOCK_PeriphClk2Mux, 1); /* Set PERIPH_CLK2 MUX to OSC */
|
||||
CLOCK_SetMux(kCLOCK_PeriphMux, 1); /* Set PERIPH_CLK MUX to PERIPH_CLK2 */
|
||||
/* Setting the VDD_SOC to 1.275V. It is necessary to config AHB to 600Mhz. */
|
||||
DCDC->REG3 = (DCDC->REG3 & (~DCDC_REG3_TRG_MASK)) | DCDC_REG3_TRG(0x13);
|
||||
/* Waiting for DCDC_STS_DC_OK bit is asserted */
|
||||
while (DCDC_REG0_STS_DC_OK_MASK != (DCDC_REG0_STS_DC_OK_MASK & DCDC->REG0))
|
||||
{
|
||||
}
|
||||
/* Set AHB_PODF. */
|
||||
CLOCK_SetDiv(kCLOCK_AhbDiv, 0);
|
||||
/* Disable IPG clock gate. */
|
||||
CLOCK_DisableClock(kCLOCK_Adc1);
|
||||
CLOCK_DisableClock(kCLOCK_Adc2);
|
||||
CLOCK_DisableClock(kCLOCK_Xbar1);
|
||||
CLOCK_DisableClock(kCLOCK_Xbar2);
|
||||
CLOCK_DisableClock(kCLOCK_Xbar3);
|
||||
/* Set IPG_PODF. */
|
||||
CLOCK_SetDiv(kCLOCK_IpgDiv, 3);
|
||||
/* Set ARM_PODF. */
|
||||
CLOCK_SetDiv(kCLOCK_ArmDiv, 1);
|
||||
/* Set PERIPH_CLK2_PODF. */
|
||||
CLOCK_SetDiv(kCLOCK_PeriphClk2Div, 0);
|
||||
/* Disable PERCLK clock gate. */
|
||||
CLOCK_DisableClock(kCLOCK_Gpt1);
|
||||
CLOCK_DisableClock(kCLOCK_Gpt1S);
|
||||
CLOCK_DisableClock(kCLOCK_Gpt2);
|
||||
CLOCK_DisableClock(kCLOCK_Gpt2S);
|
||||
CLOCK_DisableClock(kCLOCK_Pit);
|
||||
/* Set PERCLK_PODF. */
|
||||
CLOCK_SetDiv(kCLOCK_PerclkDiv, 1);
|
||||
/* Disable USDHC1 clock gate. */
|
||||
CLOCK_DisableClock(kCLOCK_Usdhc1);
|
||||
/* Set USDHC1_PODF. */
|
||||
CLOCK_SetDiv(kCLOCK_Usdhc1Div, 1);
|
||||
/* Set Usdhc1 clock source. */
|
||||
CLOCK_SetMux(kCLOCK_Usdhc1Mux, 0);
|
||||
/* Disable USDHC2 clock gate. */
|
||||
CLOCK_DisableClock(kCLOCK_Usdhc2);
|
||||
/* Set USDHC2_PODF. */
|
||||
CLOCK_SetDiv(kCLOCK_Usdhc2Div, 1);
|
||||
/* Set Usdhc2 clock source. */
|
||||
CLOCK_SetMux(kCLOCK_Usdhc2Mux, 0);
|
||||
/* In SDK projects, SDRAM (configured by SEMC) will be initialized in either debug script or dcd.
|
||||
* With this macro SKIP_SYSCLK_INIT, system pll (selected to be SEMC source clock in SDK projects) will be left unchanged.
|
||||
* Note: If another clock source is selected for SEMC, user may want to avoid changing that clock as well.*/
|
||||
#ifndef SKIP_SYSCLK_INIT
|
||||
/* Disable Semc clock gate. */
|
||||
CLOCK_DisableClock(kCLOCK_Semc);
|
||||
/* Set SEMC_PODF. */
|
||||
CLOCK_SetDiv(kCLOCK_SemcDiv, 7);
|
||||
/* Set Semc alt clock source. */
|
||||
CLOCK_SetMux(kCLOCK_SemcAltMux, 0);
|
||||
/* Set Semc clock source. */
|
||||
CLOCK_SetMux(kCLOCK_SemcMux, 0);
|
||||
#endif
|
||||
/* In SDK projects, external flash (configured by FLEXSPI) will be initialized by dcd.
|
||||
* With this macro XIP_EXTERNAL_FLASH, usb1 pll (selected to be FLEXSPI clock source in SDK projects) will be left unchanged.
|
||||
* Note: If another clock source is selected for FLEXSPI, user may want to avoid changing that clock as well.*/
|
||||
#if !(defined(XIP_EXTERNAL_FLASH) && (XIP_EXTERNAL_FLASH == 1))
|
||||
/* Disable Flexspi clock gate. */
|
||||
CLOCK_DisableClock(kCLOCK_FlexSpi);
|
||||
/* Set FLEXSPI_PODF. */
|
||||
CLOCK_SetDiv(kCLOCK_FlexspiDiv, 2);
|
||||
/* Set Flexspi clock source. */
|
||||
CLOCK_SetMux(kCLOCK_FlexspiMux, 1);
|
||||
#endif
|
||||
/* Disable CSI clock gate. */
|
||||
CLOCK_DisableClock(kCLOCK_Csi);
|
||||
/* Set CSI_PODF. */
|
||||
CLOCK_SetDiv(kCLOCK_CsiDiv, 1);
|
||||
/* Set Csi clock source. */
|
||||
CLOCK_SetMux(kCLOCK_CsiMux, 0);
|
||||
/* Disable LPSPI clock gate. */
|
||||
CLOCK_DisableClock(kCLOCK_Lpspi1);
|
||||
CLOCK_DisableClock(kCLOCK_Lpspi2);
|
||||
CLOCK_DisableClock(kCLOCK_Lpspi3);
|
||||
CLOCK_DisableClock(kCLOCK_Lpspi4);
|
||||
/* Set LPSPI_PODF. */
|
||||
CLOCK_SetDiv(kCLOCK_LpspiDiv, 4);
|
||||
/* Set Lpspi clock source. */
|
||||
CLOCK_SetMux(kCLOCK_LpspiMux, 2);
|
||||
/* Disable TRACE clock gate. */
|
||||
CLOCK_DisableClock(kCLOCK_Trace);
|
||||
/* Set TRACE_PODF. */
|
||||
CLOCK_SetDiv(kCLOCK_TraceDiv, 3);
|
||||
/* Set Trace clock source. */
|
||||
CLOCK_SetMux(kCLOCK_TraceMux, 0);
|
||||
/* Disable SAI1 clock gate. */
|
||||
CLOCK_DisableClock(kCLOCK_Sai1);
|
||||
/* Set SAI1_CLK_PRED. */
|
||||
CLOCK_SetDiv(kCLOCK_Sai1PreDiv, 3);
|
||||
/* Set SAI1_CLK_PODF. */
|
||||
CLOCK_SetDiv(kCLOCK_Sai1Div, 1);
|
||||
/* Set Sai1 clock source. */
|
||||
CLOCK_SetMux(kCLOCK_Sai1Mux, 0);
|
||||
/* Disable SAI2 clock gate. */
|
||||
CLOCK_DisableClock(kCLOCK_Sai2);
|
||||
/* Set SAI2_CLK_PRED. */
|
||||
CLOCK_SetDiv(kCLOCK_Sai2PreDiv, 3);
|
||||
/* Set SAI2_CLK_PODF. */
|
||||
CLOCK_SetDiv(kCLOCK_Sai2Div, 1);
|
||||
/* Set Sai2 clock source. */
|
||||
CLOCK_SetMux(kCLOCK_Sai2Mux, 0);
|
||||
/* Disable SAI3 clock gate. */
|
||||
CLOCK_DisableClock(kCLOCK_Sai3);
|
||||
/* Set SAI3_CLK_PRED. */
|
||||
CLOCK_SetDiv(kCLOCK_Sai3PreDiv, 3);
|
||||
/* Set SAI3_CLK_PODF. */
|
||||
CLOCK_SetDiv(kCLOCK_Sai3Div, 1);
|
||||
/* Set Sai3 clock source. */
|
||||
CLOCK_SetMux(kCLOCK_Sai3Mux, 0);
|
||||
/* Disable Lpi2c clock gate. */
|
||||
CLOCK_DisableClock(kCLOCK_Lpi2c1);
|
||||
CLOCK_DisableClock(kCLOCK_Lpi2c2);
|
||||
CLOCK_DisableClock(kCLOCK_Lpi2c3);
|
||||
/* Set LPI2C_CLK_PODF. */
|
||||
CLOCK_SetDiv(kCLOCK_Lpi2cDiv, 0);
|
||||
/* Set Lpi2c clock source. */
|
||||
CLOCK_SetMux(kCLOCK_Lpi2cMux, 0);
|
||||
/* Disable CAN clock gate. */
|
||||
CLOCK_DisableClock(kCLOCK_Can1);
|
||||
CLOCK_DisableClock(kCLOCK_Can2);
|
||||
CLOCK_DisableClock(kCLOCK_Can1S);
|
||||
CLOCK_DisableClock(kCLOCK_Can2S);
|
||||
/* Set CAN_CLK_PODF. */
|
||||
CLOCK_SetDiv(kCLOCK_CanDiv, 1);
|
||||
/* Set Can clock source. */
|
||||
CLOCK_SetMux(kCLOCK_CanMux, 2);
|
||||
/* Disable UART clock gate. */
|
||||
CLOCK_DisableClock(kCLOCK_Lpuart1);
|
||||
CLOCK_DisableClock(kCLOCK_Lpuart2);
|
||||
CLOCK_DisableClock(kCLOCK_Lpuart3);
|
||||
CLOCK_DisableClock(kCLOCK_Lpuart4);
|
||||
CLOCK_DisableClock(kCLOCK_Lpuart5);
|
||||
CLOCK_DisableClock(kCLOCK_Lpuart6);
|
||||
CLOCK_DisableClock(kCLOCK_Lpuart7);
|
||||
CLOCK_DisableClock(kCLOCK_Lpuart8);
|
||||
/* Set UART_CLK_PODF. */
|
||||
CLOCK_SetDiv(kCLOCK_UartDiv, 0);
|
||||
/* Set Uart clock source. */
|
||||
CLOCK_SetMux(kCLOCK_UartMux, 0);
|
||||
/* Disable LCDIF clock gate. */
|
||||
CLOCK_DisableClock(kCLOCK_LcdPixel);
|
||||
/* Set LCDIF_PRED. */
|
||||
CLOCK_SetDiv(kCLOCK_LcdifPreDiv, 1);
|
||||
/* Set LCDIF_CLK_PODF. */
|
||||
CLOCK_SetDiv(kCLOCK_LcdifDiv, 3);
|
||||
/* Set Lcdif pre clock source. */
|
||||
CLOCK_SetMux(kCLOCK_LcdifPreMux, 5);
|
||||
/* Disable SPDIF clock gate. */
|
||||
CLOCK_DisableClock(kCLOCK_Spdif);
|
||||
/* Set SPDIF0_CLK_PRED. */
|
||||
CLOCK_SetDiv(kCLOCK_Spdif0PreDiv, 1);
|
||||
/* Set SPDIF0_CLK_PODF. */
|
||||
CLOCK_SetDiv(kCLOCK_Spdif0Div, 7);
|
||||
/* Set Spdif clock source. */
|
||||
CLOCK_SetMux(kCLOCK_SpdifMux, 3);
|
||||
/* Disable Flexio1 clock gate. */
|
||||
CLOCK_DisableClock(kCLOCK_Flexio1);
|
||||
/* Set FLEXIO1_CLK_PRED. */
|
||||
CLOCK_SetDiv(kCLOCK_Flexio1PreDiv, 1);
|
||||
/* Set FLEXIO1_CLK_PODF. */
|
||||
CLOCK_SetDiv(kCLOCK_Flexio1Div, 7);
|
||||
/* Set Flexio1 clock source. */
|
||||
CLOCK_SetMux(kCLOCK_Flexio1Mux, 3);
|
||||
/* Disable Flexio2 clock gate. */
|
||||
CLOCK_DisableClock(kCLOCK_Flexio2);
|
||||
/* Set FLEXIO2_CLK_PRED. */
|
||||
CLOCK_SetDiv(kCLOCK_Flexio2PreDiv, 1);
|
||||
/* Set FLEXIO2_CLK_PODF. */
|
||||
CLOCK_SetDiv(kCLOCK_Flexio2Div, 7);
|
||||
/* Set Flexio2 clock source. */
|
||||
CLOCK_SetMux(kCLOCK_Flexio2Mux, 3);
|
||||
/* Set Pll3 sw clock source. */
|
||||
CLOCK_SetMux(kCLOCK_Pll3SwMux, 0);
|
||||
/* Init ARM PLL. */
|
||||
CLOCK_InitArmPll(&armPllConfig_BOARD_BootClockRUN);
|
||||
/* In SDK projects, SDRAM (configured by SEMC) will be initialized in either debug script or dcd.
|
||||
* With this macro SKIP_SYSCLK_INIT, system pll (selected to be SEMC source clock in SDK projects) will be left unchanged.
|
||||
* Note: If another clock source is selected for SEMC, user may want to avoid changing that clock as well.*/
|
||||
#ifndef SKIP_SYSCLK_INIT
|
||||
#if defined(XIP_BOOT_HEADER_DCD_ENABLE) && (XIP_BOOT_HEADER_DCD_ENABLE == 1)
|
||||
#warning "SKIP_SYSCLK_INIT should be defined to keep system pll (selected to be SEMC source clock in SDK projects) unchanged."
|
||||
#endif
|
||||
/* Init System PLL. */
|
||||
CLOCK_InitSysPll(&sysPllConfig_BOARD_BootClockRUN);
|
||||
/* Init System pfd0. */
|
||||
CLOCK_InitSysPfd(kCLOCK_Pfd0, 27);
|
||||
/* Init System pfd1. */
|
||||
CLOCK_InitSysPfd(kCLOCK_Pfd1, 16);
|
||||
/* Init System pfd2. */
|
||||
CLOCK_InitSysPfd(kCLOCK_Pfd2, 24);
|
||||
/* Init System pfd3. */
|
||||
CLOCK_InitSysPfd(kCLOCK_Pfd3, 16);
|
||||
/* Disable pfd offset. */
|
||||
CCM_ANALOG->PLL_SYS &= ~CCM_ANALOG_PLL_SYS_PFD_OFFSET_EN_MASK;
|
||||
#endif
|
||||
/* In SDK projects, external flash (configured by FLEXSPI) will be initialized by dcd.
|
||||
* With this macro XIP_EXTERNAL_FLASH, usb1 pll (selected to be FLEXSPI clock source in SDK projects) will be left unchanged.
|
||||
* Note: If another clock source is selected for FLEXSPI, user may want to avoid changing that clock as well.*/
|
||||
#if !(defined(XIP_EXTERNAL_FLASH) && (XIP_EXTERNAL_FLASH == 1))
|
||||
/* Init Usb1 PLL. */
|
||||
CLOCK_InitUsb1Pll(&usb1PllConfig_BOARD_BootClockRUN);
|
||||
/* Init Usb1 pfd0. */
|
||||
CLOCK_InitUsb1Pfd(kCLOCK_Pfd0, 33);
|
||||
/* Init Usb1 pfd1. */
|
||||
CLOCK_InitUsb1Pfd(kCLOCK_Pfd1, 16);
|
||||
/* Init Usb1 pfd2. */
|
||||
CLOCK_InitUsb1Pfd(kCLOCK_Pfd2, 17);
|
||||
/* Init Usb1 pfd3. */
|
||||
CLOCK_InitUsb1Pfd(kCLOCK_Pfd3, 19);
|
||||
/* Disable Usb1 PLL output for USBPHY1. */
|
||||
CCM_ANALOG->PLL_USB1 &= ~CCM_ANALOG_PLL_USB1_EN_USB_CLKS_MASK;
|
||||
#endif
|
||||
/* DeInit Audio PLL. */
|
||||
CLOCK_DeinitAudioPll();
|
||||
/* Bypass Audio PLL. */
|
||||
CLOCK_SetPllBypass(CCM_ANALOG, kCLOCK_PllAudio, 1);
|
||||
/* Set divider for Audio PLL. */
|
||||
CCM_ANALOG->MISC2 &= ~CCM_ANALOG_MISC2_AUDIO_DIV_LSB_MASK;
|
||||
CCM_ANALOG->MISC2 &= ~CCM_ANALOG_MISC2_AUDIO_DIV_MSB_MASK;
|
||||
/* Enable Audio PLL output. */
|
||||
CCM_ANALOG->PLL_AUDIO |= CCM_ANALOG_PLL_AUDIO_ENABLE_MASK;
|
||||
/* Init Video PLL. */
|
||||
uint32_t pllVideo;
|
||||
/* Disable Video PLL output before initial Video PLL. */
|
||||
CCM_ANALOG->PLL_VIDEO &= ~CCM_ANALOG_PLL_VIDEO_ENABLE_MASK;
|
||||
/* Bypass PLL first */
|
||||
CCM_ANALOG->PLL_VIDEO = (CCM_ANALOG->PLL_VIDEO & (~CCM_ANALOG_PLL_VIDEO_BYPASS_CLK_SRC_MASK)) |
|
||||
CCM_ANALOG_PLL_VIDEO_BYPASS_MASK | CCM_ANALOG_PLL_VIDEO_BYPASS_CLK_SRC(0);
|
||||
CCM_ANALOG->PLL_VIDEO_NUM = CCM_ANALOG_PLL_VIDEO_NUM_A(0);
|
||||
CCM_ANALOG->PLL_VIDEO_DENOM = CCM_ANALOG_PLL_VIDEO_DENOM_B(1);
|
||||
pllVideo = (CCM_ANALOG->PLL_VIDEO & (~(CCM_ANALOG_PLL_VIDEO_DIV_SELECT_MASK | CCM_ANALOG_PLL_VIDEO_POWERDOWN_MASK))) |
|
||||
CCM_ANALOG_PLL_VIDEO_ENABLE_MASK |CCM_ANALOG_PLL_VIDEO_DIV_SELECT(31);
|
||||
pllVideo |= CCM_ANALOG_PLL_VIDEO_POST_DIV_SELECT(1);
|
||||
CCM_ANALOG->MISC2 = (CCM_ANALOG->MISC2 & (~CCM_ANALOG_MISC2_VIDEO_DIV_MASK)) | CCM_ANALOG_MISC2_VIDEO_DIV(3);
|
||||
CCM_ANALOG->PLL_VIDEO = pllVideo;
|
||||
while ((CCM_ANALOG->PLL_VIDEO & CCM_ANALOG_PLL_VIDEO_LOCK_MASK) == 0)
|
||||
{
|
||||
}
|
||||
/* Disable pfd offset. */
|
||||
CCM_ANALOG->PLL_VIDEO &= ~CCM_ANALOG_PLL_VIDEO_PFD_OFFSET_EN_MASK;
|
||||
/* Disable bypass for Video PLL. */
|
||||
CLOCK_SetPllBypass(CCM_ANALOG, kCLOCK_PllVideo, 0);
|
||||
/* DeInit Enet PLL. */
|
||||
CLOCK_DeinitEnetPll();
|
||||
/* Bypass Enet PLL. */
|
||||
CLOCK_SetPllBypass(CCM_ANALOG, kCLOCK_PllEnet, 1);
|
||||
/* Set Enet output divider. */
|
||||
CCM_ANALOG->PLL_ENET = (CCM_ANALOG->PLL_ENET & (~CCM_ANALOG_PLL_ENET_DIV_SELECT_MASK)) | CCM_ANALOG_PLL_ENET_DIV_SELECT(1);
|
||||
/* Enable Enet output. */
|
||||
CCM_ANALOG->PLL_ENET |= CCM_ANALOG_PLL_ENET_ENABLE_MASK;
|
||||
/* Enable Enet25M output. */
|
||||
CCM_ANALOG->PLL_ENET |= CCM_ANALOG_PLL_ENET_ENET_25M_REF_EN_MASK;
|
||||
/* DeInit Usb2 PLL. */
|
||||
CLOCK_DeinitUsb2Pll();
|
||||
/* Bypass Usb2 PLL. */
|
||||
CLOCK_SetPllBypass(CCM_ANALOG, kCLOCK_PllUsb2, 1);
|
||||
/* Enable Usb2 PLL output. */
|
||||
CCM_ANALOG->PLL_USB2 |= CCM_ANALOG_PLL_USB2_ENABLE_MASK;
|
||||
/* Set preperiph clock source. */
|
||||
CLOCK_SetMux(kCLOCK_PrePeriphMux, 3);
|
||||
/* Set periph clock source. */
|
||||
CLOCK_SetMux(kCLOCK_PeriphMux, 0);
|
||||
/* Set periph clock2 clock source. */
|
||||
CLOCK_SetMux(kCLOCK_PeriphClk2Mux, 0);
|
||||
/* Set per clock source. */
|
||||
CLOCK_SetMux(kCLOCK_PerclkMux, 0);
|
||||
/* Set lvds1 clock source. */
|
||||
CCM_ANALOG->MISC1 = (CCM_ANALOG->MISC1 & (~CCM_ANALOG_MISC1_LVDS1_CLK_SEL_MASK)) | CCM_ANALOG_MISC1_LVDS1_CLK_SEL(0);
|
||||
/* Set clock out1 divider. */
|
||||
CCM->CCOSR = (CCM->CCOSR & (~CCM_CCOSR_CLKO1_DIV_MASK)) | CCM_CCOSR_CLKO1_DIV(0);
|
||||
/* Set clock out1 source. */
|
||||
CCM->CCOSR = (CCM->CCOSR & (~CCM_CCOSR_CLKO1_SEL_MASK)) | CCM_CCOSR_CLKO1_SEL(1);
|
||||
/* Set clock out2 divider. */
|
||||
CCM->CCOSR = (CCM->CCOSR & (~CCM_CCOSR_CLKO2_DIV_MASK)) | CCM_CCOSR_CLKO2_DIV(0);
|
||||
/* Set clock out2 source. */
|
||||
CCM->CCOSR = (CCM->CCOSR & (~CCM_CCOSR_CLKO2_SEL_MASK)) | CCM_CCOSR_CLKO2_SEL(18);
|
||||
/* Set clock out1 drives clock out1. */
|
||||
CCM->CCOSR &= ~CCM_CCOSR_CLK_OUT_SEL_MASK;
|
||||
/* Disable clock out1. */
|
||||
CCM->CCOSR &= ~CCM_CCOSR_CLKO1_EN_MASK;
|
||||
/* Disable clock out2. */
|
||||
CCM->CCOSR &= ~CCM_CCOSR_CLKO2_EN_MASK;
|
||||
/* Set SAI1 MCLK1 clock source. */
|
||||
IOMUXC_SetSaiMClkClockSource(IOMUXC_GPR, kIOMUXC_GPR_SAI1MClk1Sel, 0);
|
||||
/* Set SAI1 MCLK2 clock source. */
|
||||
IOMUXC_SetSaiMClkClockSource(IOMUXC_GPR, kIOMUXC_GPR_SAI1MClk2Sel, 0);
|
||||
/* Set SAI1 MCLK3 clock source. */
|
||||
IOMUXC_SetSaiMClkClockSource(IOMUXC_GPR, kIOMUXC_GPR_SAI1MClk3Sel, 0);
|
||||
/* Set SAI2 MCLK3 clock source. */
|
||||
IOMUXC_SetSaiMClkClockSource(IOMUXC_GPR, kIOMUXC_GPR_SAI2MClk3Sel, 0);
|
||||
/* Set SAI3 MCLK3 clock source. */
|
||||
IOMUXC_SetSaiMClkClockSource(IOMUXC_GPR, kIOMUXC_GPR_SAI3MClk3Sel, 0);
|
||||
/* Set MQS configuration. */
|
||||
IOMUXC_MQSConfig(IOMUXC_GPR,kIOMUXC_MqsPwmOverSampleRate32, 0);
|
||||
/* Set ENET Tx clock source. */
|
||||
IOMUXC_EnableMode(IOMUXC_GPR, kIOMUXC_GPR_ENET1RefClkMode, false);
|
||||
/* Set GPT1 High frequency reference clock source. */
|
||||
IOMUXC_GPR->GPR5 &= ~IOMUXC_GPR_GPR5_VREF_1M_CLK_GPT1_MASK;
|
||||
/* Set GPT2 High frequency reference clock source. */
|
||||
IOMUXC_GPR->GPR5 &= ~IOMUXC_GPR_GPR5_VREF_1M_CLK_GPT2_MASK;
|
||||
/* Set SystemCoreClock variable. */
|
||||
SystemCoreClock = BOARD_BOOTCLOCKRUN_CORE_CLOCK;
|
||||
}
|
||||
|
|
@ -1,116 +0,0 @@
|
|||
#ifndef _CLOCK_CONFIG_H_
|
||||
#define _CLOCK_CONFIG_H_
|
||||
|
||||
#include "fsl_common.h"
|
||||
|
||||
/*******************************************************************************
|
||||
* Definitions
|
||||
******************************************************************************/
|
||||
#define BOARD_XTAL0_CLK_HZ 24000000U /*!< Board xtal0 frequency in Hz */
|
||||
|
||||
#define BOARD_XTAL32K_CLK_HZ 32768U /*!< Board xtal32k frequency in Hz */
|
||||
/*******************************************************************************
|
||||
************************ BOARD_InitBootClocks function ************************
|
||||
******************************************************************************/
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif /* __cplusplus*/
|
||||
|
||||
/*!
|
||||
* @brief This function executes default configuration of clocks.
|
||||
*
|
||||
*/
|
||||
void BOARD_InitBootClocks(void);
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif /* __cplusplus*/
|
||||
|
||||
/*******************************************************************************
|
||||
********************** Configuration BOARD_BootClockRUN ***********************
|
||||
******************************************************************************/
|
||||
/*******************************************************************************
|
||||
* Definitions for BOARD_BootClockRUN configuration
|
||||
******************************************************************************/
|
||||
#define BOARD_BOOTCLOCKRUN_CORE_CLOCK 600000000U /*!< Core clock frequency: 600000000Hz */
|
||||
|
||||
/* Clock outputs (values are in Hz): */
|
||||
#define BOARD_BOOTCLOCKRUN_AHB_CLK_ROOT 600000000UL
|
||||
#define BOARD_BOOTCLOCKRUN_CAN_CLK_ROOT 40000000UL
|
||||
#define BOARD_BOOTCLOCKRUN_CKIL_SYNC_CLK_ROOT 32768UL
|
||||
#define BOARD_BOOTCLOCKRUN_CLKO1_CLK 0UL
|
||||
#define BOARD_BOOTCLOCKRUN_CLKO2_CLK 0UL
|
||||
#define BOARD_BOOTCLOCKRUN_CLK_1M 1000000UL
|
||||
#define BOARD_BOOTCLOCKRUN_CLK_24M 24000000UL
|
||||
#define BOARD_BOOTCLOCKRUN_CSI_CLK_ROOT 12000000UL
|
||||
#define BOARD_BOOTCLOCKRUN_ENET1_TX_CLK 2400000UL
|
||||
#define BOARD_BOOTCLOCKRUN_ENET_125M_CLK 2400000UL
|
||||
#define BOARD_BOOTCLOCKRUN_ENET_25M_REF_CLK 1200000UL
|
||||
#define BOARD_BOOTCLOCKRUN_FLEXIO1_CLK_ROOT 30000000UL
|
||||
#define BOARD_BOOTCLOCKRUN_FLEXIO2_CLK_ROOT 30000000UL
|
||||
#define BOARD_BOOTCLOCKRUN_FLEXSPI_CLK_ROOT 160000000UL
|
||||
#define BOARD_BOOTCLOCKRUN_GPT1_IPG_CLK_HIGHFREQ 75000000UL
|
||||
#define BOARD_BOOTCLOCKRUN_GPT2_IPG_CLK_HIGHFREQ 75000000UL
|
||||
#define BOARD_BOOTCLOCKRUN_IPG_CLK_ROOT 150000000UL
|
||||
#define BOARD_BOOTCLOCKRUN_LCDIF_CLK_ROOT 67500000UL
|
||||
#define BOARD_BOOTCLOCKRUN_LPI2C_CLK_ROOT 60000000UL
|
||||
#define BOARD_BOOTCLOCKRUN_LPSPI_CLK_ROOT 105600000UL
|
||||
#define BOARD_BOOTCLOCKRUN_LVDS1_CLK 1200000000UL
|
||||
#define BOARD_BOOTCLOCKRUN_MQS_MCLK 63529411UL
|
||||
#define BOARD_BOOTCLOCKRUN_PERCLK_CLK_ROOT 75000000UL
|
||||
#define BOARD_BOOTCLOCKRUN_PLL7_MAIN_CLK 24000000UL
|
||||
#define BOARD_BOOTCLOCKRUN_SAI1_CLK_ROOT 63529411UL
|
||||
#define BOARD_BOOTCLOCKRUN_SAI1_MCLK1 63529411UL
|
||||
#define BOARD_BOOTCLOCKRUN_SAI1_MCLK2 63529411UL
|
||||
#define BOARD_BOOTCLOCKRUN_SAI1_MCLK3 30000000UL
|
||||
#define BOARD_BOOTCLOCKRUN_SAI2_CLK_ROOT 63529411UL
|
||||
#define BOARD_BOOTCLOCKRUN_SAI2_MCLK1 63529411UL
|
||||
#define BOARD_BOOTCLOCKRUN_SAI2_MCLK2 0UL
|
||||
#define BOARD_BOOTCLOCKRUN_SAI2_MCLK3 30000000UL
|
||||
#define BOARD_BOOTCLOCKRUN_SAI3_CLK_ROOT 63529411UL
|
||||
#define BOARD_BOOTCLOCKRUN_SAI3_MCLK1 63529411UL
|
||||
#define BOARD_BOOTCLOCKRUN_SAI3_MCLK2 0UL
|
||||
#define BOARD_BOOTCLOCKRUN_SAI3_MCLK3 30000000UL
|
||||
#define BOARD_BOOTCLOCKRUN_SEMC_CLK_ROOT 75000000UL
|
||||
#define BOARD_BOOTCLOCKRUN_SPDIF0_CLK_ROOT 30000000UL
|
||||
#define BOARD_BOOTCLOCKRUN_SPDIF0_EXTCLK_OUT 0UL
|
||||
#define BOARD_BOOTCLOCKRUN_TRACE_CLK_ROOT 132000000UL
|
||||
#define BOARD_BOOTCLOCKRUN_UART_CLK_ROOT 80000000UL
|
||||
#define BOARD_BOOTCLOCKRUN_USBPHY1_CLK 0UL
|
||||
#define BOARD_BOOTCLOCKRUN_USBPHY2_CLK 0UL
|
||||
#define BOARD_BOOTCLOCKRUN_USDHC1_CLK_ROOT 198000000UL
|
||||
#define BOARD_BOOTCLOCKRUN_USDHC2_CLK_ROOT 198000000UL
|
||||
|
||||
/*! @brief Arm PLL set for BOARD_BootClockRUN configuration.
|
||||
*/
|
||||
extern const clock_arm_pll_config_t armPllConfig_BOARD_BootClockRUN;
|
||||
/*! @brief Usb1 PLL set for BOARD_BootClockRUN configuration.
|
||||
*/
|
||||
extern const clock_usb_pll_config_t usb1PllConfig_BOARD_BootClockRUN;
|
||||
/*! @brief Sys PLL for BOARD_BootClockRUN configuration.
|
||||
*/
|
||||
extern const clock_sys_pll_config_t sysPllConfig_BOARD_BootClockRUN;
|
||||
/*! @brief Video PLL set for BOARD_BootClockRUN configuration.
|
||||
*/
|
||||
extern const clock_video_pll_config_t videoPllConfig_BOARD_BootClockRUN;
|
||||
|
||||
/*******************************************************************************
|
||||
* API for BOARD_BootClockRUN configuration
|
||||
******************************************************************************/
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif /* __cplusplus*/
|
||||
|
||||
/*!
|
||||
* @brief This function executes configuration of clocks.
|
||||
*
|
||||
*/
|
||||
void BOARD_BootClockRUN(void);
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif /* __cplusplus*/
|
||||
|
||||
#endif /* _CLOCK_CONFIG_H_ */
|
||||
|
315
board/dcd.c.bak
315
board/dcd.c.bak
|
@ -1,315 +0,0 @@
|
|||
/*
|
||||
* Copyright 2020 NXP
|
||||
* All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* This file was generated by the MCUXpresso Config Tools. Any manual edits made to this file
|
||||
* will be overwritten if the respective MCUXpresso Config Tools is used to update this file.
|
||||
**********************************************************************************************************************/
|
||||
|
||||
#include "dcd.h"
|
||||
|
||||
/* Component ID definition, used by tools. */
|
||||
#ifndef FSL_COMPONENT_ID
|
||||
#define FSL_COMPONENT_ID "platform.drivers.xip_board"
|
||||
#endif
|
||||
|
||||
#if defined(XIP_BOOT_HEADER_ENABLE) && (XIP_BOOT_HEADER_ENABLE == 1)
|
||||
#if defined(XIP_BOOT_HEADER_DCD_ENABLE) && (XIP_BOOT_HEADER_DCD_ENABLE == 1)
|
||||
#if defined(__CC_ARM) || defined(__ARMCC_VERSION) || defined(__GNUC__)
|
||||
__attribute__((section(".boot_hdr.dcd_data"), used))
|
||||
#elif defined(__ICCARM__)
|
||||
#pragma location = ".boot_hdr.dcd_data"
|
||||
#endif
|
||||
|
||||
/* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
|
||||
!!GlobalInfo
|
||||
product: DCDx V2.0
|
||||
processor: MIMXRT1052xxxxB
|
||||
package_id: MIMXRT1052DVL6B
|
||||
mcu_data: ksdk2_0
|
||||
processor_version: 0.0.0
|
||||
board: IMXRT1050-EVKB
|
||||
output_format: c_array
|
||||
* BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
|
||||
/* COMMENTS BELOW ARE USED AS SETTINGS FOR DCD DATA */
|
||||
const uint8_t dcd_data[] = {
|
||||
/* HEADER */
|
||||
/* Tag */
|
||||
0xD2,
|
||||
/* Image Length */
|
||||
0x04, 0x10,
|
||||
/* Version */
|
||||
0x41,
|
||||
|
||||
/* COMMANDS */
|
||||
|
||||
/* group: 'Imported Commands' */
|
||||
/* #1.1-113, command header bytes for merged 'Write - value' command */
|
||||
0xCC, 0x03, 0x8C, 0x04,
|
||||
/* #1.1, command: write_value, address: CCM_CCGR0, value: 0xFFFFFFFF, size: 4 */
|
||||
0x40, 0x0F, 0xC0, 0x68, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
/* #1.2, command: write_value, address: CCM_CCGR1, value: 0xFFFFFFFF, size: 4 */
|
||||
0x40, 0x0F, 0xC0, 0x6C, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
/* #1.3, command: write_value, address: CCM_CCGR2, value: 0xFFFFFFFF, size: 4 */
|
||||
0x40, 0x0F, 0xC0, 0x70, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
/* #1.4, command: write_value, address: CCM_CCGR3, value: 0xFFFFFFFF, size: 4 */
|
||||
0x40, 0x0F, 0xC0, 0x74, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
/* #1.5, command: write_value, address: CCM_CCGR4, value: 0xFFFFFFFF, size: 4 */
|
||||
0x40, 0x0F, 0xC0, 0x78, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
/* #1.6, command: write_value, address: CCM_CCGR5, value: 0xFFFFFFFF, size: 4 */
|
||||
0x40, 0x0F, 0xC0, 0x7C, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
/* #1.7, command: write_value, address: CCM_CCGR6, value: 0xFFFFFFFF, size: 4 */
|
||||
0x40, 0x0F, 0xC0, 0x80, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
/* #1.8, command: write_value, address: CCM_ANALOG_PLL_SYS, value: 0x2001, size: 4 */
|
||||
0x40, 0x0D, 0x80, 0x30, 0x00, 0x00, 0x20, 0x01,
|
||||
/* #1.9, command: write_value, address: CCM_ANALOG_PFD_528, value: 0x1D0000, size: 4 */
|
||||
0x40, 0x0D, 0x81, 0x00, 0x00, 0x1D, 0x00, 0x00,
|
||||
/* #1.10, command: write_value, address: CCM_CBCDR, value: 0x10D40, size: 4 */
|
||||
0x40, 0x0F, 0xC0, 0x14, 0x00, 0x01, 0x0D, 0x40,
|
||||
/* #1.11, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_00, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x14, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.12, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_01, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x18, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.13, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_02, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x1C, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.14, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_03, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x20, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.15, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_04, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x24, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.16, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_05, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x28, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.17, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_06, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x2C, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.18, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_07, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x30, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.19, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_08, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x34, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.20, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_09, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x38, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.21, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_10, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x3C, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.22, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_11, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x40, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.23, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_12, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x44, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.24, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_13, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x48, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.25, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_14, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x4C, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.26, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_15, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x50, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.27, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_16, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x54, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.28, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_17, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x58, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.29, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_18, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x5C, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.30, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_19, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.31, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_20, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x64, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.32, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_21, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x68, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.33, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_22, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x6C, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.34, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_23, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x70, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.35, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_24, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x74, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.36, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_25, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x78, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.37, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_26, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x7C, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.38, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_27, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.39, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_28, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x84, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.40, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_29, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x88, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.41, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_30, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x8C, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.42, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_31, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x90, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.43, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_32, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x94, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.44, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_33, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x98, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.45, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_34, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0x9C, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.46, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_35, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0xA0, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.47, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_36, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0xA4, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.48, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_37, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0xA8, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.49, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_38, value: 0x00, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0xAC, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.50, command: write_value, address: IOMUXC_SW_MUX_CTL_PAD_GPIO_EMC_39, value: 0x10, size: 4 */
|
||||
0x40, 0x1F, 0x80, 0xB0, 0x00, 0x00, 0x00, 0x10,
|
||||
/* #1.51, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_00, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x04, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.52, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_01, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x08, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.53, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_02, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x0C, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.54, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_03, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x10, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.55, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_04, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x14, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.56, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_05, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x18, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.57, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_06, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x1C, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.58, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_07, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x20, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.59, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_08, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x24, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.60, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_09, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x28, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.61, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_10, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x2C, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.62, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_11, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x30, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.63, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_12, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x34, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.64, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_13, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x38, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.65, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_14, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x3C, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.66, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_15, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x40, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.67, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_16, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x44, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.68, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_17, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x48, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.69, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_18, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x4C, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.70, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_19, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x50, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.71, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_20, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x54, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.72, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_21, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x58, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.73, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_22, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x5C, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.74, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_23, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x60, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.75, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_24, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x64, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.76, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_25, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x68, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.77, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_26, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x6C, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.78, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_27, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x70, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.79, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_28, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x74, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.80, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_29, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x78, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.81, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_30, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x7C, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.82, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_31, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x80, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.83, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_32, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x84, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.84, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_33, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x88, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.85, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_34, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x8C, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.86, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_35, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x90, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.87, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_36, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x94, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.88, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_37, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x98, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.89, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_38, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0x9C, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.90, command: write_value, address: IOMUXC_SW_PAD_CTL_PAD_GPIO_EMC_39, value: 0x110F9, size: 4 */
|
||||
0x40, 0x1F, 0x82, 0xA0, 0x00, 0x01, 0x10, 0xF9,
|
||||
/* #1.91, command: write_value, address: SEMC_MCR, value: 0x10000004, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0x00, 0x10, 0x00, 0x00, 0x04,
|
||||
/* #1.92, command: write_value, address: SEMC_BMCR0, value: 0x81, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0x08, 0x00, 0x00, 0x00, 0x81,
|
||||
/* #1.93, command: write_value, address: SEMC_BMCR1, value: 0x81, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x81,
|
||||
/* #1.94, command: write_value, address: SEMC_BR0, value: 0x8000001B, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0x10, 0x80, 0x00, 0x00, 0x1B,
|
||||
/* #1.95, command: write_value, address: SEMC_BR1, value: 0x8200001B, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0x14, 0x82, 0x00, 0x00, 0x1B,
|
||||
/* #1.96, command: write_value, address: SEMC_BR2, value: 0x8400001B, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0x18, 0x84, 0x00, 0x00, 0x1B,
|
||||
/* #1.97, command: write_value, address: SEMC_BR3, value: 0x8600001B, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0x1C, 0x86, 0x00, 0x00, 0x1B,
|
||||
/* #1.98, command: write_value, address: SEMC_BR4, value: 0x90000021, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0x20, 0x90, 0x00, 0x00, 0x21,
|
||||
/* #1.99, command: write_value, address: SEMC_BR5, value: 0xA0000019, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0x24, 0xA0, 0x00, 0x00, 0x19,
|
||||
/* #1.100, command: write_value, address: SEMC_BR6, value: 0xA8000017, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0x28, 0xA8, 0x00, 0x00, 0x17,
|
||||
/* #1.101, command: write_value, address: SEMC_BR7, value: 0xA900001B, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0x2C, 0xA9, 0x00, 0x00, 0x1B,
|
||||
/* #1.102, command: write_value, address: SEMC_BR8, value: 0x21, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0x30, 0x00, 0x00, 0x00, 0x21,
|
||||
/* #1.103, command: write_value, address: SEMC_IOCR, value: 0x79A8, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0x04, 0x00, 0x00, 0x79, 0xA8,
|
||||
/* #1.104, command: write_value, address: SEMC_SDRAMCR0, value: 0xF31, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0x40, 0x00, 0x00, 0x0F, 0x31,
|
||||
/* #1.105, command: write_value, address: SEMC_SDRAMCR1, value: 0x652922, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0x44, 0x00, 0x65, 0x29, 0x22,
|
||||
/* #1.106, command: write_value, address: SEMC_SDRAMCR2, value: 0x10920, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0x48, 0x00, 0x01, 0x09, 0x20,
|
||||
/* #1.107, command: write_value, address: SEMC_SDRAMCR3, value: 0x50210A08, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0x4C, 0x50, 0x21, 0x0A, 0x08,
|
||||
/* #1.108, command: write_value, address: SEMC_DBICR0, value: 0x21, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0x80, 0x00, 0x00, 0x00, 0x21,
|
||||
/* #1.109, command: write_value, address: SEMC_DBICR1, value: 0x888888, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0x84, 0x00, 0x88, 0x88, 0x88,
|
||||
/* #1.110, command: write_value, address: SEMC_IPCR1, value: 0x02, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0x94, 0x00, 0x00, 0x00, 0x02,
|
||||
/* #1.111, command: write_value, address: SEMC_IPCR2, value: 0x00, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0x98, 0x00, 0x00, 0x00, 0x00,
|
||||
/* #1.112, command: write_value, address: SEMC_IPCR0, value: 0x80000000, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0x90, 0x80, 0x00, 0x00, 0x00,
|
||||
/* #1.113, command: write_value, address: SEMC_IPCMD, value: 0xA55A000F, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0x9C, 0xA5, 0x5A, 0x00, 0x0F,
|
||||
/* #2, command: check_any_bit_set, address: SEMC_INTR, value: 0x01, size: 4 */
|
||||
0xCF, 0x00, 0x0C, 0x1C, 0x40, 0x2F, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x01,
|
||||
/* #3.1-2, command header bytes for merged 'Write - value' command */
|
||||
0xCC, 0x00, 0x14, 0x04,
|
||||
/* #3.1, command: write_value, address: SEMC_IPCR0, value: 0x80000000, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0x90, 0x80, 0x00, 0x00, 0x00,
|
||||
/* #3.2, command: write_value, address: SEMC_IPCMD, value: 0xA55A000C, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0x9C, 0xA5, 0x5A, 0x00, 0x0C,
|
||||
/* #4, command: check_any_bit_set, address: SEMC_INTR, value: 0x01, size: 4 */
|
||||
0xCF, 0x00, 0x0C, 0x1C, 0x40, 0x2F, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x01,
|
||||
/* #5.1-2, command header bytes for merged 'Write - value' command */
|
||||
0xCC, 0x00, 0x14, 0x04,
|
||||
/* #5.1, command: write_value, address: SEMC_IPCR0, value: 0x80000000, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0x90, 0x80, 0x00, 0x00, 0x00,
|
||||
/* #5.2, command: write_value, address: SEMC_IPCMD, value: 0xA55A000C, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0x9C, 0xA5, 0x5A, 0x00, 0x0C,
|
||||
/* #6, command: check_any_bit_set, address: SEMC_INTR, value: 0x01, size: 4 */
|
||||
0xCF, 0x00, 0x0C, 0x1C, 0x40, 0x2F, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x01,
|
||||
/* #7.1-3, command header bytes for merged 'Write - value' command */
|
||||
0xCC, 0x00, 0x1C, 0x04,
|
||||
/* #7.1, command: write_value, address: SEMC_IPTXDAT, value: 0x33, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0xA0, 0x00, 0x00, 0x00, 0x33,
|
||||
/* #7.2, command: write_value, address: SEMC_IPCR0, value: 0x80000000, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0x90, 0x80, 0x00, 0x00, 0x00,
|
||||
/* #7.3, command: write_value, address: SEMC_IPCMD, value: 0xA55A000A, size: 4 */
|
||||
0x40, 0x2F, 0x00, 0x9C, 0xA5, 0x5A, 0x00, 0x0A,
|
||||
/* #8, command: check_any_bit_set, address: SEMC_INTR, value: 0x01, size: 4 */
|
||||
0xCF, 0x00, 0x0C, 0x1C, 0x40, 0x2F, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x01,
|
||||
/* #9, command: write_value, address: SEMC_SDRAMCR3, value: 0x50210A09, size: 4 */
|
||||
0xCC, 0x00, 0x0C, 0x04, 0x40, 0x2F, 0x00, 0x4C, 0x50, 0x21, 0x0A, 0x09
|
||||
};
|
||||
/* BE CAREFUL MODIFYING THIS SETTINGS - IT IS YAML SETTINGS FOR TOOLS */
|
||||
|
||||
#else
|
||||
const uint8_t dcd_data[] = {0x00};
|
||||
#endif /* XIP_BOOT_HEADER_DCD_ENABLE */
|
||||
#endif /* XIP_BOOT_HEADER_ENABLE */
|
|
@ -1,32 +0,0 @@
|
|||
/*
|
||||
* Copyright 2020 NXP
|
||||
* All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* This file was generated by the MCUXpresso Config Tools. Any manual edits made to this file
|
||||
* will be overwritten if the respective MCUXpresso Config Tools is used to update this file.
|
||||
**********************************************************************************************************************/
|
||||
|
||||
#ifndef __DCD__
|
||||
#define __DCD__
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/*! @name Driver version */
|
||||
/*@{*/
|
||||
/*! @brief XIP_BOARD driver version 2.0.1. */
|
||||
#define FSL_XIP_BOARD_DRIVER_VERSION (MAKE_VERSION(2, 0, 1))
|
||||
/*@}*/
|
||||
|
||||
/*************************************
|
||||
* DCD Data
|
||||
*************************************/
|
||||
#define DCD_TAG_HEADER (0xD2)
|
||||
#define DCD_VERSION (0x41)
|
||||
#define DCD_TAG_HEADER_SHIFT (24)
|
||||
#define DCD_ARRAY_SIZE 1
|
||||
|
||||
#endif /* __DCD__ */
|
|
@ -136,8 +136,8 @@ instance:
|
|||
- deviceSetting:
|
||||
- vendor_id: '0x1FC9'
|
||||
- product_id: '0x0094'
|
||||
- manufacturer_string: 'NXP'
|
||||
- product_string: 'VCOM'
|
||||
- manufacturer_string: 'NXP Semiconductors'
|
||||
- product_string: 'CDC Virtual COM'
|
||||
- self_powered: 'true'
|
||||
- max_power: '500'
|
||||
- interfaces:
|
||||
|
@ -199,6 +199,122 @@ instance:
|
|||
- bRefresh: '0'
|
||||
- bSynchAddress: 'NoSynchronization'
|
||||
- quick_selection: 'QS_INTERFACE_DIC_VCOM'
|
||||
- 2:
|
||||
- interface_class: 'kClassCic'
|
||||
- setting_cic:
|
||||
- interface_name: 'CIC VCOM'
|
||||
- subclass: 'kSubclassAcm'
|
||||
- protocol: 'kProtocolNone'
|
||||
- implementation: 'kImplementationCicVcom'
|
||||
- endpoints_settings:
|
||||
- 0:
|
||||
- setting_name: 'Default'
|
||||
- endpoints:
|
||||
- 0:
|
||||
- direction: 'kIn'
|
||||
- transfer_type: 'kInterrupt'
|
||||
- synchronization: 'kNoSynchronization'
|
||||
- usage: 'kData'
|
||||
- max_packet_size_fs: 'k16'
|
||||
- polling_interval_fs: '8'
|
||||
- max_packet_size_hs: 'k16'
|
||||
- polling_interval_hs: '7'
|
||||
- bRefresh: '0'
|
||||
- bSynchAddress: 'NoSynchronization'
|
||||
- data_interface_count: '1'
|
||||
- quick_selection: 'QS_INTERFACE_CIC_VCOM'
|
||||
- 3:
|
||||
- interface_class: 'kClassDic'
|
||||
- setting_dic:
|
||||
- interface_name: 'DIC VCOM'
|
||||
- subclass: 'kSubclassNone'
|
||||
- protocol: 'kProtocolNone'
|
||||
- implementation: 'kImplementationDicVcom'
|
||||
- endpoints_settings:
|
||||
- 0:
|
||||
- setting_name: 'Default'
|
||||
- endpoints:
|
||||
- 0:
|
||||
- direction: 'kIn'
|
||||
- transfer_type: 'kBulk'
|
||||
- synchronization: 'kNoSynchronization'
|
||||
- usage: 'kData'
|
||||
- max_packet_size_fs: 'k64'
|
||||
- polling_interval_fs: '0'
|
||||
- max_packet_size_hs: 'k512'
|
||||
- polling_interval_hs: '0'
|
||||
- bRefresh: '0'
|
||||
- bSynchAddress: 'NoSynchronization'
|
||||
- 1:
|
||||
- direction: 'kOut'
|
||||
- transfer_type: 'kBulk'
|
||||
- synchronization: 'kNoSynchronization'
|
||||
- usage: 'kData'
|
||||
- max_packet_size_fs: 'k64'
|
||||
- polling_interval_fs: '0'
|
||||
- max_packet_size_hs: 'k512'
|
||||
- polling_interval_hs: '0'
|
||||
- bRefresh: '0'
|
||||
- bSynchAddress: 'NoSynchronization'
|
||||
- quick_selection: 'QS_INTERFACE_DIC_VCOM'
|
||||
- 4:
|
||||
- interface_class: 'kClassCic'
|
||||
- setting_cic:
|
||||
- interface_name: 'CIC VCOM'
|
||||
- subclass: 'kSubclassAcm'
|
||||
- protocol: 'kProtocolNone'
|
||||
- implementation: 'kImplementationCicVcom'
|
||||
- endpoints_settings:
|
||||
- 0:
|
||||
- setting_name: 'Default'
|
||||
- endpoints:
|
||||
- 0:
|
||||
- direction: 'kIn'
|
||||
- transfer_type: 'kInterrupt'
|
||||
- synchronization: 'kNoSynchronization'
|
||||
- usage: 'kData'
|
||||
- max_packet_size_fs: 'k16'
|
||||
- polling_interval_fs: '8'
|
||||
- max_packet_size_hs: 'k16'
|
||||
- polling_interval_hs: '7'
|
||||
- bRefresh: '0'
|
||||
- bSynchAddress: 'NoSynchronization'
|
||||
- data_interface_count: '1'
|
||||
- quick_selection: 'QS_INTERFACE_CIC_VCOM'
|
||||
- 5:
|
||||
- interface_class: 'kClassDic'
|
||||
- setting_dic:
|
||||
- interface_name: 'DIC VCOM'
|
||||
- subclass: 'kSubclassNone'
|
||||
- protocol: 'kProtocolNone'
|
||||
- implementation: 'kImplementationDicVcom'
|
||||
- endpoints_settings:
|
||||
- 0:
|
||||
- setting_name: 'Default'
|
||||
- endpoints:
|
||||
- 0:
|
||||
- direction: 'kIn'
|
||||
- transfer_type: 'kBulk'
|
||||
- synchronization: 'kNoSynchronization'
|
||||
- usage: 'kData'
|
||||
- max_packet_size_fs: 'k64'
|
||||
- polling_interval_fs: '0'
|
||||
- max_packet_size_hs: 'k512'
|
||||
- polling_interval_hs: '0'
|
||||
- bRefresh: '0'
|
||||
- bSynchAddress: 'NoSynchronization'
|
||||
- 1:
|
||||
- direction: 'kOut'
|
||||
- transfer_type: 'kBulk'
|
||||
- synchronization: 'kNoSynchronization'
|
||||
- usage: 'kData'
|
||||
- max_packet_size_fs: 'k64'
|
||||
- polling_interval_fs: '0'
|
||||
- max_packet_size_hs: 'k512'
|
||||
- polling_interval_hs: '0'
|
||||
- bRefresh: '0'
|
||||
- bSynchAddress: 'NoSynchronization'
|
||||
- quick_selection: 'QS_INTERFACE_DIC_VCOM'
|
||||
* BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
|
||||
/* clang-format on */
|
||||
|
||||
|
|
|
@ -1,392 +0,0 @@
|
|||
/***********************************************************************************************************************
|
||||
* This file was generated by the MCUXpresso Config Tools. Any manual edits made to this file
|
||||
* will be overwritten if the respective MCUXpresso Config Tools is used to update this file.
|
||||
**********************************************************************************************************************/
|
||||
|
||||
/* clang-format off */
|
||||
/* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
|
||||
!!GlobalInfo
|
||||
product: Peripherals v9.0
|
||||
processor: MIMXRT1052xxxxB
|
||||
package_id: MIMXRT1052DVL6B
|
||||
mcu_data: ksdk2_0
|
||||
processor_version: 9.0.1
|
||||
board: IMXRT1050-EVKB
|
||||
functionalGroups:
|
||||
- name: BOARD_InitPeripherals
|
||||
UUID: f1fa4e90-59a0-4ebb-b5c6-285f38e255e8
|
||||
called_from_default_init: true
|
||||
selectedCore: core0
|
||||
* BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
|
||||
|
||||
/* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
|
||||
component:
|
||||
- type: 'system'
|
||||
- type_id: 'system_54b53072540eeeb8f8e9343e71f28176'
|
||||
- global_system_definitions:
|
||||
- user_definitions: ''
|
||||
- user_includes: ''
|
||||
* BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
|
||||
/* clang-format on */
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Included files
|
||||
**********************************************************************************************************************/
|
||||
#include "peripherals.h"
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* BOARD_InitPeripherals functional group
|
||||
**********************************************************************************************************************/
|
||||
/***********************************************************************************************************************
|
||||
* NVIC initialization code
|
||||
**********************************************************************************************************************/
|
||||
/* clang-format off */
|
||||
/* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
|
||||
instance:
|
||||
- name: 'NVIC'
|
||||
- type: 'nvic'
|
||||
- mode: 'general'
|
||||
- custom_name_enabled: 'false'
|
||||
- type_id: 'nvic_57b5eef3774cc60acaede6f5b8bddc67'
|
||||
- functional_group: 'BOARD_InitPeripherals'
|
||||
- peripheral: 'NVIC'
|
||||
- config_sets:
|
||||
- nvic:
|
||||
- interrupt_table: []
|
||||
- interrupts: []
|
||||
* BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
|
||||
/* clang-format on */
|
||||
|
||||
/* Empty initialization function (commented out)
|
||||
static void NVIC_init(void) {
|
||||
} */
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* LPUART1 initialization code
|
||||
**********************************************************************************************************************/
|
||||
/* clang-format off */
|
||||
/* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
|
||||
instance:
|
||||
- name: 'LPUART1'
|
||||
- type: 'lpuart'
|
||||
- mode: 'polling'
|
||||
- custom_name_enabled: 'false'
|
||||
- type_id: 'lpuart_54a65a580e3462acdbacefd5299e0cac'
|
||||
- functional_group: 'BOARD_InitPeripherals'
|
||||
- peripheral: 'LPUART1'
|
||||
- config_sets:
|
||||
- lpuartConfig_t:
|
||||
- lpuartConfig:
|
||||
- clockSource: 'LpuartClock'
|
||||
- lpuartSrcClkFreq: 'BOARD_BootClockRUN'
|
||||
- baudRate_Bps: '115200'
|
||||
- parityMode: 'kLPUART_ParityDisabled'
|
||||
- dataBitsCount: 'kLPUART_EightDataBits'
|
||||
- isMsb: 'false'
|
||||
- stopBitCount: 'kLPUART_OneStopBit'
|
||||
- txFifoWatermark: '0'
|
||||
- rxFifoWatermark: '1'
|
||||
- enableRxRTS: 'false'
|
||||
- enableTxCTS: 'false'
|
||||
- txCtsSource: 'kLPUART_CtsSourcePin'
|
||||
- txCtsConfig: 'kLPUART_CtsSampleAtStart'
|
||||
- rxIdleType: 'kLPUART_IdleTypeStartBit'
|
||||
- rxIdleConfig: 'kLPUART_IdleCharacter1'
|
||||
- enableTx: 'true'
|
||||
- enableRx: 'true'
|
||||
- quick_selection: 'QuickSelection1'
|
||||
* BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
|
||||
/* clang-format on */
|
||||
const lpuart_config_t LPUART1_config = {
|
||||
.baudRate_Bps = 115200UL,
|
||||
.parityMode = kLPUART_ParityDisabled,
|
||||
.dataBitsCount = kLPUART_EightDataBits,
|
||||
.isMsb = false,
|
||||
.stopBitCount = kLPUART_OneStopBit,
|
||||
.txFifoWatermark = 0U,
|
||||
.rxFifoWatermark = 1U,
|
||||
.enableRxRTS = false,
|
||||
.enableTxCTS = false,
|
||||
.txCtsSource = kLPUART_CtsSourcePin,
|
||||
.txCtsConfig = kLPUART_CtsSampleAtStart,
|
||||
.rxIdleType = kLPUART_IdleTypeStartBit,
|
||||
.rxIdleConfig = kLPUART_IdleCharacter1,
|
||||
.enableTx = true,
|
||||
.enableRx = true
|
||||
};
|
||||
|
||||
static void LPUART1_init(void) {
|
||||
LPUART_Init(LPUART1_PERIPHERAL, &LPUART1_config, LPUART1_CLOCK_SOURCE);
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* USB1 initialization code
|
||||
**********************************************************************************************************************/
|
||||
/* clang-format off */
|
||||
/* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
|
||||
instance:
|
||||
- name: 'USB1'
|
||||
- type: 'usb'
|
||||
- mode: 'device'
|
||||
- custom_name_enabled: 'false'
|
||||
- type_id: 'usb_49b3e4c7d25fbcd298641994d1b911e9'
|
||||
- functional_group: 'BOARD_InitPeripherals'
|
||||
- peripheral: 'USB1'
|
||||
- config_sets:
|
||||
- deviceSetting:
|
||||
- vendor_id: '0x1FC9'
|
||||
- product_id: '0x0094'
|
||||
- manufacturer_string: 'NXP'
|
||||
- product_string: 'VCOM'
|
||||
- self_powered: 'true'
|
||||
- max_power: '500'
|
||||
- interfaces:
|
||||
- 0:
|
||||
- interface_class: 'kClassCic'
|
||||
- setting_cic:
|
||||
- interface_name: 'CIC VCOM'
|
||||
- subclass: 'kSubclassAcm'
|
||||
- protocol: 'kProtocolNone'
|
||||
- implementation: 'kImplementationCicVcom'
|
||||
- endpoints_settings:
|
||||
- 0:
|
||||
- setting_name: 'Default'
|
||||
- endpoints:
|
||||
- 0:
|
||||
- direction: 'kIn'
|
||||
- transfer_type: 'kInterrupt'
|
||||
- synchronization: 'kNoSynchronization'
|
||||
- usage: 'kData'
|
||||
- max_packet_size_fs: 'k16'
|
||||
- polling_interval_fs: '8'
|
||||
- max_packet_size_hs: 'k16'
|
||||
- polling_interval_hs: '7'
|
||||
- bRefresh: '0'
|
||||
- bSynchAddress: 'NoSynchronization'
|
||||
- data_interface_count: '1'
|
||||
- quick_selection: 'QS_INTERFACE_CIC_VCOM'
|
||||
- 1:
|
||||
- interface_class: 'kClassDic'
|
||||
- setting_dic:
|
||||
- interface_name: 'DIC VCOM'
|
||||
- subclass: 'kSubclassNone'
|
||||
- protocol: 'kProtocolNone'
|
||||
- implementation: 'kImplementationDicVcom'
|
||||
- endpoints_settings:
|
||||
- 0:
|
||||
- setting_name: 'Default'
|
||||
- endpoints:
|
||||
- 0:
|
||||
- direction: 'kIn'
|
||||
- transfer_type: 'kBulk'
|
||||
- synchronization: 'kNoSynchronization'
|
||||
- usage: 'kData'
|
||||
- max_packet_size_fs: 'k64'
|
||||
- polling_interval_fs: '0'
|
||||
- max_packet_size_hs: 'k512'
|
||||
- polling_interval_hs: '0'
|
||||
- bRefresh: '0'
|
||||
- bSynchAddress: 'NoSynchronization'
|
||||
- 1:
|
||||
- direction: 'kOut'
|
||||
- transfer_type: 'kBulk'
|
||||
- synchronization: 'kNoSynchronization'
|
||||
- usage: 'kData'
|
||||
- max_packet_size_fs: 'k64'
|
||||
- polling_interval_fs: '0'
|
||||
- max_packet_size_hs: 'k512'
|
||||
- polling_interval_hs: '0'
|
||||
- bRefresh: '0'
|
||||
- bSynchAddress: 'NoSynchronization'
|
||||
- quick_selection: 'QS_INTERFACE_DIC_VCOM'
|
||||
- 2:
|
||||
- interface_class: 'kClassAudio_2_0'
|
||||
- setting_audio_2_0:
|
||||
- interface_name: 'Audio control'
|
||||
- subclass: 'kSubclassAudioControl'
|
||||
- protocol: 'kProtocolIPV20'
|
||||
- implementation: 'kImplementationAudioSpeaker'
|
||||
- endpoints_settings:
|
||||
- 0:
|
||||
- setting_name: 'Default'
|
||||
- endpoints: []
|
||||
- acHeader_descriptor_audio_2_0:
|
||||
- bCategory: 'kDesktopSpeaker'
|
||||
- bmControls: 'kNone'
|
||||
- units_audio_2_0:
|
||||
- 0:
|
||||
- audio_unit: 'kClockSource'
|
||||
- clock_source:
|
||||
- bClockID: '1'
|
||||
- bmAttributesLow: 'kInternalFixedClock'
|
||||
- bmAttributesHigh: 'kFreeRunning'
|
||||
- bmControlsLow: 'kHostProgrammable'
|
||||
- bmControlsHigh: 'kReadOnly'
|
||||
- 1:
|
||||
- audio_unit: 'kInputTerminal'
|
||||
- input_terminal:
|
||||
- bTerminalID: '2'
|
||||
- wTerminalType: 'kStreaming'
|
||||
- bCSourceID: 'bClockID_1'
|
||||
- bNrChannels: '2'
|
||||
- bmChannelConfig: 'USB_INTERFACE_AUDIO_CONTROL_INPUT_TERMINAL_CHANNEL_CONFIG_FL USB_INTERFACE_AUDIO_CONTROL_INPUT_TERMINAL_CHANNEL_CONFIG_FR'
|
||||
- bmControls_0_1bit: 'kNone'
|
||||
- bmControls_2_3bit: 'kNone'
|
||||
- bmControls_4_5bit: 'kNone'
|
||||
- bmControls_6_7bit: 'kNone'
|
||||
- bmControls_8_9bit: 'kNone'
|
||||
- bmControls_10_11bit: 'kNone'
|
||||
- 2:
|
||||
- audio_unit: 'kFeatureUnit'
|
||||
- feature_unit:
|
||||
- bUnitID: '3'
|
||||
- bSourceID: 'bTerminalID_2'
|
||||
- bmaControls:
|
||||
- 0:
|
||||
- bmControls_0_1bit: 'kHostProgrammable'
|
||||
- bmControls_2_3bit: 'kHostProgrammable'
|
||||
- bmControls_4_5bit: 'kNone'
|
||||
- bmControls_6_7bit: 'kNone'
|
||||
- bmControls_8_9bit: 'kNone'
|
||||
- bmControls_10_11bit: 'kNone'
|
||||
- bmControls_12_13bit: 'kNone'
|
||||
- bmControls_14_15bit: 'kNone'
|
||||
- bmControls_16_17bit: 'kNone'
|
||||
- bmControls_18_19bit: 'kNone'
|
||||
- bmControls_20_21bit: 'kNone'
|
||||
- bmControls_22_23bit: 'kNone'
|
||||
- bmControls_24_25bit: 'kNone'
|
||||
- bmControls_26_27bit: 'kNone'
|
||||
- bmControls_28_29bit: 'kNone'
|
||||
- 1:
|
||||
- bmControls_0_1bit: 'kNone'
|
||||
- bmControls_2_3bit: 'kNone'
|
||||
- bmControls_4_5bit: 'kNone'
|
||||
- bmControls_6_7bit: 'kNone'
|
||||
- bmControls_8_9bit: 'kNone'
|
||||
- bmControls_10_11bit: 'kNone'
|
||||
- bmControls_12_13bit: 'kNone'
|
||||
- bmControls_14_15bit: 'kNone'
|
||||
- bmControls_16_17bit: 'kNone'
|
||||
- bmControls_18_19bit: 'kNone'
|
||||
- bmControls_20_21bit: 'kNone'
|
||||
- bmControls_22_23bit: 'kNone'
|
||||
- bmControls_24_25bit: 'kNone'
|
||||
- bmControls_26_27bit: 'kNone'
|
||||
- bmControls_28_29bit: 'kNone'
|
||||
- 2:
|
||||
- bmControls_0_1bit: 'kNone'
|
||||
- bmControls_2_3bit: 'kNone'
|
||||
- bmControls_4_5bit: 'kNone'
|
||||
- bmControls_6_7bit: 'kNone'
|
||||
- bmControls_8_9bit: 'kNone'
|
||||
- bmControls_10_11bit: 'kNone'
|
||||
- bmControls_12_13bit: 'kNone'
|
||||
- bmControls_14_15bit: 'kNone'
|
||||
- bmControls_16_17bit: 'kNone'
|
||||
- bmControls_18_19bit: 'kNone'
|
||||
- bmControls_20_21bit: 'kNone'
|
||||
- bmControls_22_23bit: 'kNone'
|
||||
- bmControls_24_25bit: 'kNone'
|
||||
- bmControls_26_27bit: 'kNone'
|
||||
- bmControls_28_29bit: 'kNone'
|
||||
- 3:
|
||||
- audio_unit: 'kOutputTerminal'
|
||||
- output_terminal:
|
||||
- bTerminalID: '4'
|
||||
- wTerminalType: 'kSpeaker'
|
||||
- bSourceID: 'bTerminalID_3'
|
||||
- bCSourceID: 'bClockID_1'
|
||||
- bmControls_0_1bit: 'kNone'
|
||||
- bmControls_2_3bit: 'kNone'
|
||||
- bmControls_4_5bit: 'kNone'
|
||||
- bmControls_6_7bit: 'kNone'
|
||||
- bmControls_8_9bit: 'kNone'
|
||||
- 3:
|
||||
- interface_class: 'kClassAudio_2_0'
|
||||
- setting_audio_2_0:
|
||||
- interface_name: 'Audio 20'
|
||||
- subclass: 'kSubclassAudioStream'
|
||||
- protocol: 'kProtocolIPV20'
|
||||
- implementation: 'kImplementationNone'
|
||||
- endpoints_settings:
|
||||
- 0:
|
||||
- setting_name: 'Default'
|
||||
- endpoints: []
|
||||
- asInterface_descriptor_audio_2_0:
|
||||
- bTerminalLink: 'bTerminalID_2'
|
||||
- bmControlsLow: 'kNone'
|
||||
- bmControlsHigh: 'kNone'
|
||||
- bFormatType: 'kFormatI'
|
||||
- bmFormats: 'kUndefined'
|
||||
- bNrChannels: '2'
|
||||
- bmChannelConfig: ''
|
||||
- typeIFormat_descriptor_audio_2_0:
|
||||
- bSubslotSize: 'kOne'
|
||||
- bBitResolution: '0'
|
||||
- 1:
|
||||
- setting_name: 'Default2'
|
||||
- endpoints:
|
||||
- 0:
|
||||
- direction: 'kOut'
|
||||
- transfer_type: 'kIsochronous'
|
||||
- synchronization: 'kAdaptive'
|
||||
- usage: 'kData'
|
||||
- max_packet_size_fs: 'k8'
|
||||
- polling_interval_fs: '1'
|
||||
- max_packet_size_hs: 'k8'
|
||||
- polling_interval_hs: '1'
|
||||
- bRefresh: '0'
|
||||
- bSynchAddress: 'NoSynchronization'
|
||||
- cs_as_data_2_0:
|
||||
- bmControls_0_1bit: 'kNone'
|
||||
- bmControls_2_3bit: 'kNone'
|
||||
- bmControls_4_5bit: 'kNone'
|
||||
- bLockDelayUnits: 'undefined'
|
||||
- wLockDelay: '0'
|
||||
- 1:
|
||||
- direction: 'kIn'
|
||||
- transfer_type: 'kIsochronous'
|
||||
- synchronization: 'kNoSynchronization'
|
||||
- usage: 'kFeedback'
|
||||
- max_packet_size_fs: 'k8'
|
||||
- polling_interval_fs: '1'
|
||||
- max_packet_size_hs: 'k8'
|
||||
- polling_interval_hs: '1'
|
||||
- bRefresh: '0'
|
||||
- bSynchAddress: 'NoSynchronization'
|
||||
- asInterface_descriptor_audio_2_0:
|
||||
- bTerminalLink: 'bTerminalID_2'
|
||||
- bmControlsLow: 'kNone'
|
||||
- bmControlsHigh: 'kNone'
|
||||
- bFormatType: 'kFormatI'
|
||||
- bmFormats: 'kPCM'
|
||||
- bNrChannels: '2'
|
||||
- bmChannelConfig: 'USB_INTERFACE_AUDIO_CONTROL_INPUT_TERMINAL_CHANNEL_CONFIG_FL USB_INTERFACE_AUDIO_CONTROL_INPUT_TERMINAL_CHANNEL_CONFIG_FR'
|
||||
- typeIFormat_descriptor_audio_2_0:
|
||||
- bSubslotSize: 'kOne'
|
||||
- bBitResolution: '0'
|
||||
* BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
|
||||
/* clang-format on */
|
||||
|
||||
static void USB1_init(void) {
|
||||
USB_DeviceApplicationInit();
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Initialization functions
|
||||
**********************************************************************************************************************/
|
||||
void BOARD_InitPeripherals(void)
|
||||
{
|
||||
/* Initialize components */
|
||||
LPUART1_init();
|
||||
USB1_init();
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* BOARD_InitBootPeripherals function
|
||||
**********************************************************************************************************************/
|
||||
void BOARD_InitBootPeripherals(void)
|
||||
{
|
||||
BOARD_InitPeripherals();
|
||||
}
|
|
@ -1,49 +0,0 @@
|
|||
/***********************************************************************************************************************
|
||||
* This file was generated by the MCUXpresso Config Tools. Any manual edits made to this file
|
||||
* will be overwritten if the respective MCUXpresso Config Tools is used to update this file.
|
||||
**********************************************************************************************************************/
|
||||
|
||||
#ifndef _PERIPHERALS_H_
|
||||
#define _PERIPHERALS_H_
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Included files
|
||||
**********************************************************************************************************************/
|
||||
#include "fsl_common.h"
|
||||
#include "fsl_lpuart.h"
|
||||
#include "fsl_clock.h"
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Definitions
|
||||
**********************************************************************************************************************/
|
||||
/* Definitions for BOARD_InitPeripherals functional group */
|
||||
/* Definition of peripheral ID */
|
||||
#define LPUART1_PERIPHERAL LPUART1
|
||||
/* Definition of the clock source frequency */
|
||||
#define LPUART1_CLOCK_SOURCE 80000000UL
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Global variables
|
||||
**********************************************************************************************************************/
|
||||
extern const lpuart_config_t LPUART1_config;
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Initialization functions
|
||||
**********************************************************************************************************************/
|
||||
|
||||
void BOARD_InitPeripherals(void);
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* BOARD_InitBootPeripherals function
|
||||
**********************************************************************************************************************/
|
||||
void BOARD_InitBootPeripherals(void);
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _PERIPHERALS_H_ */
|
|
@ -1,73 +0,0 @@
|
|||
/***********************************************************************************************************************
|
||||
* This file was generated by the MCUXpresso Config Tools. Any manual edits made to this file
|
||||
* will be overwritten if the respective MCUXpresso Config Tools is used to update this file.
|
||||
**********************************************************************************************************************/
|
||||
|
||||
/*
|
||||
* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
|
||||
!!GlobalInfo
|
||||
product: Pins v9.0
|
||||
processor: MIMXRT1052xxxxB
|
||||
package_id: MIMXRT1052DVL6B
|
||||
mcu_data: ksdk2_0
|
||||
processor_version: 9.0.1
|
||||
board: IMXRT1050-EVKB
|
||||
* BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS ***********
|
||||
*/
|
||||
|
||||
#include "fsl_common.h"
|
||||
#include "fsl_iomuxc.h"
|
||||
#include "fsl_gpio.h"
|
||||
#include "pin_mux.h"
|
||||
|
||||
/* FUNCTION ************************************************************************************************************
|
||||
*
|
||||
* Function Name : BOARD_InitBootPins
|
||||
* Description : Calls initialization functions.
|
||||
*
|
||||
* END ****************************************************************************************************************/
|
||||
void BOARD_InitBootPins(void) {
|
||||
BOARD_InitPins();
|
||||
}
|
||||
|
||||
/*
|
||||
* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
|
||||
BOARD_InitPins:
|
||||
- options: {callFromInitBoot: 'true', coreID: core0, enableClock: 'true'}
|
||||
- pin_list:
|
||||
- {pin_num: L14, peripheral: LPUART1, signal: RX, pin_signal: GPIO_AD_B0_13, software_input_on: Disable, hysteresis_enable: Disable, pull_up_down_config: Pull_Down_100K_Ohm,
|
||||
pull_keeper_select: Keeper, pull_keeper_enable: Enable, open_drain: Disable, speed: MHZ_100, drive_strength: R0_6, slew_rate: Slow}
|
||||
- {pin_num: K14, peripheral: LPUART1, signal: TX, pin_signal: GPIO_AD_B0_12, software_input_on: Disable, hysteresis_enable: Disable, pull_up_down_config: Pull_Down_100K_Ohm,
|
||||
pull_keeper_select: Keeper, pull_keeper_enable: Enable, open_drain: Disable, speed: MHZ_100, drive_strength: R0_6, slew_rate: Slow}
|
||||
- {pin_num: G13, peripheral: GPIO1, signal: 'gpio_io, 10', pin_signal: GPIO_AD_B0_10, direction: OUTPUT, gpio_init_state: 'true'}
|
||||
* BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS ***********
|
||||
*/
|
||||
|
||||
/* FUNCTION ************************************************************************************************************
|
||||
*
|
||||
* Function Name : BOARD_InitPins
|
||||
* Description : Configures pin routing and optionally pin electrical features.
|
||||
*
|
||||
* END ****************************************************************************************************************/
|
||||
void BOARD_InitPins(void) {
|
||||
CLOCK_EnableClock(kCLOCK_Iomuxc);
|
||||
|
||||
/* GPIO configuration of INT1_COMBO on GPIO_AD_B0_10 (pin G13) */
|
||||
gpio_pin_config_t INT1_COMBO_config = {
|
||||
.direction = kGPIO_DigitalOutput,
|
||||
.outputLogic = 1U,
|
||||
.interruptMode = kGPIO_NoIntmode
|
||||
};
|
||||
/* Initialize GPIO functionality on GPIO_AD_B0_10 (pin G13) */
|
||||
GPIO_PinInit(GPIO1, 10U, &INT1_COMBO_config);
|
||||
|
||||
IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B0_10_GPIO1_IO10, 0U);
|
||||
IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B0_12_LPUART1_TX, 0U);
|
||||
IOMUXC_SetPinMux(IOMUXC_GPIO_AD_B0_13_LPUART1_RX, 0U);
|
||||
IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B0_12_LPUART1_TX, 0x10B0U);
|
||||
IOMUXC_SetPinConfig(IOMUXC_GPIO_AD_B0_13_LPUART1_RX, 0x10B0U);
|
||||
}
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* EOF
|
||||
**********************************************************************************************************************/
|
|
@ -1,82 +0,0 @@
|
|||
/***********************************************************************************************************************
|
||||
* This file was generated by the MCUXpresso Config Tools. Any manual edits made to this file
|
||||
* will be overwritten if the respective MCUXpresso Config Tools is used to update this file.
|
||||
**********************************************************************************************************************/
|
||||
|
||||
#ifndef _PIN_MUX_H_
|
||||
#define _PIN_MUX_H_
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* Definitions
|
||||
**********************************************************************************************************************/
|
||||
|
||||
/*! @brief Direction type */
|
||||
typedef enum _pin_mux_direction
|
||||
{
|
||||
kPIN_MUX_DirectionInput = 0U, /* Input direction */
|
||||
kPIN_MUX_DirectionOutput = 1U, /* Output direction */
|
||||
kPIN_MUX_DirectionInputOrOutput = 2U /* Input or output direction */
|
||||
} pin_mux_direction_t;
|
||||
|
||||
/*!
|
||||
* @addtogroup pin_mux
|
||||
* @{
|
||||
*/
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* API
|
||||
**********************************************************************************************************************/
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*!
|
||||
* @brief Calls initialization functions.
|
||||
*
|
||||
*/
|
||||
void BOARD_InitBootPins(void);
|
||||
|
||||
/* GPIO_AD_B0_13 (coord L14), UART1_RXD */
|
||||
/* Routed pin properties */
|
||||
#define BOARD_INITPINS_UART1_RXD_PERIPHERAL LPUART1 /*!< Peripheral name */
|
||||
#define BOARD_INITPINS_UART1_RXD_SIGNAL RX /*!< Signal name */
|
||||
|
||||
/* GPIO_AD_B0_12 (coord K14), UART1_TXD */
|
||||
/* Routed pin properties */
|
||||
#define BOARD_INITPINS_UART1_TXD_PERIPHERAL LPUART1 /*!< Peripheral name */
|
||||
#define BOARD_INITPINS_UART1_TXD_SIGNAL TX /*!< Signal name */
|
||||
|
||||
/* GPIO_AD_B0_10 (coord G13), JTAG_TDO/J21[13]/INT1_COMBO/ENET_INT/J22[6]/U32[11] */
|
||||
/* Routed pin properties */
|
||||
#define BOARD_INITPINS_INT1_COMBO_PERIPHERAL GPIO1 /*!< Peripheral name */
|
||||
#define BOARD_INITPINS_INT1_COMBO_SIGNAL gpio_io /*!< Signal name */
|
||||
#define BOARD_INITPINS_INT1_COMBO_CHANNEL 10U /*!< Signal channel */
|
||||
|
||||
/* Symbols to be used with GPIO driver */
|
||||
#define BOARD_INITPINS_INT1_COMBO_GPIO GPIO1 /*!< GPIO peripheral base pointer */
|
||||
#define BOARD_INITPINS_INT1_COMBO_GPIO_PIN 10U /*!< GPIO pin number */
|
||||
#define BOARD_INITPINS_INT1_COMBO_GPIO_PIN_MASK (1U << 10U) /*!< GPIO pin mask */
|
||||
#define BOARD_INITPINS_INT1_COMBO_PORT GPIO1 /*!< PORT peripheral base pointer */
|
||||
#define BOARD_INITPINS_INT1_COMBO_PIN 10U /*!< PORT pin number */
|
||||
#define BOARD_INITPINS_INT1_COMBO_PIN_MASK (1U << 10U) /*!< PORT pin mask */
|
||||
|
||||
|
||||
/*!
|
||||
* @brief Configures pin routing and optionally pin electrical features.
|
||||
*
|
||||
*/
|
||||
void BOARD_InitPins(void);
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
/*!
|
||||
* @}
|
||||
*/
|
||||
#endif /* _PIN_MUX_H_ */
|
||||
|
||||
/***********************************************************************************************************************
|
||||
* EOF
|
||||
**********************************************************************************************************************/
|
|
@ -504,6 +504,10 @@
|
|||
<file path="source/generated/usb_device_descriptor.h" update_enabled="true"/>
|
||||
<file path="source/usb_device_interface_0_cic_vcom.c" update_enabled="true"/>
|
||||
<file path="source/usb_device_interface_0_cic_vcom.h" update_enabled="true"/>
|
||||
<file path="source/usb_device_interface_2_cic_vcom.c" update_enabled="true"/>
|
||||
<file path="source/usb_device_interface_2_cic_vcom.h" update_enabled="true"/>
|
||||
<file path="source/usb_device_interface_4_cic_vcom.c" update_enabled="true"/>
|
||||
<file path="source/usb_device_interface_4_cic_vcom.h" update_enabled="true"/>
|
||||
</generated_project_files>
|
||||
<peripherals_profile>
|
||||
<processor_version>9.0.1</processor_version>
|
||||
|
@ -588,8 +592,8 @@
|
|||
<config_set name="deviceSetting">
|
||||
<setting name="vendor_id" value="0x1FC9"/>
|
||||
<setting name="product_id" value="0x0094"/>
|
||||
<setting name="manufacturer_string" value="NXP"/>
|
||||
<setting name="product_string" value="VCOM"/>
|
||||
<setting name="manufacturer_string" value="NXP Semiconductors"/>
|
||||
<setting name="product_string" value="CDC Virtual COM"/>
|
||||
<setting name="self_powered" value="true"/>
|
||||
<setting name="max_power" value="500"/>
|
||||
<array name="interfaces">
|
||||
|
@ -662,6 +666,144 @@
|
|||
</array>
|
||||
</struct>
|
||||
</struct>
|
||||
<struct name="2">
|
||||
<setting name="interface_class" value="kClassCic"/>
|
||||
<struct name="setting_cic" quick_selection="QS_INTERFACE_CIC_VCOM">
|
||||
<setting name="interface_name" value="CIC VCOM"/>
|
||||
<setting name="subclass" value="kSubclassAcm"/>
|
||||
<setting name="protocol" value="kProtocolNone"/>
|
||||
<setting name="implementation" value="kImplementationCicVcom"/>
|
||||
<array name="endpoints_settings">
|
||||
<struct name="0">
|
||||
<setting name="setting_name" value="Default"/>
|
||||
<array name="endpoints">
|
||||
<struct name="0">
|
||||
<setting name="direction" value="kIn"/>
|
||||
<setting name="transfer_type" value="kInterrupt"/>
|
||||
<setting name="synchronization" value="kNoSynchronization"/>
|
||||
<setting name="usage" value="kData"/>
|
||||
<setting name="max_packet_size_fs" value="k16"/>
|
||||
<setting name="polling_interval_fs" value="8"/>
|
||||
<setting name="max_packet_size_hs" value="k16"/>
|
||||
<setting name="polling_interval_hs" value="7"/>
|
||||
<setting name="bRefresh" value="0"/>
|
||||
<setting name="bSynchAddress" value="NoSynchronization"/>
|
||||
</struct>
|
||||
</array>
|
||||
</struct>
|
||||
</array>
|
||||
<setting name="data_interface_count" value="1"/>
|
||||
</struct>
|
||||
</struct>
|
||||
<struct name="3">
|
||||
<setting name="interface_class" value="kClassDic"/>
|
||||
<struct name="setting_dic" quick_selection="QS_INTERFACE_DIC_VCOM">
|
||||
<setting name="interface_name" value="DIC VCOM"/>
|
||||
<setting name="subclass" value="kSubclassNone"/>
|
||||
<setting name="protocol" value="kProtocolNone"/>
|
||||
<setting name="implementation" value="kImplementationDicVcom"/>
|
||||
<array name="endpoints_settings">
|
||||
<struct name="0">
|
||||
<setting name="setting_name" value="Default"/>
|
||||
<array name="endpoints">
|
||||
<struct name="0">
|
||||
<setting name="direction" value="kIn"/>
|
||||
<setting name="transfer_type" value="kBulk"/>
|
||||
<setting name="synchronization" value="kNoSynchronization"/>
|
||||
<setting name="usage" value="kData"/>
|
||||
<setting name="max_packet_size_fs" value="k64"/>
|
||||
<setting name="polling_interval_fs" value="0"/>
|
||||
<setting name="max_packet_size_hs" value="k512"/>
|
||||
<setting name="polling_interval_hs" value="0"/>
|
||||
<setting name="bRefresh" value="0"/>
|
||||
<setting name="bSynchAddress" value="NoSynchronization"/>
|
||||
</struct>
|
||||
<struct name="1">
|
||||
<setting name="direction" value="kOut"/>
|
||||
<setting name="transfer_type" value="kBulk"/>
|
||||
<setting name="synchronization" value="kNoSynchronization"/>
|
||||
<setting name="usage" value="kData"/>
|
||||
<setting name="max_packet_size_fs" value="k64"/>
|
||||
<setting name="polling_interval_fs" value="0"/>
|
||||
<setting name="max_packet_size_hs" value="k512"/>
|
||||
<setting name="polling_interval_hs" value="0"/>
|
||||
<setting name="bRefresh" value="0"/>
|
||||
<setting name="bSynchAddress" value="NoSynchronization"/>
|
||||
</struct>
|
||||
</array>
|
||||
</struct>
|
||||
</array>
|
||||
</struct>
|
||||
</struct>
|
||||
<struct name="4">
|
||||
<setting name="interface_class" value="kClassCic"/>
|
||||
<struct name="setting_cic" quick_selection="QS_INTERFACE_CIC_VCOM">
|
||||
<setting name="interface_name" value="CIC VCOM"/>
|
||||
<setting name="subclass" value="kSubclassAcm"/>
|
||||
<setting name="protocol" value="kProtocolNone"/>
|
||||
<setting name="implementation" value="kImplementationCicVcom"/>
|
||||
<array name="endpoints_settings">
|
||||
<struct name="0">
|
||||
<setting name="setting_name" value="Default"/>
|
||||
<array name="endpoints">
|
||||
<struct name="0">
|
||||
<setting name="direction" value="kIn"/>
|
||||
<setting name="transfer_type" value="kInterrupt"/>
|
||||
<setting name="synchronization" value="kNoSynchronization"/>
|
||||
<setting name="usage" value="kData"/>
|
||||
<setting name="max_packet_size_fs" value="k16"/>
|
||||
<setting name="polling_interval_fs" value="8"/>
|
||||
<setting name="max_packet_size_hs" value="k16"/>
|
||||
<setting name="polling_interval_hs" value="7"/>
|
||||
<setting name="bRefresh" value="0"/>
|
||||
<setting name="bSynchAddress" value="NoSynchronization"/>
|
||||
</struct>
|
||||
</array>
|
||||
</struct>
|
||||
</array>
|
||||
<setting name="data_interface_count" value="1"/>
|
||||
</struct>
|
||||
</struct>
|
||||
<struct name="5">
|
||||
<setting name="interface_class" value="kClassDic"/>
|
||||
<struct name="setting_dic" quick_selection="QS_INTERFACE_DIC_VCOM">
|
||||
<setting name="interface_name" value="DIC VCOM"/>
|
||||
<setting name="subclass" value="kSubclassNone"/>
|
||||
<setting name="protocol" value="kProtocolNone"/>
|
||||
<setting name="implementation" value="kImplementationDicVcom"/>
|
||||
<array name="endpoints_settings">
|
||||
<struct name="0">
|
||||
<setting name="setting_name" value="Default"/>
|
||||
<array name="endpoints">
|
||||
<struct name="0">
|
||||
<setting name="direction" value="kIn"/>
|
||||
<setting name="transfer_type" value="kBulk"/>
|
||||
<setting name="synchronization" value="kNoSynchronization"/>
|
||||
<setting name="usage" value="kData"/>
|
||||
<setting name="max_packet_size_fs" value="k64"/>
|
||||
<setting name="polling_interval_fs" value="0"/>
|
||||
<setting name="max_packet_size_hs" value="k512"/>
|
||||
<setting name="polling_interval_hs" value="0"/>
|
||||
<setting name="bRefresh" value="0"/>
|
||||
<setting name="bSynchAddress" value="NoSynchronization"/>
|
||||
</struct>
|
||||
<struct name="1">
|
||||
<setting name="direction" value="kOut"/>
|
||||
<setting name="transfer_type" value="kBulk"/>
|
||||
<setting name="synchronization" value="kNoSynchronization"/>
|
||||
<setting name="usage" value="kData"/>
|
||||
<setting name="max_packet_size_fs" value="k64"/>
|
||||
<setting name="polling_interval_fs" value="0"/>
|
||||
<setting name="max_packet_size_hs" value="k512"/>
|
||||
<setting name="polling_interval_hs" value="0"/>
|
||||
<setting name="bRefresh" value="0"/>
|
||||
<setting name="bSynchAddress" value="NoSynchronization"/>
|
||||
</struct>
|
||||
</array>
|
||||
</struct>
|
||||
</array>
|
||||
</struct>
|
||||
</struct>
|
||||
</array>
|
||||
</config_set>
|
||||
</instance>
|
||||
|
|
|
@ -82,6 +82,6 @@ static void hello_task(void *pvParameters)
|
|||
static void usb_task(void *pvParameters) {
|
||||
for(;;) {
|
||||
USB_DeviceTasks();
|
||||
vTaskDelay(pdMS_TO_TICKS(10));
|
||||
vTaskDelay(pdMS_TO_TICKS(1));
|
||||
}
|
||||
}
|
|
@ -47,6 +47,10 @@
|
|||
#include "usb_device_composite.h"
|
||||
|
||||
#include "usb_device_interface_0_cic_vcom.h"
|
||||
|
||||
#include "usb_device_interface_2_cic_vcom.h"
|
||||
|
||||
#include "usb_device_interface_4_cic_vcom.h"
|
||||
|
||||
#if (defined(FSL_FEATURE_SOC_SYSMPU_COUNT) && (FSL_FEATURE_SOC_SYSMPU_COUNT > 0U))
|
||||
#include "fsl_sysmpu.h"
|
||||
|
@ -131,6 +135,20 @@ extern usb_status_t USB_DeviceInterface0CicVcomSetInterface(class_handle_t handl
|
|||
|
||||
extern usb_status_t USB_DeviceInterface1DicVcomSetInterface(class_handle_t handle, uint8_t alternateSetting);
|
||||
|
||||
extern usb_status_t USB_DeviceInterface2CicVcomInit(usb_device_composite_struct_t *deviceComposite);
|
||||
extern usb_status_t USB_DeviceInterface2CicVcomCallback(class_handle_t handle, uint32_t event, void *param);
|
||||
extern usb_status_t USB_DeviceInterface2CicVcomSetConfiguration(class_handle_t handle, uint8_t configuration_index);
|
||||
extern usb_status_t USB_DeviceInterface2CicVcomSetInterface(class_handle_t handle, uint8_t alternateSetting);
|
||||
|
||||
extern usb_status_t USB_DeviceInterface3DicVcomSetInterface(class_handle_t handle, uint8_t alternateSetting);
|
||||
|
||||
extern usb_status_t USB_DeviceInterface4CicVcomInit(usb_device_composite_struct_t *deviceComposite);
|
||||
extern usb_status_t USB_DeviceInterface4CicVcomCallback(class_handle_t handle, uint32_t event, void *param);
|
||||
extern usb_status_t USB_DeviceInterface4CicVcomSetConfiguration(class_handle_t handle, uint8_t configuration_index);
|
||||
extern usb_status_t USB_DeviceInterface4CicVcomSetInterface(class_handle_t handle, uint8_t alternateSetting);
|
||||
|
||||
extern usb_status_t USB_DeviceInterface5DicVcomSetInterface(class_handle_t handle, uint8_t alternateSetting);
|
||||
|
||||
/*******************************************************************************
|
||||
* Variables
|
||||
******************************************************************************/
|
||||
|
@ -149,6 +167,8 @@ uint32_t isConnectedToHsHost = 0U;
|
|||
usb_device_composite_struct_t g_UsbDeviceComposite;
|
||||
|
||||
extern usb_device_class_struct_t g_UsbDeviceInterface0CicVcomConfig;
|
||||
extern usb_device_class_struct_t g_UsbDeviceInterface2CicVcomConfig;
|
||||
extern usb_device_class_struct_t g_UsbDeviceInterface4CicVcomConfig;
|
||||
|
||||
/* Set class configurations. */
|
||||
usb_device_class_config_struct_t g_CompositeClassConfig[USB_COMPOSITE_INTERFACE_COUNT] = {
|
||||
|
@ -158,6 +178,18 @@ usb_device_class_config_struct_t g_CompositeClassConfig[USB_COMPOSITE_INTERFACE_
|
|||
{
|
||||
(usb_device_class_callback_t)NULL, (class_handle_t)NULL, NULL,
|
||||
},
|
||||
{
|
||||
USB_DeviceInterface2CicVcomCallback, (class_handle_t)NULL, &g_UsbDeviceInterface2CicVcomConfig,
|
||||
},
|
||||
{
|
||||
(usb_device_class_callback_t)NULL, (class_handle_t)NULL, NULL,
|
||||
},
|
||||
{
|
||||
USB_DeviceInterface4CicVcomCallback, (class_handle_t)NULL, &g_UsbDeviceInterface4CicVcomConfig,
|
||||
},
|
||||
{
|
||||
(usb_device_class_callback_t)NULL, (class_handle_t)NULL, NULL,
|
||||
},
|
||||
};
|
||||
|
||||
/* Set class configuration list. */
|
||||
|
@ -690,6 +722,10 @@ static usb_status_t USB_DeviceCallback(usb_device_handle handle, uint32_t event,
|
|||
g_UsbDeviceComposite.currentConfiguration = 0U;
|
||||
/* The device is detached - the zero configuration is set. */
|
||||
USB_DeviceInterface0CicVcomSetConfiguration(g_UsbDeviceComposite.interface0CicVcomHandle, *temp8);
|
||||
/* The device is detached - the zero configuration is set. */
|
||||
USB_DeviceInterface2CicVcomSetConfiguration(g_UsbDeviceComposite.interface2CicVcomHandle, *temp8);
|
||||
/* The device is detached - the zero configuration is set. */
|
||||
USB_DeviceInterface4CicVcomSetConfiguration(g_UsbDeviceComposite.interface4CicVcomHandle, *temp8);
|
||||
}
|
||||
else if (USB_COMPOSITE_CONFIGURATION_INDEX == (*temp8))
|
||||
{
|
||||
|
@ -697,6 +733,8 @@ static usb_status_t USB_DeviceCallback(usb_device_handle handle, uint32_t event,
|
|||
g_UsbDeviceComposite.attach = 1U;
|
||||
g_UsbDeviceComposite.currentConfiguration = *temp8;
|
||||
USB_DeviceInterface0CicVcomSetConfiguration(g_UsbDeviceComposite.interface0CicVcomHandle, *temp8);
|
||||
USB_DeviceInterface2CicVcomSetConfiguration(g_UsbDeviceComposite.interface2CicVcomHandle, *temp8);
|
||||
USB_DeviceInterface4CicVcomSetConfiguration(g_UsbDeviceComposite.interface4CicVcomHandle, *temp8);
|
||||
error = kStatus_USB_Success;
|
||||
}
|
||||
else
|
||||
|
@ -858,6 +896,20 @@ usb_status_t USB_UpdateInterfaceSetting(uint8_t interface, uint8_t alternateSett
|
|||
case USB_INTERFACE_1_DIC_VCOM_INDEX:
|
||||
ret = USB_DeviceInterface1DicVcomSetInterface(g_UsbDeviceComposite.interface0CicVcomHandle, alternateSetting);
|
||||
break;
|
||||
|
||||
case USB_INTERFACE_2_CIC_VCOM_INDEX:
|
||||
ret = USB_DeviceInterface2CicVcomSetInterface(g_UsbDeviceComposite.interface2CicVcomHandle, alternateSetting);
|
||||
break;
|
||||
case USB_INTERFACE_3_DIC_VCOM_INDEX:
|
||||
ret = USB_DeviceInterface3DicVcomSetInterface(g_UsbDeviceComposite.interface2CicVcomHandle, alternateSetting);
|
||||
break;
|
||||
|
||||
case USB_INTERFACE_4_CIC_VCOM_INDEX:
|
||||
ret = USB_DeviceInterface4CicVcomSetInterface(g_UsbDeviceComposite.interface4CicVcomHandle, alternateSetting);
|
||||
break;
|
||||
case USB_INTERFACE_5_DIC_VCOM_INDEX:
|
||||
ret = USB_DeviceInterface5DicVcomSetInterface(g_UsbDeviceComposite.interface4CicVcomHandle, alternateSetting);
|
||||
break;
|
||||
}
|
||||
|
||||
if (ret == kStatus_USB_Success)
|
||||
|
@ -888,6 +940,8 @@ usb_status_t USB_DeviceApplicationInit(void)
|
|||
g_UsbDeviceComposite.speed = USB_SPEED_FULL;
|
||||
g_UsbDeviceComposite.attach = 0U;
|
||||
g_UsbDeviceComposite.interface0CicVcomHandle = (class_handle_t)NULL;
|
||||
g_UsbDeviceComposite.interface2CicVcomHandle = (class_handle_t)NULL;
|
||||
g_UsbDeviceComposite.interface4CicVcomHandle = (class_handle_t)NULL;
|
||||
g_UsbDeviceComposite.deviceHandle = NULL;
|
||||
|
||||
/* Initialize the usb stack and class drivers. */
|
||||
|
@ -901,6 +955,10 @@ usb_status_t USB_DeviceApplicationInit(void)
|
|||
/* Get the class handle. */
|
||||
g_UsbDeviceComposite.interface0CicVcomHandle = g_UsbDeviceCompositeConfigList.config[0].classHandle;
|
||||
USB_DeviceInterface0CicVcomInit(&g_UsbDeviceComposite);
|
||||
g_UsbDeviceComposite.interface2CicVcomHandle = g_UsbDeviceCompositeConfigList.config[2].classHandle;
|
||||
USB_DeviceInterface2CicVcomInit(&g_UsbDeviceComposite);
|
||||
g_UsbDeviceComposite.interface4CicVcomHandle = g_UsbDeviceCompositeConfigList.config[4].classHandle;
|
||||
USB_DeviceInterface4CicVcomInit(&g_UsbDeviceComposite);
|
||||
|
||||
|
||||
#if (defined(USB_DEVICE_CONFIG_CHARGER_DETECT) && (USB_DEVICE_CONFIG_CHARGER_DETECT > 0U)) && \
|
||||
|
@ -1035,7 +1093,11 @@ void USB_DeviceChargerTask(usb_device_composite_struct_t *usbDeviceCompositeDcd)
|
|||
void USB_DeviceTasks(void)
|
||||
{
|
||||
|
||||
USB_DeviceInterface0CicVcomTask();
|
||||
USB_DeviceInterface0CicVcomTask();
|
||||
|
||||
USB_DeviceInterface2CicVcomTask();
|
||||
|
||||
USB_DeviceInterface4CicVcomTask();
|
||||
#if USB_DEVICE_CONFIG_USE_TASK
|
||||
USB_DeviceTaskFn(g_UsbDeviceComposite.deviceHandle);
|
||||
#endif
|
||||
|
|
|
@ -93,6 +93,8 @@ typedef struct _usb_device_composite_struct
|
|||
{
|
||||
usb_device_handle deviceHandle;
|
||||
class_handle_t interface0CicVcomHandle;
|
||||
class_handle_t interface2CicVcomHandle;
|
||||
class_handle_t interface4CicVcomHandle;
|
||||
uint8_t currentConfiguration; /*Current configuration number*/
|
||||
uint8_t currentInterfaceAlternateSetting[USB_COMPOSITE_INTERFACE_COUNT]; /*alternate setting number*/
|
||||
uint8_t speed; /*USB speed code, one of the following: USB_SPEED_FULL(0x00U),USB_SPEED_LOW(0x01U),USB_SPEED_HIGH(0x02U)*/
|
||||
|
|
|
@ -70,7 +70,7 @@
|
|||
|
||||
/*! @brief CDC ACM instance count. */
|
||||
#ifndef USB_DEVICE_CONFIG_CDC_ACM
|
||||
#define USB_DEVICE_CONFIG_CDC_ACM (1U)
|
||||
#define USB_DEVICE_CONFIG_CDC_ACM (3U)
|
||||
#endif /*USB_DEVICE_CONFIG_CDC_ACM*/
|
||||
|
||||
/*! @brief MSC instance count. */
|
||||
|
@ -99,7 +99,7 @@
|
|||
#define USB_DEVICE_CONFIG_SELF_POWER (1U)
|
||||
|
||||
/*! @brief How many endpoints are supported in the stack. */
|
||||
#define USB_DEVICE_CONFIG_ENDPOINTS (3U)
|
||||
#define USB_DEVICE_CONFIG_ENDPOINTS (7U)
|
||||
|
||||
/*! @brief Whether the device task is enabled. */
|
||||
#define USB_DEVICE_CONFIG_USE_TASK (0U)
|
||||
|
|
|
@ -109,6 +109,98 @@ usb_device_interface_struct_t g_UsbDeviceInterface1DicVcomInterface[] = {
|
|||
},
|
||||
};
|
||||
|
||||
usb_device_endpoint_struct_t g_UsbDeviceInterface2CicVcomSetting0DefaultEndpoints[USB_INTERFACE_2_CIC_VCOM_SETTING_0_DEFAULT_ENDPOINT_COUNT] = {
|
||||
{
|
||||
USB_INTERFACE_2_CIC_VCOM_SETTING_0_EP_3_INTERRUPT_IN | (USB_IN << USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_SHIFT),
|
||||
USB_ENDPOINT_INTERRUPT,
|
||||
FS_INTERFACE_2_CIC_VCOM_SETTING_0_EP_3_INTERRUPT_IN_PACKET_SIZE,
|
||||
FS_INTERFACE_2_CIC_VCOM_SETTING_0_EP_3_INTERRUPT_IN_INTERVAL,
|
||||
},
|
||||
};
|
||||
|
||||
usb_device_interface_struct_t g_UsbDeviceInterface2CicVcomInterface[] = {
|
||||
{
|
||||
USB_INTERFACE_2_CIC_VCOM_SETTING_0_DEFAULT_INDEX, /* The alternate setting of the interface */
|
||||
{
|
||||
USB_INTERFACE_2_CIC_VCOM_SETTING_0_DEFAULT_ENDPOINT_COUNT, /* Endpoints count */
|
||||
g_UsbDeviceInterface2CicVcomSetting0DefaultEndpoints, /* Endpoints handle */
|
||||
},
|
||||
NULL,
|
||||
},
|
||||
};
|
||||
|
||||
usb_device_endpoint_struct_t g_UsbDeviceInterface3DicVcomSetting0DefaultEndpoints[USB_INTERFACE_3_DIC_VCOM_SETTING_0_DEFAULT_ENDPOINT_COUNT] = {
|
||||
{
|
||||
USB_INTERFACE_3_DIC_VCOM_SETTING_0_EP_4_BULK_IN | (USB_IN << USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_SHIFT),
|
||||
USB_ENDPOINT_BULK,
|
||||
FS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_4_BULK_IN_PACKET_SIZE,
|
||||
FS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_4_BULK_IN_INTERVAL,
|
||||
},
|
||||
{
|
||||
USB_INTERFACE_3_DIC_VCOM_SETTING_0_EP_2_BULK_OUT | (USB_OUT << USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_SHIFT),
|
||||
USB_ENDPOINT_BULK,
|
||||
FS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_2_BULK_OUT_PACKET_SIZE,
|
||||
FS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_2_BULK_OUT_INTERVAL,
|
||||
},
|
||||
};
|
||||
|
||||
usb_device_interface_struct_t g_UsbDeviceInterface3DicVcomInterface[] = {
|
||||
{
|
||||
USB_INTERFACE_3_DIC_VCOM_SETTING_0_DEFAULT_INDEX, /* The alternate setting of the interface */
|
||||
{
|
||||
USB_INTERFACE_3_DIC_VCOM_SETTING_0_DEFAULT_ENDPOINT_COUNT, /* Endpoints count */
|
||||
g_UsbDeviceInterface3DicVcomSetting0DefaultEndpoints, /* Endpoints handle */
|
||||
},
|
||||
NULL,
|
||||
},
|
||||
};
|
||||
|
||||
usb_device_endpoint_struct_t g_UsbDeviceInterface4CicVcomSetting0DefaultEndpoints[USB_INTERFACE_4_CIC_VCOM_SETTING_0_DEFAULT_ENDPOINT_COUNT] = {
|
||||
{
|
||||
USB_INTERFACE_4_CIC_VCOM_SETTING_0_EP_5_INTERRUPT_IN | (USB_IN << USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_SHIFT),
|
||||
USB_ENDPOINT_INTERRUPT,
|
||||
FS_INTERFACE_4_CIC_VCOM_SETTING_0_EP_5_INTERRUPT_IN_PACKET_SIZE,
|
||||
FS_INTERFACE_4_CIC_VCOM_SETTING_0_EP_5_INTERRUPT_IN_INTERVAL,
|
||||
},
|
||||
};
|
||||
|
||||
usb_device_interface_struct_t g_UsbDeviceInterface4CicVcomInterface[] = {
|
||||
{
|
||||
USB_INTERFACE_4_CIC_VCOM_SETTING_0_DEFAULT_INDEX, /* The alternate setting of the interface */
|
||||
{
|
||||
USB_INTERFACE_4_CIC_VCOM_SETTING_0_DEFAULT_ENDPOINT_COUNT, /* Endpoints count */
|
||||
g_UsbDeviceInterface4CicVcomSetting0DefaultEndpoints, /* Endpoints handle */
|
||||
},
|
||||
NULL,
|
||||
},
|
||||
};
|
||||
|
||||
usb_device_endpoint_struct_t g_UsbDeviceInterface5DicVcomSetting0DefaultEndpoints[USB_INTERFACE_5_DIC_VCOM_SETTING_0_DEFAULT_ENDPOINT_COUNT] = {
|
||||
{
|
||||
USB_INTERFACE_5_DIC_VCOM_SETTING_0_EP_6_BULK_IN | (USB_IN << USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_SHIFT),
|
||||
USB_ENDPOINT_BULK,
|
||||
FS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_6_BULK_IN_PACKET_SIZE,
|
||||
FS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_6_BULK_IN_INTERVAL,
|
||||
},
|
||||
{
|
||||
USB_INTERFACE_5_DIC_VCOM_SETTING_0_EP_3_BULK_OUT | (USB_OUT << USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_SHIFT),
|
||||
USB_ENDPOINT_BULK,
|
||||
FS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_3_BULK_OUT_PACKET_SIZE,
|
||||
FS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_3_BULK_OUT_INTERVAL,
|
||||
},
|
||||
};
|
||||
|
||||
usb_device_interface_struct_t g_UsbDeviceInterface5DicVcomInterface[] = {
|
||||
{
|
||||
USB_INTERFACE_5_DIC_VCOM_SETTING_0_DEFAULT_INDEX, /* The alternate setting of the interface */
|
||||
{
|
||||
USB_INTERFACE_5_DIC_VCOM_SETTING_0_DEFAULT_ENDPOINT_COUNT, /* Endpoints count */
|
||||
g_UsbDeviceInterface5DicVcomSetting0DefaultEndpoints, /* Endpoints handle */
|
||||
},
|
||||
NULL,
|
||||
},
|
||||
};
|
||||
|
||||
usb_device_interfaces_struct_t g_UsbDeviceInterface0CicVcomInterfaces[USB_INTERFACE_0_CIC_VCOM_INTERFACE_COUNT] = {
|
||||
{
|
||||
USB_INTERFACE_0_CIC_VCOM_CLASS,
|
||||
|
@ -141,6 +233,70 @@ usb_device_class_struct_t g_UsbDeviceInterface0CicVcomConfig = {
|
|||
USB_DEVICE_CONFIGURATION_COUNT,
|
||||
};
|
||||
|
||||
usb_device_interfaces_struct_t g_UsbDeviceInterface2CicVcomInterfaces[USB_INTERFACE_2_CIC_VCOM_INTERFACE_COUNT] = {
|
||||
{
|
||||
USB_INTERFACE_2_CIC_VCOM_CLASS,
|
||||
USB_INTERFACE_2_CIC_VCOM_SUBCLASS,
|
||||
USB_INTERFACE_2_CIC_VCOM_PROTOCOL,
|
||||
USB_INTERFACE_2_CIC_VCOM_INDEX,
|
||||
g_UsbDeviceInterface2CicVcomInterface, /* Interfaces handle */
|
||||
sizeof(g_UsbDeviceInterface2CicVcomInterface) / sizeof(usb_device_interface_struct_t),
|
||||
},
|
||||
{
|
||||
USB_INTERFACE_3_DIC_VCOM_CLASS,
|
||||
USB_INTERFACE_3_DIC_VCOM_SUBCLASS,
|
||||
USB_INTERFACE_3_DIC_VCOM_PROTOCOL,
|
||||
USB_INTERFACE_3_DIC_VCOM_INDEX,
|
||||
g_UsbDeviceInterface3DicVcomInterface, /* Interfaces handle */
|
||||
sizeof(g_UsbDeviceInterface3DicVcomInterface) / sizeof(usb_device_interface_struct_t),
|
||||
},
|
||||
};
|
||||
|
||||
usb_device_interface_list_t g_UsbDeviceInterface2CicVcomInterfaceList[USB_DEVICE_CONFIGURATION_COUNT] = {
|
||||
{
|
||||
USB_INTERFACE_2_CIC_VCOM_INTERFACE_COUNT,
|
||||
g_UsbDeviceInterface2CicVcomInterfaces, /* The interfaces handle */
|
||||
},
|
||||
};
|
||||
|
||||
usb_device_class_struct_t g_UsbDeviceInterface2CicVcomConfig = {
|
||||
g_UsbDeviceInterface2CicVcomInterfaceList,
|
||||
kUSB_DeviceClassTypeCdc,
|
||||
USB_DEVICE_CONFIGURATION_COUNT,
|
||||
};
|
||||
|
||||
usb_device_interfaces_struct_t g_UsbDeviceInterface4CicVcomInterfaces[USB_INTERFACE_4_CIC_VCOM_INTERFACE_COUNT] = {
|
||||
{
|
||||
USB_INTERFACE_4_CIC_VCOM_CLASS,
|
||||
USB_INTERFACE_4_CIC_VCOM_SUBCLASS,
|
||||
USB_INTERFACE_4_CIC_VCOM_PROTOCOL,
|
||||
USB_INTERFACE_4_CIC_VCOM_INDEX,
|
||||
g_UsbDeviceInterface4CicVcomInterface, /* Interfaces handle */
|
||||
sizeof(g_UsbDeviceInterface4CicVcomInterface) / sizeof(usb_device_interface_struct_t),
|
||||
},
|
||||
{
|
||||
USB_INTERFACE_5_DIC_VCOM_CLASS,
|
||||
USB_INTERFACE_5_DIC_VCOM_SUBCLASS,
|
||||
USB_INTERFACE_5_DIC_VCOM_PROTOCOL,
|
||||
USB_INTERFACE_5_DIC_VCOM_INDEX,
|
||||
g_UsbDeviceInterface5DicVcomInterface, /* Interfaces handle */
|
||||
sizeof(g_UsbDeviceInterface5DicVcomInterface) / sizeof(usb_device_interface_struct_t),
|
||||
},
|
||||
};
|
||||
|
||||
usb_device_interface_list_t g_UsbDeviceInterface4CicVcomInterfaceList[USB_DEVICE_CONFIGURATION_COUNT] = {
|
||||
{
|
||||
USB_INTERFACE_4_CIC_VCOM_INTERFACE_COUNT,
|
||||
g_UsbDeviceInterface4CicVcomInterfaces, /* The interfaces handle */
|
||||
},
|
||||
};
|
||||
|
||||
usb_device_class_struct_t g_UsbDeviceInterface4CicVcomConfig = {
|
||||
g_UsbDeviceInterface4CicVcomInterfaceList,
|
||||
kUSB_DeviceClassTypeCdc,
|
||||
USB_DEVICE_CONFIGURATION_COUNT,
|
||||
};
|
||||
|
||||
USB_DMA_INIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE)
|
||||
uint8_t g_UsbDeviceDescriptor[] = {
|
||||
USB_DESCRIPTOR_LENGTH_DEVICE, /* Size of this descriptor in bytes */
|
||||
|
@ -188,8 +344,8 @@ USB_DMA_INIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE)
|
|||
uint8_t g_UsbDeviceConfigurationDescriptor[] = {
|
||||
USB_DESCRIPTOR_LENGTH_CONFIGURE, /* Size of this descriptor in bytes */
|
||||
USB_DESCRIPTOR_TYPE_CONFIGURE, /* CONFIGURATION Descriptor Type */
|
||||
USB_SHORT_GET_LOW(USB_DESCRIPTOR_LENGTH_CONFIGURE + USB_IAD_DESC_SIZE + USB_DESCRIPTOR_LENGTH_INTERFACE + USB_DESCRIPTOR_LENGTH_ENDPOINT + USB_DESCRIPTOR_LENGTH_CDC_HEADER_FUNC + USB_DESCRIPTOR_LENGTH_CDC_CALL_MANAG + USB_DESCRIPTOR_LENGTH_CDC_ABSTRACT + USB_DESCRIPTOR_LENGTH_INTERFACE_0_CIC_VCOM_UNION_FUNC + USB_DESCRIPTOR_LENGTH_INTERFACE + USB_DESCRIPTOR_LENGTH_ENDPOINT + USB_DESCRIPTOR_LENGTH_ENDPOINT),
|
||||
USB_SHORT_GET_HIGH(USB_DESCRIPTOR_LENGTH_CONFIGURE + USB_IAD_DESC_SIZE + USB_DESCRIPTOR_LENGTH_INTERFACE + USB_DESCRIPTOR_LENGTH_ENDPOINT + USB_DESCRIPTOR_LENGTH_CDC_HEADER_FUNC + USB_DESCRIPTOR_LENGTH_CDC_CALL_MANAG + USB_DESCRIPTOR_LENGTH_CDC_ABSTRACT + USB_DESCRIPTOR_LENGTH_INTERFACE_0_CIC_VCOM_UNION_FUNC + USB_DESCRIPTOR_LENGTH_INTERFACE + USB_DESCRIPTOR_LENGTH_ENDPOINT + USB_DESCRIPTOR_LENGTH_ENDPOINT), /* Total length of data returned for this configuration. */
|
||||
USB_SHORT_GET_LOW(USB_DESCRIPTOR_LENGTH_CONFIGURE + USB_IAD_DESC_SIZE + USB_DESCRIPTOR_LENGTH_INTERFACE + USB_DESCRIPTOR_LENGTH_ENDPOINT + USB_DESCRIPTOR_LENGTH_CDC_HEADER_FUNC + USB_DESCRIPTOR_LENGTH_CDC_CALL_MANAG + USB_DESCRIPTOR_LENGTH_CDC_ABSTRACT + USB_DESCRIPTOR_LENGTH_INTERFACE_0_CIC_VCOM_UNION_FUNC + USB_DESCRIPTOR_LENGTH_INTERFACE + USB_DESCRIPTOR_LENGTH_ENDPOINT + USB_DESCRIPTOR_LENGTH_ENDPOINT + USB_IAD_DESC_SIZE + USB_DESCRIPTOR_LENGTH_INTERFACE + USB_DESCRIPTOR_LENGTH_ENDPOINT + USB_DESCRIPTOR_LENGTH_CDC_HEADER_FUNC + USB_DESCRIPTOR_LENGTH_CDC_CALL_MANAG + USB_DESCRIPTOR_LENGTH_CDC_ABSTRACT + USB_DESCRIPTOR_LENGTH_INTERFACE_2_CIC_VCOM_UNION_FUNC + USB_DESCRIPTOR_LENGTH_INTERFACE + USB_DESCRIPTOR_LENGTH_ENDPOINT + USB_DESCRIPTOR_LENGTH_ENDPOINT + USB_IAD_DESC_SIZE + USB_DESCRIPTOR_LENGTH_INTERFACE + USB_DESCRIPTOR_LENGTH_ENDPOINT + USB_DESCRIPTOR_LENGTH_CDC_HEADER_FUNC + USB_DESCRIPTOR_LENGTH_CDC_CALL_MANAG + USB_DESCRIPTOR_LENGTH_CDC_ABSTRACT + USB_DESCRIPTOR_LENGTH_INTERFACE_4_CIC_VCOM_UNION_FUNC + USB_DESCRIPTOR_LENGTH_INTERFACE + USB_DESCRIPTOR_LENGTH_ENDPOINT + USB_DESCRIPTOR_LENGTH_ENDPOINT),
|
||||
USB_SHORT_GET_HIGH(USB_DESCRIPTOR_LENGTH_CONFIGURE + USB_IAD_DESC_SIZE + USB_DESCRIPTOR_LENGTH_INTERFACE + USB_DESCRIPTOR_LENGTH_ENDPOINT + USB_DESCRIPTOR_LENGTH_CDC_HEADER_FUNC + USB_DESCRIPTOR_LENGTH_CDC_CALL_MANAG + USB_DESCRIPTOR_LENGTH_CDC_ABSTRACT + USB_DESCRIPTOR_LENGTH_INTERFACE_0_CIC_VCOM_UNION_FUNC + USB_DESCRIPTOR_LENGTH_INTERFACE + USB_DESCRIPTOR_LENGTH_ENDPOINT + USB_DESCRIPTOR_LENGTH_ENDPOINT + USB_IAD_DESC_SIZE + USB_DESCRIPTOR_LENGTH_INTERFACE + USB_DESCRIPTOR_LENGTH_ENDPOINT + USB_DESCRIPTOR_LENGTH_CDC_HEADER_FUNC + USB_DESCRIPTOR_LENGTH_CDC_CALL_MANAG + USB_DESCRIPTOR_LENGTH_CDC_ABSTRACT + USB_DESCRIPTOR_LENGTH_INTERFACE_2_CIC_VCOM_UNION_FUNC + USB_DESCRIPTOR_LENGTH_INTERFACE + USB_DESCRIPTOR_LENGTH_ENDPOINT + USB_DESCRIPTOR_LENGTH_ENDPOINT + USB_IAD_DESC_SIZE + USB_DESCRIPTOR_LENGTH_INTERFACE + USB_DESCRIPTOR_LENGTH_ENDPOINT + USB_DESCRIPTOR_LENGTH_CDC_HEADER_FUNC + USB_DESCRIPTOR_LENGTH_CDC_CALL_MANAG + USB_DESCRIPTOR_LENGTH_CDC_ABSTRACT + USB_DESCRIPTOR_LENGTH_INTERFACE_4_CIC_VCOM_UNION_FUNC + USB_DESCRIPTOR_LENGTH_INTERFACE + USB_DESCRIPTOR_LENGTH_ENDPOINT + USB_DESCRIPTOR_LENGTH_ENDPOINT), /* Total length of data returned for this configuration. */
|
||||
USB_COMPOSITE_INTERFACE_COUNT, /* Number of interfaces supported by this configuration */
|
||||
USB_COMPOSITE_CONFIGURATION_INDEX, /* Value to use as an argument to the
|
||||
SetConfiguration() request to select this configuration */
|
||||
|
@ -296,6 +452,178 @@ uint8_t g_UsbDeviceConfigurationDescriptor[] = {
|
|||
USB_SHORT_GET_LOW(FS_INTERFACE_1_DIC_VCOM_SETTING_0_EP_1_BULK_OUT_PACKET_SIZE),
|
||||
USB_SHORT_GET_HIGH(FS_INTERFACE_1_DIC_VCOM_SETTING_0_EP_1_BULK_OUT_PACKET_SIZE),
|
||||
FS_INTERFACE_1_DIC_VCOM_SETTING_0_EP_1_BULK_OUT_INTERVAL, /* Interval for polling endpoint for data transfers. */
|
||||
USB_IAD_DESC_SIZE, /* Size of this descriptor in bytes */
|
||||
USB_DESCRIPTOR_TYPE_INTERFACE_ASSOCIATION, /* INTERFACE_ASSOCIATION Descriptor Type */
|
||||
USB_INTERFACE_2_CIC_VCOM_INDEX, /* The first interface number associated with this function */
|
||||
2U, /* The number of contiguous interfaces associated with this function */
|
||||
USB_INTERFACE_2_CIC_VCOM_CLASS, /* Class code (assigned by the USB-IF). */
|
||||
|
||||
USB_INTERFACE_2_CIC_VCOM_SUBCLASS, /* Subclass code (assigned by the USB-IF). */
|
||||
|
||||
USB_INTERFACE_2_CIC_VCOM_PROTOCOL, /* Protocol code (assigned by the USB). */
|
||||
2U, /* Function string descriptor index */
|
||||
|
||||
USB_DESCRIPTOR_LENGTH_INTERFACE, /* Size of this descriptor in bytes */
|
||||
USB_DESCRIPTOR_TYPE_INTERFACE, /* INTERFACE Descriptor Type */
|
||||
USB_INTERFACE_2_CIC_VCOM_INDEX, /* Number of this interface. */
|
||||
USB_INTERFACE_2_CIC_VCOM_SETTING_0_DEFAULT_INDEX, /* Value used to select this alternate setting
|
||||
for the interface identified in the prior field */
|
||||
USB_INTERFACE_2_CIC_VCOM_SETTING_0_DEFAULT_ENDPOINT_COUNT, /* Number of endpoints used by this
|
||||
interface setting (excluding endpoint zero). */
|
||||
USB_INTERFACE_2_CIC_VCOM_CLASS, /* Class code (assigned by the USB-IF). */
|
||||
USB_INTERFACE_2_CIC_VCOM_SUBCLASS, /* Subclass code (assigned by the USB-IF). */
|
||||
USB_INTERFACE_2_CIC_VCOM_PROTOCOL, /* Protocol code (assigned by the USB). */
|
||||
0U, /* Index of string descriptor describing this interface */
|
||||
|
||||
USB_DESCRIPTOR_LENGTH_CDC_HEADER_FUNC, /* Size of this descriptor in bytes */
|
||||
USB_DESCRIPTOR_TYPE_CDC_CS_INTERFACE, /* CS_INTERFACE Descriptor Type */
|
||||
USB_CDC_HEADER_FUNC_DESC,
|
||||
0x10U,
|
||||
0x01U, /* USB Class Definitions for Communications the Communication specification version 1.10 */
|
||||
|
||||
USB_DESCRIPTOR_LENGTH_CDC_CALL_MANAG, /* Size of this descriptor in bytes */
|
||||
USB_DESCRIPTOR_TYPE_CDC_CS_INTERFACE, /* CS_INTERFACE Descriptor Type */
|
||||
USB_CDC_CALL_MANAGEMENT_FUNC_DESC,
|
||||
0x01U, /*Bit 0: Whether device handle call management itself 1, Bit 1: Whether device can send/receive call
|
||||
management information over a Data Class Interface 0 */
|
||||
USB_INTERFACE_3_DIC_VCOM_INDEX, /* Indicates multiplexed commands are handled via data interface */
|
||||
|
||||
USB_DESCRIPTOR_LENGTH_CDC_ABSTRACT, /* Size of this descriptor in bytes */
|
||||
USB_DESCRIPTOR_TYPE_CDC_CS_INTERFACE, /* CS_INTERFACE Descriptor Type */
|
||||
USB_CDC_ABSTRACT_CONTROL_FUNC_DESC,
|
||||
0x06U, /* Bit 0: Whether device supports the request combination of Set_Comm_Feature, Clear_Comm_Feature, and
|
||||
Get_Comm_Feature 0, Bit 1: Whether device supports the request combination of Set_Line_Coding,
|
||||
Set_Control_Line_State, Get_Line_Coding, and the notification Serial_State 1, Bit 2: Whether device
|
||||
supports the request Send_Break, Bit 3: Whether device supports the notification Network_Connection */
|
||||
|
||||
USB_DESCRIPTOR_LENGTH_INTERFACE_2_CIC_VCOM_UNION_FUNC, /* Size of this descriptor in bytes */
|
||||
USB_DESCRIPTOR_TYPE_CDC_CS_INTERFACE, /* CS_INTERFACE Descriptor Type */
|
||||
USB_CDC_UNION_FUNC_DESC,
|
||||
USB_INTERFACE_2_CIC_VCOM_INDEX, /* The interface number of the Communications or Data Class interface */
|
||||
USB_INTERFACE_3_DIC_VCOM_INDEX, /* Interface number of subordinate interface in the Union */
|
||||
|
||||
USB_DESCRIPTOR_LENGTH_ENDPOINT, /* Size of this descriptor in bytes */
|
||||
USB_DESCRIPTOR_TYPE_ENDPOINT, /* ENDPOINT Descriptor Type */
|
||||
USB_INTERFACE_2_CIC_VCOM_SETTING_0_EP_3_INTERRUPT_IN | (USB_IN << USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_SHIFT),
|
||||
/* The number of the endpoint on the USB device described by this descriptor. */
|
||||
USB_ENDPOINT_INTERRUPT, /* This field describes the endpoint's attributes */
|
||||
USB_SHORT_GET_LOW(FS_INTERFACE_2_CIC_VCOM_SETTING_0_EP_3_INTERRUPT_IN_PACKET_SIZE),
|
||||
USB_SHORT_GET_HIGH(FS_INTERFACE_2_CIC_VCOM_SETTING_0_EP_3_INTERRUPT_IN_PACKET_SIZE),
|
||||
FS_INTERFACE_2_CIC_VCOM_SETTING_0_EP_3_INTERRUPT_IN_INTERVAL, /* Interval for polling endpoint for data transfers. */
|
||||
USB_DESCRIPTOR_LENGTH_INTERFACE, /* Size of this descriptor in bytes */
|
||||
USB_DESCRIPTOR_TYPE_INTERFACE, /* INTERFACE Descriptor Type */
|
||||
USB_INTERFACE_3_DIC_VCOM_INDEX, /* Number of this interface. */
|
||||
USB_INTERFACE_3_DIC_VCOM_SETTING_0_DEFAULT_INDEX, /* Value used to select this alternate setting
|
||||
for the interface identified in the prior field */
|
||||
USB_INTERFACE_3_DIC_VCOM_SETTING_0_DEFAULT_ENDPOINT_COUNT, /* Number of endpoints used by this
|
||||
interface setting (excluding endpoint zero). */
|
||||
USB_INTERFACE_3_DIC_VCOM_CLASS, /* Class code (assigned by the USB-IF). */
|
||||
USB_INTERFACE_3_DIC_VCOM_SUBCLASS, /* Subclass code (assigned by the USB-IF). */
|
||||
USB_INTERFACE_3_DIC_VCOM_PROTOCOL, /* Protocol code (assigned by the USB). */
|
||||
0U, /* Index of string descriptor describing this interface */
|
||||
|
||||
USB_DESCRIPTOR_LENGTH_ENDPOINT, /* Size of this descriptor in bytes */
|
||||
USB_DESCRIPTOR_TYPE_ENDPOINT, /* ENDPOINT Descriptor Type */
|
||||
USB_INTERFACE_3_DIC_VCOM_SETTING_0_EP_4_BULK_IN | (USB_IN << USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_SHIFT),
|
||||
/* The number of the endpoint on the USB device described by this descriptor. */
|
||||
USB_ENDPOINT_BULK, /* This field describes the endpoint's attributes */
|
||||
USB_SHORT_GET_LOW(FS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_4_BULK_IN_PACKET_SIZE),
|
||||
USB_SHORT_GET_HIGH(FS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_4_BULK_IN_PACKET_SIZE),
|
||||
FS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_4_BULK_IN_INTERVAL, /* Interval for polling endpoint for data transfers. */
|
||||
USB_DESCRIPTOR_LENGTH_ENDPOINT, /* Size of this descriptor in bytes */
|
||||
USB_DESCRIPTOR_TYPE_ENDPOINT, /* ENDPOINT Descriptor Type */
|
||||
USB_INTERFACE_3_DIC_VCOM_SETTING_0_EP_2_BULK_OUT | (USB_OUT << USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_SHIFT),
|
||||
/* The number of the endpoint on the USB device described by this descriptor. */
|
||||
USB_ENDPOINT_BULK, /* This field describes the endpoint's attributes */
|
||||
USB_SHORT_GET_LOW(FS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_2_BULK_OUT_PACKET_SIZE),
|
||||
USB_SHORT_GET_HIGH(FS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_2_BULK_OUT_PACKET_SIZE),
|
||||
FS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_2_BULK_OUT_INTERVAL, /* Interval for polling endpoint for data transfers. */
|
||||
USB_IAD_DESC_SIZE, /* Size of this descriptor in bytes */
|
||||
USB_DESCRIPTOR_TYPE_INTERFACE_ASSOCIATION, /* INTERFACE_ASSOCIATION Descriptor Type */
|
||||
USB_INTERFACE_4_CIC_VCOM_INDEX, /* The first interface number associated with this function */
|
||||
2U, /* The number of contiguous interfaces associated with this function */
|
||||
USB_INTERFACE_4_CIC_VCOM_CLASS, /* Class code (assigned by the USB-IF). */
|
||||
|
||||
USB_INTERFACE_4_CIC_VCOM_SUBCLASS, /* Subclass code (assigned by the USB-IF). */
|
||||
|
||||
USB_INTERFACE_4_CIC_VCOM_PROTOCOL, /* Protocol code (assigned by the USB). */
|
||||
2U, /* Function string descriptor index */
|
||||
|
||||
USB_DESCRIPTOR_LENGTH_INTERFACE, /* Size of this descriptor in bytes */
|
||||
USB_DESCRIPTOR_TYPE_INTERFACE, /* INTERFACE Descriptor Type */
|
||||
USB_INTERFACE_4_CIC_VCOM_INDEX, /* Number of this interface. */
|
||||
USB_INTERFACE_4_CIC_VCOM_SETTING_0_DEFAULT_INDEX, /* Value used to select this alternate setting
|
||||
for the interface identified in the prior field */
|
||||
USB_INTERFACE_4_CIC_VCOM_SETTING_0_DEFAULT_ENDPOINT_COUNT, /* Number of endpoints used by this
|
||||
interface setting (excluding endpoint zero). */
|
||||
USB_INTERFACE_4_CIC_VCOM_CLASS, /* Class code (assigned by the USB-IF). */
|
||||
USB_INTERFACE_4_CIC_VCOM_SUBCLASS, /* Subclass code (assigned by the USB-IF). */
|
||||
USB_INTERFACE_4_CIC_VCOM_PROTOCOL, /* Protocol code (assigned by the USB). */
|
||||
0U, /* Index of string descriptor describing this interface */
|
||||
|
||||
USB_DESCRIPTOR_LENGTH_CDC_HEADER_FUNC, /* Size of this descriptor in bytes */
|
||||
USB_DESCRIPTOR_TYPE_CDC_CS_INTERFACE, /* CS_INTERFACE Descriptor Type */
|
||||
USB_CDC_HEADER_FUNC_DESC,
|
||||
0x10U,
|
||||
0x01U, /* USB Class Definitions for Communications the Communication specification version 1.10 */
|
||||
|
||||
USB_DESCRIPTOR_LENGTH_CDC_CALL_MANAG, /* Size of this descriptor in bytes */
|
||||
USB_DESCRIPTOR_TYPE_CDC_CS_INTERFACE, /* CS_INTERFACE Descriptor Type */
|
||||
USB_CDC_CALL_MANAGEMENT_FUNC_DESC,
|
||||
0x01U, /*Bit 0: Whether device handle call management itself 1, Bit 1: Whether device can send/receive call
|
||||
management information over a Data Class Interface 0 */
|
||||
USB_INTERFACE_5_DIC_VCOM_INDEX, /* Indicates multiplexed commands are handled via data interface */
|
||||
|
||||
USB_DESCRIPTOR_LENGTH_CDC_ABSTRACT, /* Size of this descriptor in bytes */
|
||||
USB_DESCRIPTOR_TYPE_CDC_CS_INTERFACE, /* CS_INTERFACE Descriptor Type */
|
||||
USB_CDC_ABSTRACT_CONTROL_FUNC_DESC,
|
||||
0x06U, /* Bit 0: Whether device supports the request combination of Set_Comm_Feature, Clear_Comm_Feature, and
|
||||
Get_Comm_Feature 0, Bit 1: Whether device supports the request combination of Set_Line_Coding,
|
||||
Set_Control_Line_State, Get_Line_Coding, and the notification Serial_State 1, Bit 2: Whether device
|
||||
supports the request Send_Break, Bit 3: Whether device supports the notification Network_Connection */
|
||||
|
||||
USB_DESCRIPTOR_LENGTH_INTERFACE_4_CIC_VCOM_UNION_FUNC, /* Size of this descriptor in bytes */
|
||||
USB_DESCRIPTOR_TYPE_CDC_CS_INTERFACE, /* CS_INTERFACE Descriptor Type */
|
||||
USB_CDC_UNION_FUNC_DESC,
|
||||
USB_INTERFACE_4_CIC_VCOM_INDEX, /* The interface number of the Communications or Data Class interface */
|
||||
USB_INTERFACE_5_DIC_VCOM_INDEX, /* Interface number of subordinate interface in the Union */
|
||||
|
||||
USB_DESCRIPTOR_LENGTH_ENDPOINT, /* Size of this descriptor in bytes */
|
||||
USB_DESCRIPTOR_TYPE_ENDPOINT, /* ENDPOINT Descriptor Type */
|
||||
USB_INTERFACE_4_CIC_VCOM_SETTING_0_EP_5_INTERRUPT_IN | (USB_IN << USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_SHIFT),
|
||||
/* The number of the endpoint on the USB device described by this descriptor. */
|
||||
USB_ENDPOINT_INTERRUPT, /* This field describes the endpoint's attributes */
|
||||
USB_SHORT_GET_LOW(FS_INTERFACE_4_CIC_VCOM_SETTING_0_EP_5_INTERRUPT_IN_PACKET_SIZE),
|
||||
USB_SHORT_GET_HIGH(FS_INTERFACE_4_CIC_VCOM_SETTING_0_EP_5_INTERRUPT_IN_PACKET_SIZE),
|
||||
FS_INTERFACE_4_CIC_VCOM_SETTING_0_EP_5_INTERRUPT_IN_INTERVAL, /* Interval for polling endpoint for data transfers. */
|
||||
USB_DESCRIPTOR_LENGTH_INTERFACE, /* Size of this descriptor in bytes */
|
||||
USB_DESCRIPTOR_TYPE_INTERFACE, /* INTERFACE Descriptor Type */
|
||||
USB_INTERFACE_5_DIC_VCOM_INDEX, /* Number of this interface. */
|
||||
USB_INTERFACE_5_DIC_VCOM_SETTING_0_DEFAULT_INDEX, /* Value used to select this alternate setting
|
||||
for the interface identified in the prior field */
|
||||
USB_INTERFACE_5_DIC_VCOM_SETTING_0_DEFAULT_ENDPOINT_COUNT, /* Number of endpoints used by this
|
||||
interface setting (excluding endpoint zero). */
|
||||
USB_INTERFACE_5_DIC_VCOM_CLASS, /* Class code (assigned by the USB-IF). */
|
||||
USB_INTERFACE_5_DIC_VCOM_SUBCLASS, /* Subclass code (assigned by the USB-IF). */
|
||||
USB_INTERFACE_5_DIC_VCOM_PROTOCOL, /* Protocol code (assigned by the USB). */
|
||||
0U, /* Index of string descriptor describing this interface */
|
||||
|
||||
USB_DESCRIPTOR_LENGTH_ENDPOINT, /* Size of this descriptor in bytes */
|
||||
USB_DESCRIPTOR_TYPE_ENDPOINT, /* ENDPOINT Descriptor Type */
|
||||
USB_INTERFACE_5_DIC_VCOM_SETTING_0_EP_6_BULK_IN | (USB_IN << USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_SHIFT),
|
||||
/* The number of the endpoint on the USB device described by this descriptor. */
|
||||
USB_ENDPOINT_BULK, /* This field describes the endpoint's attributes */
|
||||
USB_SHORT_GET_LOW(FS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_6_BULK_IN_PACKET_SIZE),
|
||||
USB_SHORT_GET_HIGH(FS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_6_BULK_IN_PACKET_SIZE),
|
||||
FS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_6_BULK_IN_INTERVAL, /* Interval for polling endpoint for data transfers. */
|
||||
USB_DESCRIPTOR_LENGTH_ENDPOINT, /* Size of this descriptor in bytes */
|
||||
USB_DESCRIPTOR_TYPE_ENDPOINT, /* ENDPOINT Descriptor Type */
|
||||
USB_INTERFACE_5_DIC_VCOM_SETTING_0_EP_3_BULK_OUT | (USB_OUT << USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_SHIFT),
|
||||
/* The number of the endpoint on the USB device described by this descriptor. */
|
||||
USB_ENDPOINT_BULK, /* This field describes the endpoint's attributes */
|
||||
USB_SHORT_GET_LOW(FS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_3_BULK_OUT_PACKET_SIZE),
|
||||
USB_SHORT_GET_HIGH(FS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_3_BULK_OUT_PACKET_SIZE),
|
||||
FS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_3_BULK_OUT_INTERVAL, /* Interval for polling endpoint for data transfers. */
|
||||
};
|
||||
|
||||
USB_DMA_INIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE)
|
||||
|
@ -308,7 +636,7 @@ uint8_t g_UsbDeviceString0[] = {
|
|||
|
||||
USB_DMA_INIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE)
|
||||
uint8_t g_UsbDeviceString1[] = {
|
||||
2U + 2U * 3U,
|
||||
2U + 2U * 18U,
|
||||
USB_DESCRIPTOR_TYPE_STRING,
|
||||
'N',
|
||||
0x00U,
|
||||
|
@ -316,14 +644,66 @@ uint8_t g_UsbDeviceString1[] = {
|
|||
0x00U,
|
||||
'P',
|
||||
0x00U,
|
||||
' ',
|
||||
0x00U,
|
||||
'S',
|
||||
0x00U,
|
||||
'e',
|
||||
0x00U,
|
||||
'm',
|
||||
0x00U,
|
||||
'i',
|
||||
0x00U,
|
||||
'c',
|
||||
0x00U,
|
||||
'o',
|
||||
0x00U,
|
||||
'n',
|
||||
0x00U,
|
||||
'd',
|
||||
0x00U,
|
||||
'u',
|
||||
0x00U,
|
||||
'c',
|
||||
0x00U,
|
||||
't',
|
||||
0x00U,
|
||||
'o',
|
||||
0x00U,
|
||||
'r',
|
||||
0x00U,
|
||||
's',
|
||||
0x00U,
|
||||
};
|
||||
|
||||
USB_DMA_INIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE)
|
||||
uint8_t g_UsbDeviceString2[] = {
|
||||
2U + 2U * 4U,
|
||||
2U + 2U * 15U,
|
||||
USB_DESCRIPTOR_TYPE_STRING,
|
||||
'C',
|
||||
0x00U,
|
||||
'D',
|
||||
0x00U,
|
||||
'C',
|
||||
0x00U,
|
||||
' ',
|
||||
0x00U,
|
||||
'V',
|
||||
0x00U,
|
||||
'i',
|
||||
0x00U,
|
||||
'r',
|
||||
0x00U,
|
||||
't',
|
||||
0x00U,
|
||||
'u',
|
||||
0x00U,
|
||||
'a',
|
||||
0x00U,
|
||||
'l',
|
||||
0x00U,
|
||||
' ',
|
||||
0x00U,
|
||||
'C',
|
||||
0x00U,
|
||||
'O',
|
||||
|
@ -451,6 +831,30 @@ static usb_endpoint_setting_t getEndpointSetting (uint8_t speed, uint8_t alterna
|
|||
setting.interval = HS_INTERFACE_1_DIC_VCOM_SETTING_0_EP_1_BULK_OUT_INTERVAL;
|
||||
setting.size = HS_INTERFACE_1_DIC_VCOM_SETTING_0_EP_1_BULK_OUT_PACKET_SIZE;
|
||||
break;
|
||||
case USB_INTERFACE_2_CIC_VCOM_SETTING_0_EP_3_INTERRUPT_IN | USB_INTERFACE_2_CIC_VCOM_SETTING_0_EP_3_INTERRUPT_IN_DIRECTION:
|
||||
setting.interval = HS_INTERFACE_2_CIC_VCOM_SETTING_0_EP_3_INTERRUPT_IN_INTERVAL;
|
||||
setting.size = HS_INTERFACE_2_CIC_VCOM_SETTING_0_EP_3_INTERRUPT_IN_PACKET_SIZE;
|
||||
break;
|
||||
case USB_INTERFACE_3_DIC_VCOM_SETTING_0_EP_4_BULK_IN | USB_INTERFACE_3_DIC_VCOM_SETTING_0_EP_4_BULK_IN_DIRECTION:
|
||||
setting.interval = HS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_4_BULK_IN_INTERVAL;
|
||||
setting.size = HS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_4_BULK_IN_PACKET_SIZE;
|
||||
break;
|
||||
case USB_INTERFACE_3_DIC_VCOM_SETTING_0_EP_2_BULK_OUT | USB_INTERFACE_3_DIC_VCOM_SETTING_0_EP_2_BULK_OUT_DIRECTION:
|
||||
setting.interval = HS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_2_BULK_OUT_INTERVAL;
|
||||
setting.size = HS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_2_BULK_OUT_PACKET_SIZE;
|
||||
break;
|
||||
case USB_INTERFACE_4_CIC_VCOM_SETTING_0_EP_5_INTERRUPT_IN | USB_INTERFACE_4_CIC_VCOM_SETTING_0_EP_5_INTERRUPT_IN_DIRECTION:
|
||||
setting.interval = HS_INTERFACE_4_CIC_VCOM_SETTING_0_EP_5_INTERRUPT_IN_INTERVAL;
|
||||
setting.size = HS_INTERFACE_4_CIC_VCOM_SETTING_0_EP_5_INTERRUPT_IN_PACKET_SIZE;
|
||||
break;
|
||||
case USB_INTERFACE_5_DIC_VCOM_SETTING_0_EP_6_BULK_IN | USB_INTERFACE_5_DIC_VCOM_SETTING_0_EP_6_BULK_IN_DIRECTION:
|
||||
setting.interval = HS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_6_BULK_IN_INTERVAL;
|
||||
setting.size = HS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_6_BULK_IN_PACKET_SIZE;
|
||||
break;
|
||||
case USB_INTERFACE_5_DIC_VCOM_SETTING_0_EP_3_BULK_OUT | USB_INTERFACE_5_DIC_VCOM_SETTING_0_EP_3_BULK_OUT_DIRECTION:
|
||||
setting.interval = HS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_3_BULK_OUT_INTERVAL;
|
||||
setting.size = HS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_3_BULK_OUT_PACKET_SIZE;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -474,6 +878,30 @@ static usb_endpoint_setting_t getEndpointSetting (uint8_t speed, uint8_t alterna
|
|||
setting.interval = FS_INTERFACE_1_DIC_VCOM_SETTING_0_EP_1_BULK_OUT_INTERVAL;
|
||||
setting.size = FS_INTERFACE_1_DIC_VCOM_SETTING_0_EP_1_BULK_OUT_PACKET_SIZE;
|
||||
break;
|
||||
case USB_INTERFACE_2_CIC_VCOM_SETTING_0_EP_3_INTERRUPT_IN | USB_INTERFACE_2_CIC_VCOM_SETTING_0_EP_3_INTERRUPT_IN_DIRECTION:
|
||||
setting.interval = FS_INTERFACE_2_CIC_VCOM_SETTING_0_EP_3_INTERRUPT_IN_INTERVAL;
|
||||
setting.size = FS_INTERFACE_2_CIC_VCOM_SETTING_0_EP_3_INTERRUPT_IN_PACKET_SIZE;
|
||||
break;
|
||||
case USB_INTERFACE_3_DIC_VCOM_SETTING_0_EP_4_BULK_IN | USB_INTERFACE_3_DIC_VCOM_SETTING_0_EP_4_BULK_IN_DIRECTION:
|
||||
setting.interval = FS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_4_BULK_IN_INTERVAL;
|
||||
setting.size = FS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_4_BULK_IN_PACKET_SIZE;
|
||||
break;
|
||||
case USB_INTERFACE_3_DIC_VCOM_SETTING_0_EP_2_BULK_OUT | USB_INTERFACE_3_DIC_VCOM_SETTING_0_EP_2_BULK_OUT_DIRECTION:
|
||||
setting.interval = FS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_2_BULK_OUT_INTERVAL;
|
||||
setting.size = FS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_2_BULK_OUT_PACKET_SIZE;
|
||||
break;
|
||||
case USB_INTERFACE_4_CIC_VCOM_SETTING_0_EP_5_INTERRUPT_IN | USB_INTERFACE_4_CIC_VCOM_SETTING_0_EP_5_INTERRUPT_IN_DIRECTION:
|
||||
setting.interval = FS_INTERFACE_4_CIC_VCOM_SETTING_0_EP_5_INTERRUPT_IN_INTERVAL;
|
||||
setting.size = FS_INTERFACE_4_CIC_VCOM_SETTING_0_EP_5_INTERRUPT_IN_PACKET_SIZE;
|
||||
break;
|
||||
case USB_INTERFACE_5_DIC_VCOM_SETTING_0_EP_6_BULK_IN | USB_INTERFACE_5_DIC_VCOM_SETTING_0_EP_6_BULK_IN_DIRECTION:
|
||||
setting.interval = FS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_6_BULK_IN_INTERVAL;
|
||||
setting.size = FS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_6_BULK_IN_PACKET_SIZE;
|
||||
break;
|
||||
case USB_INTERFACE_5_DIC_VCOM_SETTING_0_EP_3_BULK_OUT | USB_INTERFACE_5_DIC_VCOM_SETTING_0_EP_3_BULK_OUT_DIRECTION:
|
||||
setting.interval = FS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_3_BULK_OUT_INTERVAL;
|
||||
setting.size = FS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_3_BULK_OUT_PACKET_SIZE;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -522,12 +950,24 @@ usb_status_t USB_DeviceSetSpeed(usb_device_handle handle, uint8_t speed)
|
|||
g_UsbDeviceInterface0CicVcomSetting0DefaultEndpoints[0].maxPacketSize = HS_INTERFACE_0_CIC_VCOM_SETTING_0_EP_1_INTERRUPT_IN_PACKET_SIZE;
|
||||
g_UsbDeviceInterface1DicVcomSetting0DefaultEndpoints[0].maxPacketSize = HS_INTERFACE_1_DIC_VCOM_SETTING_0_EP_2_BULK_IN_PACKET_SIZE;
|
||||
g_UsbDeviceInterface1DicVcomSetting0DefaultEndpoints[1].maxPacketSize = HS_INTERFACE_1_DIC_VCOM_SETTING_0_EP_1_BULK_OUT_PACKET_SIZE;
|
||||
g_UsbDeviceInterface2CicVcomSetting0DefaultEndpoints[0].maxPacketSize = HS_INTERFACE_2_CIC_VCOM_SETTING_0_EP_3_INTERRUPT_IN_PACKET_SIZE;
|
||||
g_UsbDeviceInterface3DicVcomSetting0DefaultEndpoints[0].maxPacketSize = HS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_4_BULK_IN_PACKET_SIZE;
|
||||
g_UsbDeviceInterface3DicVcomSetting0DefaultEndpoints[1].maxPacketSize = HS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_2_BULK_OUT_PACKET_SIZE;
|
||||
g_UsbDeviceInterface4CicVcomSetting0DefaultEndpoints[0].maxPacketSize = HS_INTERFACE_4_CIC_VCOM_SETTING_0_EP_5_INTERRUPT_IN_PACKET_SIZE;
|
||||
g_UsbDeviceInterface5DicVcomSetting0DefaultEndpoints[0].maxPacketSize = HS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_6_BULK_IN_PACKET_SIZE;
|
||||
g_UsbDeviceInterface5DicVcomSetting0DefaultEndpoints[1].maxPacketSize = HS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_3_BULK_OUT_PACKET_SIZE;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_UsbDeviceInterface0CicVcomSetting0DefaultEndpoints[0].maxPacketSize = FS_INTERFACE_0_CIC_VCOM_SETTING_0_EP_1_INTERRUPT_IN_PACKET_SIZE;
|
||||
g_UsbDeviceInterface1DicVcomSetting0DefaultEndpoints[0].maxPacketSize = FS_INTERFACE_1_DIC_VCOM_SETTING_0_EP_2_BULK_IN_PACKET_SIZE;
|
||||
g_UsbDeviceInterface1DicVcomSetting0DefaultEndpoints[1].maxPacketSize = FS_INTERFACE_1_DIC_VCOM_SETTING_0_EP_1_BULK_OUT_PACKET_SIZE;
|
||||
g_UsbDeviceInterface2CicVcomSetting0DefaultEndpoints[0].maxPacketSize = FS_INTERFACE_2_CIC_VCOM_SETTING_0_EP_3_INTERRUPT_IN_PACKET_SIZE;
|
||||
g_UsbDeviceInterface3DicVcomSetting0DefaultEndpoints[0].maxPacketSize = FS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_4_BULK_IN_PACKET_SIZE;
|
||||
g_UsbDeviceInterface3DicVcomSetting0DefaultEndpoints[1].maxPacketSize = FS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_2_BULK_OUT_PACKET_SIZE;
|
||||
g_UsbDeviceInterface4CicVcomSetting0DefaultEndpoints[0].maxPacketSize = FS_INTERFACE_4_CIC_VCOM_SETTING_0_EP_5_INTERRUPT_IN_PACKET_SIZE;
|
||||
g_UsbDeviceInterface5DicVcomSetting0DefaultEndpoints[0].maxPacketSize = FS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_6_BULK_IN_PACKET_SIZE;
|
||||
g_UsbDeviceInterface5DicVcomSetting0DefaultEndpoints[1].maxPacketSize = FS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_3_BULK_OUT_PACKET_SIZE;
|
||||
}
|
||||
|
||||
return kStatus_USB_Success;
|
||||
|
|
|
@ -115,6 +115,8 @@
|
|||
/* Length of Abstract Control Management Functional Descriptor in bytes */
|
||||
#define USB_DESCRIPTOR_LENGTH_CDC_ABSTRACT (4U)
|
||||
#define USB_DESCRIPTOR_LENGTH_INTERFACE_0_CIC_VCOM_UNION_FUNC (5U)
|
||||
#define USB_DESCRIPTOR_LENGTH_INTERFACE_2_CIC_VCOM_UNION_FUNC (5U)
|
||||
#define USB_DESCRIPTOR_LENGTH_INTERFACE_4_CIC_VCOM_UNION_FUNC (5U)
|
||||
|
||||
#define USB_DESCRIPTOR_TYPE_CDC_CS_INTERFACE (0x24U)
|
||||
#define USB_DESCRIPTOR_TYPE_CDC_CS_ENDPOINT (0x25U)
|
||||
|
@ -155,6 +157,74 @@
|
|||
#define FS_INTERFACE_1_DIC_VCOM_SETTING_0_EP_1_BULK_OUT_INTERVAL (0U)
|
||||
#define HS_INTERFACE_1_DIC_VCOM_SETTING_0_EP_1_BULK_OUT_INTERVAL (0U)
|
||||
|
||||
#define USB_INTERFACE_2_CIC_VCOM_CLASS (0x02U)
|
||||
#define USB_INTERFACE_2_CIC_VCOM_SUBCLASS (0x02U)
|
||||
#define USB_INTERFACE_2_CIC_VCOM_PROTOCOL (0x00U)
|
||||
#define USB_INTERFACE_2_CIC_VCOM_INTERFACE_COUNT (2U)
|
||||
#define USB_INTERFACE_2_CIC_VCOM_INDEX (2U)
|
||||
#define USB_INTERFACE_2_CIC_VCOM_SETTING_0_DEFAULT_ENDPOINT_COUNT (1U)
|
||||
#define USB_INTERFACE_2_CIC_VCOM_SETTING_0_DEFAULT_INDEX USB_ALTERNATE_SETTING_0
|
||||
#define USB_INTERFACE_2_CIC_VCOM_SETTING_0_EP_3_INTERRUPT_IN (3U)
|
||||
#define USB_INTERFACE_2_CIC_VCOM_SETTING_0_EP_3_INTERRUPT_IN_DIRECTION USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_IN
|
||||
#define FS_INTERFACE_2_CIC_VCOM_SETTING_0_EP_3_INTERRUPT_IN_PACKET_SIZE (16U)
|
||||
#define HS_INTERFACE_2_CIC_VCOM_SETTING_0_EP_3_INTERRUPT_IN_PACKET_SIZE (16U)
|
||||
#define FS_INTERFACE_2_CIC_VCOM_SETTING_0_EP_3_INTERRUPT_IN_INTERVAL (8U)
|
||||
#define HS_INTERFACE_2_CIC_VCOM_SETTING_0_EP_3_INTERRUPT_IN_INTERVAL (7U)
|
||||
|
||||
#define USB_INTERFACE_3_DIC_VCOM_CLASS (0x0AU)
|
||||
#define USB_INTERFACE_3_DIC_VCOM_SUBCLASS (0x00U)
|
||||
#define USB_INTERFACE_3_DIC_VCOM_PROTOCOL (0x00U)
|
||||
#define USB_INTERFACE_3_DIC_VCOM_INTERFACE_COUNT (1U)
|
||||
#define USB_INTERFACE_3_DIC_VCOM_INDEX (3U)
|
||||
#define USB_INTERFACE_3_DIC_VCOM_SETTING_0_DEFAULT_ENDPOINT_COUNT (2U)
|
||||
#define USB_INTERFACE_3_DIC_VCOM_SETTING_0_DEFAULT_INDEX USB_ALTERNATE_SETTING_0
|
||||
#define USB_INTERFACE_3_DIC_VCOM_SETTING_0_EP_4_BULK_IN (4U)
|
||||
#define USB_INTERFACE_3_DIC_VCOM_SETTING_0_EP_4_BULK_IN_DIRECTION USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_IN
|
||||
#define FS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_4_BULK_IN_PACKET_SIZE (64U)
|
||||
#define HS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_4_BULK_IN_PACKET_SIZE (512U)
|
||||
#define FS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_4_BULK_IN_INTERVAL (0U)
|
||||
#define HS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_4_BULK_IN_INTERVAL (0U)
|
||||
#define USB_INTERFACE_3_DIC_VCOM_SETTING_0_EP_2_BULK_OUT (2U)
|
||||
#define USB_INTERFACE_3_DIC_VCOM_SETTING_0_EP_2_BULK_OUT_DIRECTION USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_OUT
|
||||
#define FS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_2_BULK_OUT_PACKET_SIZE (64U)
|
||||
#define HS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_2_BULK_OUT_PACKET_SIZE (512U)
|
||||
#define FS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_2_BULK_OUT_INTERVAL (0U)
|
||||
#define HS_INTERFACE_3_DIC_VCOM_SETTING_0_EP_2_BULK_OUT_INTERVAL (0U)
|
||||
|
||||
#define USB_INTERFACE_4_CIC_VCOM_CLASS (0x02U)
|
||||
#define USB_INTERFACE_4_CIC_VCOM_SUBCLASS (0x02U)
|
||||
#define USB_INTERFACE_4_CIC_VCOM_PROTOCOL (0x00U)
|
||||
#define USB_INTERFACE_4_CIC_VCOM_INTERFACE_COUNT (2U)
|
||||
#define USB_INTERFACE_4_CIC_VCOM_INDEX (4U)
|
||||
#define USB_INTERFACE_4_CIC_VCOM_SETTING_0_DEFAULT_ENDPOINT_COUNT (1U)
|
||||
#define USB_INTERFACE_4_CIC_VCOM_SETTING_0_DEFAULT_INDEX USB_ALTERNATE_SETTING_0
|
||||
#define USB_INTERFACE_4_CIC_VCOM_SETTING_0_EP_5_INTERRUPT_IN (5U)
|
||||
#define USB_INTERFACE_4_CIC_VCOM_SETTING_0_EP_5_INTERRUPT_IN_DIRECTION USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_IN
|
||||
#define FS_INTERFACE_4_CIC_VCOM_SETTING_0_EP_5_INTERRUPT_IN_PACKET_SIZE (16U)
|
||||
#define HS_INTERFACE_4_CIC_VCOM_SETTING_0_EP_5_INTERRUPT_IN_PACKET_SIZE (16U)
|
||||
#define FS_INTERFACE_4_CIC_VCOM_SETTING_0_EP_5_INTERRUPT_IN_INTERVAL (8U)
|
||||
#define HS_INTERFACE_4_CIC_VCOM_SETTING_0_EP_5_INTERRUPT_IN_INTERVAL (7U)
|
||||
|
||||
#define USB_INTERFACE_5_DIC_VCOM_CLASS (0x0AU)
|
||||
#define USB_INTERFACE_5_DIC_VCOM_SUBCLASS (0x00U)
|
||||
#define USB_INTERFACE_5_DIC_VCOM_PROTOCOL (0x00U)
|
||||
#define USB_INTERFACE_5_DIC_VCOM_INTERFACE_COUNT (1U)
|
||||
#define USB_INTERFACE_5_DIC_VCOM_INDEX (5U)
|
||||
#define USB_INTERFACE_5_DIC_VCOM_SETTING_0_DEFAULT_ENDPOINT_COUNT (2U)
|
||||
#define USB_INTERFACE_5_DIC_VCOM_SETTING_0_DEFAULT_INDEX USB_ALTERNATE_SETTING_0
|
||||
#define USB_INTERFACE_5_DIC_VCOM_SETTING_0_EP_6_BULK_IN (6U)
|
||||
#define USB_INTERFACE_5_DIC_VCOM_SETTING_0_EP_6_BULK_IN_DIRECTION USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_IN
|
||||
#define FS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_6_BULK_IN_PACKET_SIZE (64U)
|
||||
#define HS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_6_BULK_IN_PACKET_SIZE (512U)
|
||||
#define FS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_6_BULK_IN_INTERVAL (0U)
|
||||
#define HS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_6_BULK_IN_INTERVAL (0U)
|
||||
#define USB_INTERFACE_5_DIC_VCOM_SETTING_0_EP_3_BULK_OUT (3U)
|
||||
#define USB_INTERFACE_5_DIC_VCOM_SETTING_0_EP_3_BULK_OUT_DIRECTION USB_DESCRIPTOR_ENDPOINT_ADDRESS_DIRECTION_OUT
|
||||
#define FS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_3_BULK_OUT_PACKET_SIZE (64U)
|
||||
#define HS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_3_BULK_OUT_PACKET_SIZE (512U)
|
||||
#define FS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_3_BULK_OUT_INTERVAL (0U)
|
||||
#define HS_INTERFACE_5_DIC_VCOM_SETTING_0_EP_3_BULK_OUT_INTERVAL (0U)
|
||||
|
||||
#define USB_DESCRIPTOR_LENGTH_CONFIGURATION_ALL (sizeof(g_UsbDeviceConfigurationDescriptor))
|
||||
|
||||
|
||||
|
@ -163,7 +233,7 @@
|
|||
#define USB_DESCRIPTOR_LENGTH_STRING1 (sizeof(g_UsbDeviceString1))
|
||||
#define USB_DESCRIPTOR_LENGTH_STRING2 (sizeof(g_UsbDeviceString2))
|
||||
|
||||
#define USB_COMPOSITE_INTERFACE_COUNT (USB_INTERFACE_0_CIC_VCOM_INTERFACE_COUNT)
|
||||
#define USB_COMPOSITE_INTERFACE_COUNT (USB_INTERFACE_0_CIC_VCOM_INTERFACE_COUNT + USB_INTERFACE_2_CIC_VCOM_INTERFACE_COUNT + USB_INTERFACE_4_CIC_VCOM_INTERFACE_COUNT)
|
||||
|
||||
/*******************************************************************************
|
||||
* API
|
||||
|
|
|
@ -0,0 +1,540 @@
|
|||
/*
|
||||
* Copyright 2015-2016, Freescale Semiconductor, Inc.
|
||||
* Copyright 2016-2021 NXP
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this list
|
||||
* of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice, this
|
||||
* list of conditions and the following disclaimer in the documentation and/or
|
||||
* other materials provided with the distribution.
|
||||
*
|
||||
* 3. Neither the name of copyright holder nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from this
|
||||
* software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "usb_device_config.h"
|
||||
#include "usb.h"
|
||||
#include "usb_device.h"
|
||||
|
||||
#include "usb_device_class.h"
|
||||
#include "usb_device_cdc_acm.h"
|
||||
|
||||
#include "usb_device_ch9.h"
|
||||
#include "usb_device_descriptor.h"
|
||||
|
||||
#include "usb_device_composite.h"
|
||||
|
||||
/*******************************************************************************
|
||||
* Definitions
|
||||
******************************************************************************/
|
||||
|
||||
/* Outgoing notification buffer number */
|
||||
#define USB_CIC_VCOM_IN_ENDPOINT (3)
|
||||
/* Outgoing data buffer number */
|
||||
#define USB_DIC_VCOM_IN_ENDPOINT (4)
|
||||
/* Outgoing data buffer index */
|
||||
#define USB_DIC_VCOM_IN_ENDPOINT_INDEX (0)
|
||||
/* Incoming data buffer number */
|
||||
#define USB_DIC_VCOM_OUT_ENDPOINT (2)
|
||||
/* Incoming data buffer index */
|
||||
#define USB_DIC_VCOM_OUT_ENDPOINT_INDEX (1)
|
||||
/* Data packet size for High Speed */
|
||||
#define HS_DIC_VCOM_OUT_PACKET_SIZE (512)
|
||||
/* Data packet size for Full Speed */
|
||||
#define FS_DIC_VCOM_OUT_PACKET_SIZE (64)
|
||||
|
||||
#if defined(USB_DEVICE_CONFIG_EHCI) && (USB_DEVICE_CONFIG_EHCI > 0)
|
||||
#define DATA_BUFF_SIZE HS_DIC_VCOM_OUT_PACKET_SIZE
|
||||
|
||||
#endif
|
||||
#if defined(USB_DEVICE_CONFIG_KHCI) && (USB_DEVICE_CONFIG_KHCI > 0)
|
||||
#define DATA_BUFF_SIZE FS_DIC_VCOM_OUT_PACKET_SIZE
|
||||
|
||||
#endif
|
||||
#if defined(USB_DEVICE_CONFIG_LPCIP3511FS) && (USB_DEVICE_CONFIG_LPCIP3511FS > 0U)
|
||||
#define DATA_BUFF_SIZE FS_DIC_VCOM_OUT_PACKET_SIZE
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(USB_DEVICE_CONFIG_LPCIP3511HS) && (USB_DEVICE_CONFIG_LPCIP3511HS > 0U)
|
||||
#define DATA_BUFF_SIZE HS_DIC_VCOM_OUT_PACKET_SIZE
|
||||
#endif
|
||||
|
||||
/* Currently configured line coding */
|
||||
#define LINE_CODING_SIZE (0x07U)
|
||||
#define LINE_CODING_DTERATE (115200U)
|
||||
#define LINE_CODING_CHARFORMAT (0x00U)
|
||||
#define LINE_CODING_PARITYTYPE (0x00U)
|
||||
#define LINE_CODING_DATABITS (0x08U)
|
||||
|
||||
/* Communications feature */
|
||||
#define COMM_FEATURE_DATA_SIZE (0x02U)
|
||||
#define STATUS_ABSTRACT_STATE (0x0000U)
|
||||
#define COUNTRY_SETTING (0x0000U)
|
||||
|
||||
/* Notification of serial state */
|
||||
#define NOTIF_PACKET_SIZE (0x08U)
|
||||
#define UART_BITMAP_SIZE (0x02U)
|
||||
#define NOTIF_REQUEST_TYPE (0xA1U)
|
||||
|
||||
/* Define the types for application */
|
||||
typedef struct _usb_cdc_vcom_struct
|
||||
{
|
||||
class_handle_t cdcAcmHandle; /* USB CDC ACM class handle. */
|
||||
volatile uint8_t startTransactions; /* A flag to indicate whether a CDC device is ready to transmit and receive data. */
|
||||
} usb_cdc_vcom_struct_t;
|
||||
|
||||
/* Define the information relates to abstract control model */
|
||||
typedef struct _usb_cdc_acm_info
|
||||
{
|
||||
uint8_t serialStateBuf[NOTIF_PACKET_SIZE + UART_BITMAP_SIZE]; /* Serial state buffer of the CDC device to notify the
|
||||
serial state to host. */
|
||||
bool dtePresent; /* A flag to indicate whether DTE is present. */
|
||||
uint16_t breakDuration; /* Length of time in milliseconds of the break signal */
|
||||
uint8_t dteStatus; /* Status of data terminal equipment */
|
||||
uint8_t currentInterface; /* Current interface index. */
|
||||
uint16_t uartState; /* UART state of the CDC device. */
|
||||
} usb_cdc_acm_info_t;
|
||||
|
||||
/*******************************************************************************
|
||||
* Prototypes
|
||||
******************************************************************************/
|
||||
|
||||
usb_status_t USB_DeviceInterface2CicVcomCallback(class_handle_t handle, uint32_t event, void *param);
|
||||
|
||||
usb_status_t USB_DeviceInterface2CicVcomSetConfiguration(class_handle_t handle, uint8_t configuration_idx);
|
||||
|
||||
usb_status_t USB_DeviceInterface2CicVcomSetInterface(class_handle_t handle, uint8_t alternateSetting);
|
||||
|
||||
usb_status_t USB_DeviceInterface3DicVcomSetInterface(class_handle_t handle, uint8_t alternateSetting);
|
||||
|
||||
usb_status_t USB_DeviceInterface2CicVcomInit(usb_device_composite_struct_t *deviceComposite);
|
||||
|
||||
/*******************************************************************************
|
||||
* Variables
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
extern usb_device_endpoint_struct_t g_UsbDeviceInterface3DicVcomSetting0DefaultEndpoints[];
|
||||
|
||||
/* Line coding of cdc device */
|
||||
USB_DMA_INIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE) static uint8_t s_lineCoding[LINE_CODING_SIZE] = {
|
||||
/* E.g. 0x00,0xC2,0x01,0x00 : 0x0001C200 is 115200 bits per second */
|
||||
(LINE_CODING_DTERATE >> 0U) & 0x000000FFU,
|
||||
(LINE_CODING_DTERATE >> 8U) & 0x000000FFU,
|
||||
(LINE_CODING_DTERATE >> 16U) & 0x000000FFU,
|
||||
(LINE_CODING_DTERATE >> 24U) & 0x000000FFU,
|
||||
LINE_CODING_CHARFORMAT,
|
||||
LINE_CODING_PARITYTYPE,
|
||||
LINE_CODING_DATABITS};
|
||||
|
||||
/* Abstract state of cdc device */
|
||||
USB_DMA_INIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE) static uint8_t s_abstractState[COMM_FEATURE_DATA_SIZE] = {(STATUS_ABSTRACT_STATE >> 0U) & 0x00FFU,
|
||||
(STATUS_ABSTRACT_STATE >> 8U) & 0x00FFU};
|
||||
|
||||
/* Country code of cdc device */
|
||||
USB_DMA_INIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE) static uint8_t s_countryCode[COMM_FEATURE_DATA_SIZE] = {(COUNTRY_SETTING >> 0U) & 0x00FFU,
|
||||
(COUNTRY_SETTING >> 8U) & 0x00FFU};
|
||||
|
||||
/* CDC ACM information */
|
||||
USB_DMA_NONINIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE) static usb_cdc_acm_info_t s_usbCdcAcmInfo;
|
||||
/* Data buffer for receiving and sending*/
|
||||
USB_DMA_NONINIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE) static uint8_t s_currRecvBuf[DATA_BUFF_SIZE];
|
||||
USB_DMA_NONINIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE) static uint8_t s_currSendBuf[DATA_BUFF_SIZE];
|
||||
USB_DMA_INIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE) volatile static uint32_t s_recvSize = 0;
|
||||
USB_DMA_INIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE) volatile static uint32_t s_sendSize = 0;
|
||||
|
||||
#if defined(FSL_FEATURE_USB_KHCI_KEEP_ALIVE_ENABLED) && (FSL_FEATURE_USB_KHCI_KEEP_ALIVE_ENABLED > 0U) && \
|
||||
defined(USB_DEVICE_CONFIG_KEEP_ALIVE_MODE) && (USB_DEVICE_CONFIG_KEEP_ALIVE_MODE > 0U) && \
|
||||
defined(FSL_FEATURE_USB_KHCI_USB_RAM) && (FSL_FEATURE_USB_KHCI_USB_RAM > 0U)
|
||||
USB_DMA_INIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE) volatile static uint8_t s_waitForDataReceive = 0;
|
||||
USB_DMA_INIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE) volatile static uint8_t s_comOpen = 0;
|
||||
#endif
|
||||
|
||||
USB_DMA_NONINIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE) static usb_device_composite_struct_t *s_UsbDeviceComposite;
|
||||
USB_DMA_NONINIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE) static usb_cdc_vcom_struct_t s_UsbInterface2CicVcom;
|
||||
|
||||
/*******************************************************************************
|
||||
* Code
|
||||
******************************************************************************/
|
||||
|
||||
/*!
|
||||
* @brief Interface task function.
|
||||
*/
|
||||
void USB_DeviceInterface2CicVcomTask(void)
|
||||
{
|
||||
usb_status_t error = kStatus_USB_Error;
|
||||
if ((1 == s_UsbDeviceComposite->attach) && (1 == s_UsbInterface2CicVcom.startTransactions))
|
||||
{
|
||||
/* User Code */
|
||||
if ((0 != s_recvSize) && (0xFFFFFFFFU != s_recvSize))
|
||||
{
|
||||
int32_t i;
|
||||
|
||||
/* Copy Buffer to Send Buff */
|
||||
for (i = 0; i < s_recvSize; i++)
|
||||
{
|
||||
s_currSendBuf[s_sendSize++] = s_currRecvBuf[i];
|
||||
}
|
||||
s_recvSize = 0;
|
||||
}
|
||||
|
||||
if (s_sendSize)
|
||||
{
|
||||
uint32_t size = s_sendSize;
|
||||
s_sendSize = 0;
|
||||
|
||||
error = USB_DeviceCdcAcmSend(s_UsbInterface2CicVcom.cdcAcmHandle, USB_DIC_VCOM_IN_ENDPOINT, s_currSendBuf, size);
|
||||
|
||||
if (error != kStatus_USB_Success)
|
||||
{
|
||||
/* Failure to send Data Handling code here */
|
||||
}
|
||||
}
|
||||
#if defined(FSL_FEATURE_USB_KHCI_KEEP_ALIVE_ENABLED) && (FSL_FEATURE_USB_KHCI_KEEP_ALIVE_ENABLED > 0U) && \
|
||||
defined(USB_DEVICE_CONFIG_KEEP_ALIVE_MODE) && (USB_DEVICE_CONFIG_KEEP_ALIVE_MODE > 0U) && \
|
||||
defined(FSL_FEATURE_USB_KHCI_USB_RAM) && (FSL_FEATURE_USB_KHCI_USB_RAM > 0U)
|
||||
if ((s_waitForDataReceive))
|
||||
{
|
||||
if (s_comOpen == 1)
|
||||
{
|
||||
/* Wait for all the packets been sent during opening the com port. Otherwise these packets may
|
||||
* wake up the system.
|
||||
*/
|
||||
usb_echo("Waiting to enter lowpower ...\r\n");
|
||||
for (uint32_t i = 0U; i < 16000000U; ++i)
|
||||
{
|
||||
__ASM("NOP"); /* delay */
|
||||
}
|
||||
|
||||
s_comOpen = 0;
|
||||
}
|
||||
usb_echo("Enter lowpower\r\n");
|
||||
BOARD_DbgConsole_Deinit();
|
||||
USB0->INTEN &= ~USB_INTEN_TOKDNEEN_MASK;
|
||||
USB_EnterLowpowerMode();
|
||||
|
||||
s_waitForDataReceive = 0;
|
||||
USB0->INTEN |= USB_INTEN_TOKDNEEN_MASK;
|
||||
BOARD_DbgConsole_Init();
|
||||
usb_echo("Exit lowpower\r\n");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief Function that processes class specific events.
|
||||
*
|
||||
* @param handle Handle to USB device class.
|
||||
* @param event Class event code.
|
||||
* @param param The parameter of the class specific event.
|
||||
* @return usb_status_t Status of USB transaction.
|
||||
*/
|
||||
usb_status_t USB_DeviceInterface2CicVcomCallback(class_handle_t handle, uint32_t event, void *param)
|
||||
{
|
||||
uint32_t len;
|
||||
uint8_t *uartBitmap;
|
||||
usb_device_cdc_acm_request_param_struct_t *acmReqParam;
|
||||
usb_device_endpoint_callback_message_struct_t *epCbParam;
|
||||
usb_status_t error = kStatus_USB_Error;
|
||||
usb_cdc_acm_info_t *acmInfo = &s_usbCdcAcmInfo;
|
||||
acmReqParam = (usb_device_cdc_acm_request_param_struct_t *)param;
|
||||
epCbParam = (usb_device_endpoint_callback_message_struct_t *)param;
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case kUSB_DeviceCdcEventSendResponse:
|
||||
{
|
||||
if ((epCbParam->length != 0) && (!(epCbParam->length % g_UsbDeviceInterface3DicVcomSetting0DefaultEndpoints[USB_DIC_VCOM_IN_ENDPOINT_INDEX].maxPacketSize)))
|
||||
{
|
||||
/* If the last packet is the size of endpoint, then send also zero-ended packet,
|
||||
** meaning that we want to inform the host that we do not have any additional
|
||||
** data, so it can flush the output.
|
||||
*/
|
||||
error = USB_DeviceCdcAcmSend(handle, USB_DIC_VCOM_IN_ENDPOINT, NULL, 0);
|
||||
}
|
||||
else if ((1 == s_UsbDeviceComposite->attach) && (1 == s_UsbInterface2CicVcom.startTransactions))
|
||||
{
|
||||
if ((epCbParam->buffer != NULL) || ((epCbParam->buffer == NULL) && (epCbParam->length == 0)))
|
||||
{
|
||||
/* User: add your own code for send complete event */
|
||||
/* Schedule buffer for next receive event */
|
||||
error = USB_DeviceCdcAcmRecv(handle, USB_DIC_VCOM_OUT_ENDPOINT, s_currRecvBuf,
|
||||
g_UsbDeviceInterface3DicVcomSetting0DefaultEndpoints[USB_DIC_VCOM_OUT_ENDPOINT_INDEX].maxPacketSize);
|
||||
#if defined(FSL_FEATURE_USB_KHCI_KEEP_ALIVE_ENABLED) && (FSL_FEATURE_USB_KHCI_KEEP_ALIVE_ENABLED > 0U) && \
|
||||
defined(USB_DEVICE_CONFIG_KEEP_ALIVE_MODE) && (USB_DEVICE_CONFIG_KEEP_ALIVE_MODE > 0U) && \
|
||||
defined(FSL_FEATURE_USB_KHCI_USB_RAM) && (FSL_FEATURE_USB_KHCI_USB_RAM > 0U)
|
||||
s_waitForDataReceive = 1;
|
||||
USB0->INTEN &= ~USB_INTEN_SOFTOKEN_MASK;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
}
|
||||
break;
|
||||
case kUSB_DeviceCdcEventRecvResponse:
|
||||
{
|
||||
if ((1 == s_UsbDeviceComposite->attach) && (1 == s_UsbInterface2CicVcom.startTransactions))
|
||||
{
|
||||
s_recvSize = epCbParam->length;
|
||||
|
||||
#if defined(FSL_FEATURE_USB_KHCI_KEEP_ALIVE_ENABLED) && (FSL_FEATURE_USB_KHCI_KEEP_ALIVE_ENABLED > 0U) && \
|
||||
defined(USB_DEVICE_CONFIG_KEEP_ALIVE_MODE) && (USB_DEVICE_CONFIG_KEEP_ALIVE_MODE > 0U) && \
|
||||
defined(FSL_FEATURE_USB_KHCI_USB_RAM) && (FSL_FEATURE_USB_KHCI_USB_RAM > 0U)
|
||||
s_waitForDataReceive = 0;
|
||||
USB0->INTEN |= USB_INTEN_SOFTOKEN_MASK;
|
||||
#endif
|
||||
if (!s_recvSize)
|
||||
{
|
||||
/* Schedule buffer for next receive event */
|
||||
error = USB_DeviceCdcAcmRecv(handle, USB_DIC_VCOM_OUT_ENDPOINT, s_currRecvBuf,
|
||||
g_UsbDeviceInterface3DicVcomSetting0DefaultEndpoints[USB_DIC_VCOM_OUT_ENDPOINT_INDEX].maxPacketSize);
|
||||
#if defined(FSL_FEATURE_USB_KHCI_KEEP_ALIVE_ENABLED) && (FSL_FEATURE_USB_KHCI_KEEP_ALIVE_ENABLED > 0U) && \
|
||||
defined(USB_DEVICE_CONFIG_KEEP_ALIVE_MODE) && (USB_DEVICE_CONFIG_KEEP_ALIVE_MODE > 0U) && \
|
||||
defined(FSL_FEATURE_USB_KHCI_USB_RAM) && (FSL_FEATURE_USB_KHCI_USB_RAM > 0U)
|
||||
s_waitForDataReceive = 1;
|
||||
USB0->INTEN &= ~USB_INTEN_SOFTOKEN_MASK;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case kUSB_DeviceCdcEventSerialStateNotif:
|
||||
((usb_device_cdc_acm_struct_t *)handle)->hasSentState = 0;
|
||||
error = kStatus_USB_Success;
|
||||
break;
|
||||
case kUSB_DeviceCdcEventSendEncapsulatedCommand:
|
||||
break;
|
||||
case kUSB_DeviceCdcEventGetEncapsulatedResponse:
|
||||
break;
|
||||
case kUSB_DeviceCdcEventSetCommFeature:
|
||||
if (USB_DEVICE_CDC_FEATURE_ABSTRACT_STATE == acmReqParam->setupValue)
|
||||
{
|
||||
if (1 == acmReqParam->isSetup)
|
||||
{
|
||||
*(acmReqParam->buffer) = s_abstractState;
|
||||
}
|
||||
else
|
||||
{
|
||||
*(acmReqParam->length) = 0;
|
||||
}
|
||||
}
|
||||
else if (USB_DEVICE_CDC_FEATURE_COUNTRY_SETTING == acmReqParam->setupValue)
|
||||
{
|
||||
if (1 == acmReqParam->isSetup)
|
||||
{
|
||||
*(acmReqParam->buffer) = s_countryCode;
|
||||
}
|
||||
else
|
||||
{
|
||||
*(acmReqParam->length) = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
error = kStatus_USB_Success;
|
||||
break;
|
||||
case kUSB_DeviceCdcEventGetCommFeature:
|
||||
if (USB_DEVICE_CDC_FEATURE_ABSTRACT_STATE == acmReqParam->setupValue)
|
||||
{
|
||||
*(acmReqParam->buffer) = s_abstractState;
|
||||
*(acmReqParam->length) = COMM_FEATURE_DATA_SIZE;
|
||||
}
|
||||
else if (USB_DEVICE_CDC_FEATURE_COUNTRY_SETTING == acmReqParam->setupValue)
|
||||
{
|
||||
*(acmReqParam->buffer) = s_countryCode;
|
||||
*(acmReqParam->length) = COMM_FEATURE_DATA_SIZE;
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
error = kStatus_USB_Success;
|
||||
break;
|
||||
case kUSB_DeviceCdcEventClearCommFeature:
|
||||
break;
|
||||
case kUSB_DeviceCdcEventGetLineCoding:
|
||||
*(acmReqParam->buffer) = s_lineCoding;
|
||||
*(acmReqParam->length) = LINE_CODING_SIZE;
|
||||
error = kStatus_USB_Success;
|
||||
break;
|
||||
case kUSB_DeviceCdcEventSetLineCoding:
|
||||
if (1 == acmReqParam->isSetup)
|
||||
{
|
||||
*(acmReqParam->buffer) = s_lineCoding;
|
||||
}
|
||||
else
|
||||
{
|
||||
*(acmReqParam->length) = 0;
|
||||
}
|
||||
error = kStatus_USB_Success;
|
||||
break;
|
||||
case kUSB_DeviceCdcEventSetControlLineState:
|
||||
{
|
||||
s_usbCdcAcmInfo.dteStatus = acmReqParam->setupValue;
|
||||
/* activate/deactivate Tx carrier */
|
||||
if (acmInfo->dteStatus & USB_DEVICE_CDC_CONTROL_SIG_BITMAP_CARRIER_ACTIVATION)
|
||||
{
|
||||
acmInfo->uartState |= USB_DEVICE_CDC_UART_STATE_TX_CARRIER;
|
||||
}
|
||||
else
|
||||
{
|
||||
acmInfo->uartState &= (uint16_t)~USB_DEVICE_CDC_UART_STATE_TX_CARRIER;
|
||||
}
|
||||
|
||||
/* activate carrier and DTE. Com port of terminal tool running on PC is open now */
|
||||
if (acmInfo->dteStatus & USB_DEVICE_CDC_CONTROL_SIG_BITMAP_DTE_PRESENCE)
|
||||
{
|
||||
acmInfo->uartState |= USB_DEVICE_CDC_UART_STATE_RX_CARRIER;
|
||||
}
|
||||
/* Com port of terminal tool running on PC is closed now */
|
||||
else
|
||||
{
|
||||
acmInfo->uartState &= (uint16_t)~USB_DEVICE_CDC_UART_STATE_RX_CARRIER;
|
||||
}
|
||||
|
||||
/* Indicates to DCE if DTE is present or not */
|
||||
acmInfo->dtePresent = (acmInfo->dteStatus & USB_DEVICE_CDC_CONTROL_SIG_BITMAP_DTE_PRESENCE) ? true : false;
|
||||
|
||||
/* Initialize the serial state buffer */
|
||||
acmInfo->serialStateBuf[0] = NOTIF_REQUEST_TYPE; /* bmRequestType */
|
||||
acmInfo->serialStateBuf[1] = USB_DEVICE_CDC_NOTIF_SERIAL_STATE; /* bNotification */
|
||||
acmInfo->serialStateBuf[2] = 0x00; /* wValue */
|
||||
acmInfo->serialStateBuf[3] = 0x00;
|
||||
acmInfo->serialStateBuf[4] = 0x00; /* wIndex */
|
||||
acmInfo->serialStateBuf[5] = 0x00;
|
||||
acmInfo->serialStateBuf[6] = UART_BITMAP_SIZE; /* wLength */
|
||||
acmInfo->serialStateBuf[7] = 0x00;
|
||||
/* Notify to host the line state */
|
||||
acmInfo->serialStateBuf[4] = acmReqParam->interfaceIndex;
|
||||
/* Lower byte of UART BITMAP */
|
||||
uartBitmap = (uint8_t *)&acmInfo->serialStateBuf[NOTIF_PACKET_SIZE + UART_BITMAP_SIZE - 2];
|
||||
uartBitmap[0] = acmInfo->uartState & 0xFFu;
|
||||
uartBitmap[1] = (acmInfo->uartState >> 8) & 0xFFu;
|
||||
len = (uint32_t)(NOTIF_PACKET_SIZE + UART_BITMAP_SIZE);
|
||||
if (0 == ((usb_device_cdc_acm_struct_t *)handle)->hasSentState)
|
||||
{
|
||||
error = USB_DeviceCdcAcmSend(handle, USB_CIC_VCOM_IN_ENDPOINT, acmInfo->serialStateBuf, len);
|
||||
if (kStatus_USB_Success != error)
|
||||
{
|
||||
usb_echo("kUSB_DeviceCdcEventSetControlLineState error!");
|
||||
}
|
||||
((usb_device_cdc_acm_struct_t *)handle)->hasSentState = 1;
|
||||
}
|
||||
|
||||
/* Update status */
|
||||
if (acmInfo->dteStatus & USB_DEVICE_CDC_CONTROL_SIG_BITMAP_CARRIER_ACTIVATION)
|
||||
{
|
||||
/* To do: CARRIER_ACTIVATED */
|
||||
}
|
||||
else
|
||||
{
|
||||
/* To do: CARRIER_DEACTIVATED */
|
||||
}
|
||||
if (acmInfo->dteStatus & USB_DEVICE_CDC_CONTROL_SIG_BITMAP_DTE_PRESENCE)
|
||||
{
|
||||
/* DTE_ACTIVATED */
|
||||
if (1 == s_UsbDeviceComposite->attach)
|
||||
{
|
||||
s_UsbInterface2CicVcom.startTransactions = 1;
|
||||
#if defined(FSL_FEATURE_USB_KHCI_KEEP_ALIVE_ENABLED) && (FSL_FEATURE_USB_KHCI_KEEP_ALIVE_ENABLED > 0U) && \
|
||||
defined(USB_DEVICE_CONFIG_KEEP_ALIVE_MODE) && (USB_DEVICE_CONFIG_KEEP_ALIVE_MODE > 0U) && \
|
||||
defined(FSL_FEATURE_USB_KHCI_USB_RAM) && (FSL_FEATURE_USB_KHCI_USB_RAM > 0U)
|
||||
s_waitForDataReceive = 1;
|
||||
USB0->INTEN &= ~USB_INTEN_SOFTOKEN_MASK;
|
||||
s_comOpen = 1;
|
||||
usb_echo("USB_APP_CDC_DTE_ACTIVATED\r\n");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* DTE_DEACTIVATED */
|
||||
if (1 == s_UsbDeviceComposite->attach)
|
||||
{
|
||||
s_UsbInterface2CicVcom.startTransactions = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case kUSB_DeviceCdcEventSendBreak:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief Notifies application layer about set configuration event.
|
||||
*
|
||||
* @param handle Handle to USB device class.
|
||||
* @param configuration_idx Id of device configuration.
|
||||
* @return usb_status_t Always return kStatus_USB_Success value.
|
||||
*/
|
||||
usb_status_t USB_DeviceInterface2CicVcomSetConfiguration(class_handle_t handle, uint8_t configuration_idx)
|
||||
{
|
||||
/* Schedule buffer for receive */
|
||||
USB_DeviceCdcAcmRecv(s_UsbInterface2CicVcom.cdcAcmHandle, USB_DIC_VCOM_OUT_ENDPOINT, s_currRecvBuf,
|
||||
g_UsbDeviceInterface3DicVcomSetting0DefaultEndpoints[USB_DIC_VCOM_OUT_ENDPOINT_INDEX].maxPacketSize);
|
||||
|
||||
return kStatus_USB_Success;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief Notifies application layer about set configuration event.
|
||||
*
|
||||
* @param class_handle_t Handle to USB device class.
|
||||
* @param alternateSetting Id of device alternative setting.
|
||||
* @return usb_status_t Always return kStatus_USB_Success value.
|
||||
*/
|
||||
usb_status_t USB_DeviceInterface2CicVcomSetInterface(class_handle_t handle, uint8_t alternateSetting)
|
||||
{
|
||||
return kStatus_USB_Success;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief Notifies application layer about set configuration event.
|
||||
*
|
||||
* @param class_handle_t Handle to USB device class.
|
||||
* @param alternateSetting Id of device alternative setting.
|
||||
* @return usb_status_t Always return kStatus_USB_Success value.
|
||||
*/
|
||||
usb_status_t USB_DeviceInterface3DicVcomSetInterface(class_handle_t handle, uint8_t alternateSetting)
|
||||
{
|
||||
return kStatus_USB_Success;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief Initializes device structure and buffer pointers.
|
||||
*
|
||||
* @param *device Pointer to structure to initialize to.
|
||||
* @return usb_status_t Always return kStatus_USB_Success value.
|
||||
*/
|
||||
usb_status_t USB_DeviceInterface2CicVcomInit(usb_device_composite_struct_t *deviceComposite)
|
||||
{
|
||||
s_UsbDeviceComposite = deviceComposite;
|
||||
s_UsbInterface2CicVcom.cdcAcmHandle = s_UsbDeviceComposite->interface2CicVcomHandle;
|
||||
return kStatus_USB_Success;
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
/*
|
||||
* Copyright 2015-2016, Freescale Semiconductor, Inc.
|
||||
* Copyright 2016-2021 NXP
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this list
|
||||
* of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice, this
|
||||
* list of conditions and the following disclaimer in the documentation and/or
|
||||
* other materials provided with the distribution.
|
||||
*
|
||||
* 3. Neither the name of copyright holder nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from this
|
||||
* software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef __USB_DEVICE_INTERFACE_2_CIC_VCOM_H__
|
||||
#define __USB_DEVICE_INTERFACE_2_CIC_VCOM_H__
|
||||
|
||||
/*******************************************************************************
|
||||
* Definitions
|
||||
******************************************************************************/
|
||||
|
||||
/*!
|
||||
* @brief Interface task function.
|
||||
*/
|
||||
void USB_DeviceInterface2CicVcomTask(void);
|
||||
|
||||
#endif /* __USB_DEVICE_INTERFACE_2_CIC_VCOM_H__ */
|
|
@ -0,0 +1,540 @@
|
|||
/*
|
||||
* Copyright 2015-2016, Freescale Semiconductor, Inc.
|
||||
* Copyright 2016-2021 NXP
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this list
|
||||
* of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice, this
|
||||
* list of conditions and the following disclaimer in the documentation and/or
|
||||
* other materials provided with the distribution.
|
||||
*
|
||||
* 3. Neither the name of copyright holder nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from this
|
||||
* software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "usb_device_config.h"
|
||||
#include "usb.h"
|
||||
#include "usb_device.h"
|
||||
|
||||
#include "usb_device_class.h"
|
||||
#include "usb_device_cdc_acm.h"
|
||||
|
||||
#include "usb_device_ch9.h"
|
||||
#include "usb_device_descriptor.h"
|
||||
|
||||
#include "usb_device_composite.h"
|
||||
|
||||
/*******************************************************************************
|
||||
* Definitions
|
||||
******************************************************************************/
|
||||
|
||||
/* Outgoing notification buffer number */
|
||||
#define USB_CIC_VCOM_IN_ENDPOINT (5)
|
||||
/* Outgoing data buffer number */
|
||||
#define USB_DIC_VCOM_IN_ENDPOINT (6)
|
||||
/* Outgoing data buffer index */
|
||||
#define USB_DIC_VCOM_IN_ENDPOINT_INDEX (0)
|
||||
/* Incoming data buffer number */
|
||||
#define USB_DIC_VCOM_OUT_ENDPOINT (3)
|
||||
/* Incoming data buffer index */
|
||||
#define USB_DIC_VCOM_OUT_ENDPOINT_INDEX (1)
|
||||
/* Data packet size for High Speed */
|
||||
#define HS_DIC_VCOM_OUT_PACKET_SIZE (512)
|
||||
/* Data packet size for Full Speed */
|
||||
#define FS_DIC_VCOM_OUT_PACKET_SIZE (64)
|
||||
|
||||
#if defined(USB_DEVICE_CONFIG_EHCI) && (USB_DEVICE_CONFIG_EHCI > 0)
|
||||
#define DATA_BUFF_SIZE HS_DIC_VCOM_OUT_PACKET_SIZE
|
||||
|
||||
#endif
|
||||
#if defined(USB_DEVICE_CONFIG_KHCI) && (USB_DEVICE_CONFIG_KHCI > 0)
|
||||
#define DATA_BUFF_SIZE FS_DIC_VCOM_OUT_PACKET_SIZE
|
||||
|
||||
#endif
|
||||
#if defined(USB_DEVICE_CONFIG_LPCIP3511FS) && (USB_DEVICE_CONFIG_LPCIP3511FS > 0U)
|
||||
#define DATA_BUFF_SIZE FS_DIC_VCOM_OUT_PACKET_SIZE
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(USB_DEVICE_CONFIG_LPCIP3511HS) && (USB_DEVICE_CONFIG_LPCIP3511HS > 0U)
|
||||
#define DATA_BUFF_SIZE HS_DIC_VCOM_OUT_PACKET_SIZE
|
||||
#endif
|
||||
|
||||
/* Currently configured line coding */
|
||||
#define LINE_CODING_SIZE (0x07U)
|
||||
#define LINE_CODING_DTERATE (115200U)
|
||||
#define LINE_CODING_CHARFORMAT (0x00U)
|
||||
#define LINE_CODING_PARITYTYPE (0x00U)
|
||||
#define LINE_CODING_DATABITS (0x08U)
|
||||
|
||||
/* Communications feature */
|
||||
#define COMM_FEATURE_DATA_SIZE (0x02U)
|
||||
#define STATUS_ABSTRACT_STATE (0x0000U)
|
||||
#define COUNTRY_SETTING (0x0000U)
|
||||
|
||||
/* Notification of serial state */
|
||||
#define NOTIF_PACKET_SIZE (0x08U)
|
||||
#define UART_BITMAP_SIZE (0x02U)
|
||||
#define NOTIF_REQUEST_TYPE (0xA1U)
|
||||
|
||||
/* Define the types for application */
|
||||
typedef struct _usb_cdc_vcom_struct
|
||||
{
|
||||
class_handle_t cdcAcmHandle; /* USB CDC ACM class handle. */
|
||||
volatile uint8_t startTransactions; /* A flag to indicate whether a CDC device is ready to transmit and receive data. */
|
||||
} usb_cdc_vcom_struct_t;
|
||||
|
||||
/* Define the information relates to abstract control model */
|
||||
typedef struct _usb_cdc_acm_info
|
||||
{
|
||||
uint8_t serialStateBuf[NOTIF_PACKET_SIZE + UART_BITMAP_SIZE]; /* Serial state buffer of the CDC device to notify the
|
||||
serial state to host. */
|
||||
bool dtePresent; /* A flag to indicate whether DTE is present. */
|
||||
uint16_t breakDuration; /* Length of time in milliseconds of the break signal */
|
||||
uint8_t dteStatus; /* Status of data terminal equipment */
|
||||
uint8_t currentInterface; /* Current interface index. */
|
||||
uint16_t uartState; /* UART state of the CDC device. */
|
||||
} usb_cdc_acm_info_t;
|
||||
|
||||
/*******************************************************************************
|
||||
* Prototypes
|
||||
******************************************************************************/
|
||||
|
||||
usb_status_t USB_DeviceInterface4CicVcomCallback(class_handle_t handle, uint32_t event, void *param);
|
||||
|
||||
usb_status_t USB_DeviceInterface4CicVcomSetConfiguration(class_handle_t handle, uint8_t configuration_idx);
|
||||
|
||||
usb_status_t USB_DeviceInterface4CicVcomSetInterface(class_handle_t handle, uint8_t alternateSetting);
|
||||
|
||||
usb_status_t USB_DeviceInterface5DicVcomSetInterface(class_handle_t handle, uint8_t alternateSetting);
|
||||
|
||||
usb_status_t USB_DeviceInterface4CicVcomInit(usb_device_composite_struct_t *deviceComposite);
|
||||
|
||||
/*******************************************************************************
|
||||
* Variables
|
||||
******************************************************************************/
|
||||
|
||||
|
||||
extern usb_device_endpoint_struct_t g_UsbDeviceInterface5DicVcomSetting0DefaultEndpoints[];
|
||||
|
||||
/* Line coding of cdc device */
|
||||
USB_DMA_INIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE) static uint8_t s_lineCoding[LINE_CODING_SIZE] = {
|
||||
/* E.g. 0x00,0xC2,0x01,0x00 : 0x0001C200 is 115200 bits per second */
|
||||
(LINE_CODING_DTERATE >> 0U) & 0x000000FFU,
|
||||
(LINE_CODING_DTERATE >> 8U) & 0x000000FFU,
|
||||
(LINE_CODING_DTERATE >> 16U) & 0x000000FFU,
|
||||
(LINE_CODING_DTERATE >> 24U) & 0x000000FFU,
|
||||
LINE_CODING_CHARFORMAT,
|
||||
LINE_CODING_PARITYTYPE,
|
||||
LINE_CODING_DATABITS};
|
||||
|
||||
/* Abstract state of cdc device */
|
||||
USB_DMA_INIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE) static uint8_t s_abstractState[COMM_FEATURE_DATA_SIZE] = {(STATUS_ABSTRACT_STATE >> 0U) & 0x00FFU,
|
||||
(STATUS_ABSTRACT_STATE >> 8U) & 0x00FFU};
|
||||
|
||||
/* Country code of cdc device */
|
||||
USB_DMA_INIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE) static uint8_t s_countryCode[COMM_FEATURE_DATA_SIZE] = {(COUNTRY_SETTING >> 0U) & 0x00FFU,
|
||||
(COUNTRY_SETTING >> 8U) & 0x00FFU};
|
||||
|
||||
/* CDC ACM information */
|
||||
USB_DMA_NONINIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE) static usb_cdc_acm_info_t s_usbCdcAcmInfo;
|
||||
/* Data buffer for receiving and sending*/
|
||||
USB_DMA_NONINIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE) static uint8_t s_currRecvBuf[DATA_BUFF_SIZE];
|
||||
USB_DMA_NONINIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE) static uint8_t s_currSendBuf[DATA_BUFF_SIZE];
|
||||
USB_DMA_INIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE) volatile static uint32_t s_recvSize = 0;
|
||||
USB_DMA_INIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE) volatile static uint32_t s_sendSize = 0;
|
||||
|
||||
#if defined(FSL_FEATURE_USB_KHCI_KEEP_ALIVE_ENABLED) && (FSL_FEATURE_USB_KHCI_KEEP_ALIVE_ENABLED > 0U) && \
|
||||
defined(USB_DEVICE_CONFIG_KEEP_ALIVE_MODE) && (USB_DEVICE_CONFIG_KEEP_ALIVE_MODE > 0U) && \
|
||||
defined(FSL_FEATURE_USB_KHCI_USB_RAM) && (FSL_FEATURE_USB_KHCI_USB_RAM > 0U)
|
||||
USB_DMA_INIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE) volatile static uint8_t s_waitForDataReceive = 0;
|
||||
USB_DMA_INIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE) volatile static uint8_t s_comOpen = 0;
|
||||
#endif
|
||||
|
||||
USB_DMA_NONINIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE) static usb_device_composite_struct_t *s_UsbDeviceComposite;
|
||||
USB_DMA_NONINIT_DATA_ALIGN(USB_DATA_ALIGN_SIZE) static usb_cdc_vcom_struct_t s_UsbInterface4CicVcom;
|
||||
|
||||
/*******************************************************************************
|
||||
* Code
|
||||
******************************************************************************/
|
||||
|
||||
/*!
|
||||
* @brief Interface task function.
|
||||
*/
|
||||
void USB_DeviceInterface4CicVcomTask(void)
|
||||
{
|
||||
usb_status_t error = kStatus_USB_Error;
|
||||
if ((1 == s_UsbDeviceComposite->attach) && (1 == s_UsbInterface4CicVcom.startTransactions))
|
||||
{
|
||||
/* User Code */
|
||||
if ((0 != s_recvSize) && (0xFFFFFFFFU != s_recvSize))
|
||||
{
|
||||
int32_t i;
|
||||
|
||||
/* Copy Buffer to Send Buff */
|
||||
for (i = 0; i < s_recvSize; i++)
|
||||
{
|
||||
s_currSendBuf[s_sendSize++] = s_currRecvBuf[i];
|
||||
}
|
||||
s_recvSize = 0;
|
||||
}
|
||||
|
||||
if (s_sendSize)
|
||||
{
|
||||
uint32_t size = s_sendSize;
|
||||
s_sendSize = 0;
|
||||
|
||||
error = USB_DeviceCdcAcmSend(s_UsbInterface4CicVcom.cdcAcmHandle, USB_DIC_VCOM_IN_ENDPOINT, s_currSendBuf, size);
|
||||
|
||||
if (error != kStatus_USB_Success)
|
||||
{
|
||||
/* Failure to send Data Handling code here */
|
||||
}
|
||||
}
|
||||
#if defined(FSL_FEATURE_USB_KHCI_KEEP_ALIVE_ENABLED) && (FSL_FEATURE_USB_KHCI_KEEP_ALIVE_ENABLED > 0U) && \
|
||||
defined(USB_DEVICE_CONFIG_KEEP_ALIVE_MODE) && (USB_DEVICE_CONFIG_KEEP_ALIVE_MODE > 0U) && \
|
||||
defined(FSL_FEATURE_USB_KHCI_USB_RAM) && (FSL_FEATURE_USB_KHCI_USB_RAM > 0U)
|
||||
if ((s_waitForDataReceive))
|
||||
{
|
||||
if (s_comOpen == 1)
|
||||
{
|
||||
/* Wait for all the packets been sent during opening the com port. Otherwise these packets may
|
||||
* wake up the system.
|
||||
*/
|
||||
usb_echo("Waiting to enter lowpower ...\r\n");
|
||||
for (uint32_t i = 0U; i < 16000000U; ++i)
|
||||
{
|
||||
__ASM("NOP"); /* delay */
|
||||
}
|
||||
|
||||
s_comOpen = 0;
|
||||
}
|
||||
usb_echo("Enter lowpower\r\n");
|
||||
BOARD_DbgConsole_Deinit();
|
||||
USB0->INTEN &= ~USB_INTEN_TOKDNEEN_MASK;
|
||||
USB_EnterLowpowerMode();
|
||||
|
||||
s_waitForDataReceive = 0;
|
||||
USB0->INTEN |= USB_INTEN_TOKDNEEN_MASK;
|
||||
BOARD_DbgConsole_Init();
|
||||
usb_echo("Exit lowpower\r\n");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief Function that processes class specific events.
|
||||
*
|
||||
* @param handle Handle to USB device class.
|
||||
* @param event Class event code.
|
||||
* @param param The parameter of the class specific event.
|
||||
* @return usb_status_t Status of USB transaction.
|
||||
*/
|
||||
usb_status_t USB_DeviceInterface4CicVcomCallback(class_handle_t handle, uint32_t event, void *param)
|
||||
{
|
||||
uint32_t len;
|
||||
uint8_t *uartBitmap;
|
||||
usb_device_cdc_acm_request_param_struct_t *acmReqParam;
|
||||
usb_device_endpoint_callback_message_struct_t *epCbParam;
|
||||
usb_status_t error = kStatus_USB_Error;
|
||||
usb_cdc_acm_info_t *acmInfo = &s_usbCdcAcmInfo;
|
||||
acmReqParam = (usb_device_cdc_acm_request_param_struct_t *)param;
|
||||
epCbParam = (usb_device_endpoint_callback_message_struct_t *)param;
|
||||
|
||||
switch (event)
|
||||
{
|
||||
case kUSB_DeviceCdcEventSendResponse:
|
||||
{
|
||||
if ((epCbParam->length != 0) && (!(epCbParam->length % g_UsbDeviceInterface5DicVcomSetting0DefaultEndpoints[USB_DIC_VCOM_IN_ENDPOINT_INDEX].maxPacketSize)))
|
||||
{
|
||||
/* If the last packet is the size of endpoint, then send also zero-ended packet,
|
||||
** meaning that we want to inform the host that we do not have any additional
|
||||
** data, so it can flush the output.
|
||||
*/
|
||||
error = USB_DeviceCdcAcmSend(handle, USB_DIC_VCOM_IN_ENDPOINT, NULL, 0);
|
||||
}
|
||||
else if ((1 == s_UsbDeviceComposite->attach) && (1 == s_UsbInterface4CicVcom.startTransactions))
|
||||
{
|
||||
if ((epCbParam->buffer != NULL) || ((epCbParam->buffer == NULL) && (epCbParam->length == 0)))
|
||||
{
|
||||
/* User: add your own code for send complete event */
|
||||
/* Schedule buffer for next receive event */
|
||||
error = USB_DeviceCdcAcmRecv(handle, USB_DIC_VCOM_OUT_ENDPOINT, s_currRecvBuf,
|
||||
g_UsbDeviceInterface5DicVcomSetting0DefaultEndpoints[USB_DIC_VCOM_OUT_ENDPOINT_INDEX].maxPacketSize);
|
||||
#if defined(FSL_FEATURE_USB_KHCI_KEEP_ALIVE_ENABLED) && (FSL_FEATURE_USB_KHCI_KEEP_ALIVE_ENABLED > 0U) && \
|
||||
defined(USB_DEVICE_CONFIG_KEEP_ALIVE_MODE) && (USB_DEVICE_CONFIG_KEEP_ALIVE_MODE > 0U) && \
|
||||
defined(FSL_FEATURE_USB_KHCI_USB_RAM) && (FSL_FEATURE_USB_KHCI_USB_RAM > 0U)
|
||||
s_waitForDataReceive = 1;
|
||||
USB0->INTEN &= ~USB_INTEN_SOFTOKEN_MASK;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
}
|
||||
break;
|
||||
case kUSB_DeviceCdcEventRecvResponse:
|
||||
{
|
||||
if ((1 == s_UsbDeviceComposite->attach) && (1 == s_UsbInterface4CicVcom.startTransactions))
|
||||
{
|
||||
s_recvSize = epCbParam->length;
|
||||
|
||||
#if defined(FSL_FEATURE_USB_KHCI_KEEP_ALIVE_ENABLED) && (FSL_FEATURE_USB_KHCI_KEEP_ALIVE_ENABLED > 0U) && \
|
||||
defined(USB_DEVICE_CONFIG_KEEP_ALIVE_MODE) && (USB_DEVICE_CONFIG_KEEP_ALIVE_MODE > 0U) && \
|
||||
defined(FSL_FEATURE_USB_KHCI_USB_RAM) && (FSL_FEATURE_USB_KHCI_USB_RAM > 0U)
|
||||
s_waitForDataReceive = 0;
|
||||
USB0->INTEN |= USB_INTEN_SOFTOKEN_MASK;
|
||||
#endif
|
||||
if (!s_recvSize)
|
||||
{
|
||||
/* Schedule buffer for next receive event */
|
||||
error = USB_DeviceCdcAcmRecv(handle, USB_DIC_VCOM_OUT_ENDPOINT, s_currRecvBuf,
|
||||
g_UsbDeviceInterface5DicVcomSetting0DefaultEndpoints[USB_DIC_VCOM_OUT_ENDPOINT_INDEX].maxPacketSize);
|
||||
#if defined(FSL_FEATURE_USB_KHCI_KEEP_ALIVE_ENABLED) && (FSL_FEATURE_USB_KHCI_KEEP_ALIVE_ENABLED > 0U) && \
|
||||
defined(USB_DEVICE_CONFIG_KEEP_ALIVE_MODE) && (USB_DEVICE_CONFIG_KEEP_ALIVE_MODE > 0U) && \
|
||||
defined(FSL_FEATURE_USB_KHCI_USB_RAM) && (FSL_FEATURE_USB_KHCI_USB_RAM > 0U)
|
||||
s_waitForDataReceive = 1;
|
||||
USB0->INTEN &= ~USB_INTEN_SOFTOKEN_MASK;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case kUSB_DeviceCdcEventSerialStateNotif:
|
||||
((usb_device_cdc_acm_struct_t *)handle)->hasSentState = 0;
|
||||
error = kStatus_USB_Success;
|
||||
break;
|
||||
case kUSB_DeviceCdcEventSendEncapsulatedCommand:
|
||||
break;
|
||||
case kUSB_DeviceCdcEventGetEncapsulatedResponse:
|
||||
break;
|
||||
case kUSB_DeviceCdcEventSetCommFeature:
|
||||
if (USB_DEVICE_CDC_FEATURE_ABSTRACT_STATE == acmReqParam->setupValue)
|
||||
{
|
||||
if (1 == acmReqParam->isSetup)
|
||||
{
|
||||
*(acmReqParam->buffer) = s_abstractState;
|
||||
}
|
||||
else
|
||||
{
|
||||
*(acmReqParam->length) = 0;
|
||||
}
|
||||
}
|
||||
else if (USB_DEVICE_CDC_FEATURE_COUNTRY_SETTING == acmReqParam->setupValue)
|
||||
{
|
||||
if (1 == acmReqParam->isSetup)
|
||||
{
|
||||
*(acmReqParam->buffer) = s_countryCode;
|
||||
}
|
||||
else
|
||||
{
|
||||
*(acmReqParam->length) = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
error = kStatus_USB_Success;
|
||||
break;
|
||||
case kUSB_DeviceCdcEventGetCommFeature:
|
||||
if (USB_DEVICE_CDC_FEATURE_ABSTRACT_STATE == acmReqParam->setupValue)
|
||||
{
|
||||
*(acmReqParam->buffer) = s_abstractState;
|
||||
*(acmReqParam->length) = COMM_FEATURE_DATA_SIZE;
|
||||
}
|
||||
else if (USB_DEVICE_CDC_FEATURE_COUNTRY_SETTING == acmReqParam->setupValue)
|
||||
{
|
||||
*(acmReqParam->buffer) = s_countryCode;
|
||||
*(acmReqParam->length) = COMM_FEATURE_DATA_SIZE;
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
error = kStatus_USB_Success;
|
||||
break;
|
||||
case kUSB_DeviceCdcEventClearCommFeature:
|
||||
break;
|
||||
case kUSB_DeviceCdcEventGetLineCoding:
|
||||
*(acmReqParam->buffer) = s_lineCoding;
|
||||
*(acmReqParam->length) = LINE_CODING_SIZE;
|
||||
error = kStatus_USB_Success;
|
||||
break;
|
||||
case kUSB_DeviceCdcEventSetLineCoding:
|
||||
if (1 == acmReqParam->isSetup)
|
||||
{
|
||||
*(acmReqParam->buffer) = s_lineCoding;
|
||||
}
|
||||
else
|
||||
{
|
||||
*(acmReqParam->length) = 0;
|
||||
}
|
||||
error = kStatus_USB_Success;
|
||||
break;
|
||||
case kUSB_DeviceCdcEventSetControlLineState:
|
||||
{
|
||||
s_usbCdcAcmInfo.dteStatus = acmReqParam->setupValue;
|
||||
/* activate/deactivate Tx carrier */
|
||||
if (acmInfo->dteStatus & USB_DEVICE_CDC_CONTROL_SIG_BITMAP_CARRIER_ACTIVATION)
|
||||
{
|
||||
acmInfo->uartState |= USB_DEVICE_CDC_UART_STATE_TX_CARRIER;
|
||||
}
|
||||
else
|
||||
{
|
||||
acmInfo->uartState &= (uint16_t)~USB_DEVICE_CDC_UART_STATE_TX_CARRIER;
|
||||
}
|
||||
|
||||
/* activate carrier and DTE. Com port of terminal tool running on PC is open now */
|
||||
if (acmInfo->dteStatus & USB_DEVICE_CDC_CONTROL_SIG_BITMAP_DTE_PRESENCE)
|
||||
{
|
||||
acmInfo->uartState |= USB_DEVICE_CDC_UART_STATE_RX_CARRIER;
|
||||
}
|
||||
/* Com port of terminal tool running on PC is closed now */
|
||||
else
|
||||
{
|
||||
acmInfo->uartState &= (uint16_t)~USB_DEVICE_CDC_UART_STATE_RX_CARRIER;
|
||||
}
|
||||
|
||||
/* Indicates to DCE if DTE is present or not */
|
||||
acmInfo->dtePresent = (acmInfo->dteStatus & USB_DEVICE_CDC_CONTROL_SIG_BITMAP_DTE_PRESENCE) ? true : false;
|
||||
|
||||
/* Initialize the serial state buffer */
|
||||
acmInfo->serialStateBuf[0] = NOTIF_REQUEST_TYPE; /* bmRequestType */
|
||||
acmInfo->serialStateBuf[1] = USB_DEVICE_CDC_NOTIF_SERIAL_STATE; /* bNotification */
|
||||
acmInfo->serialStateBuf[2] = 0x00; /* wValue */
|
||||
acmInfo->serialStateBuf[3] = 0x00;
|
||||
acmInfo->serialStateBuf[4] = 0x00; /* wIndex */
|
||||
acmInfo->serialStateBuf[5] = 0x00;
|
||||
acmInfo->serialStateBuf[6] = UART_BITMAP_SIZE; /* wLength */
|
||||
acmInfo->serialStateBuf[7] = 0x00;
|
||||
/* Notify to host the line state */
|
||||
acmInfo->serialStateBuf[4] = acmReqParam->interfaceIndex;
|
||||
/* Lower byte of UART BITMAP */
|
||||
uartBitmap = (uint8_t *)&acmInfo->serialStateBuf[NOTIF_PACKET_SIZE + UART_BITMAP_SIZE - 2];
|
||||
uartBitmap[0] = acmInfo->uartState & 0xFFu;
|
||||
uartBitmap[1] = (acmInfo->uartState >> 8) & 0xFFu;
|
||||
len = (uint32_t)(NOTIF_PACKET_SIZE + UART_BITMAP_SIZE);
|
||||
if (0 == ((usb_device_cdc_acm_struct_t *)handle)->hasSentState)
|
||||
{
|
||||
error = USB_DeviceCdcAcmSend(handle, USB_CIC_VCOM_IN_ENDPOINT, acmInfo->serialStateBuf, len);
|
||||
if (kStatus_USB_Success != error)
|
||||
{
|
||||
usb_echo("kUSB_DeviceCdcEventSetControlLineState error!");
|
||||
}
|
||||
((usb_device_cdc_acm_struct_t *)handle)->hasSentState = 1;
|
||||
}
|
||||
|
||||
/* Update status */
|
||||
if (acmInfo->dteStatus & USB_DEVICE_CDC_CONTROL_SIG_BITMAP_CARRIER_ACTIVATION)
|
||||
{
|
||||
/* To do: CARRIER_ACTIVATED */
|
||||
}
|
||||
else
|
||||
{
|
||||
/* To do: CARRIER_DEACTIVATED */
|
||||
}
|
||||
if (acmInfo->dteStatus & USB_DEVICE_CDC_CONTROL_SIG_BITMAP_DTE_PRESENCE)
|
||||
{
|
||||
/* DTE_ACTIVATED */
|
||||
if (1 == s_UsbDeviceComposite->attach)
|
||||
{
|
||||
s_UsbInterface4CicVcom.startTransactions = 1;
|
||||
#if defined(FSL_FEATURE_USB_KHCI_KEEP_ALIVE_ENABLED) && (FSL_FEATURE_USB_KHCI_KEEP_ALIVE_ENABLED > 0U) && \
|
||||
defined(USB_DEVICE_CONFIG_KEEP_ALIVE_MODE) && (USB_DEVICE_CONFIG_KEEP_ALIVE_MODE > 0U) && \
|
||||
defined(FSL_FEATURE_USB_KHCI_USB_RAM) && (FSL_FEATURE_USB_KHCI_USB_RAM > 0U)
|
||||
s_waitForDataReceive = 1;
|
||||
USB0->INTEN &= ~USB_INTEN_SOFTOKEN_MASK;
|
||||
s_comOpen = 1;
|
||||
usb_echo("USB_APP_CDC_DTE_ACTIVATED\r\n");
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* DTE_DEACTIVATED */
|
||||
if (1 == s_UsbDeviceComposite->attach)
|
||||
{
|
||||
s_UsbInterface4CicVcom.startTransactions = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case kUSB_DeviceCdcEventSendBreak:
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief Notifies application layer about set configuration event.
|
||||
*
|
||||
* @param handle Handle to USB device class.
|
||||
* @param configuration_idx Id of device configuration.
|
||||
* @return usb_status_t Always return kStatus_USB_Success value.
|
||||
*/
|
||||
usb_status_t USB_DeviceInterface4CicVcomSetConfiguration(class_handle_t handle, uint8_t configuration_idx)
|
||||
{
|
||||
/* Schedule buffer for receive */
|
||||
USB_DeviceCdcAcmRecv(s_UsbInterface4CicVcom.cdcAcmHandle, USB_DIC_VCOM_OUT_ENDPOINT, s_currRecvBuf,
|
||||
g_UsbDeviceInterface5DicVcomSetting0DefaultEndpoints[USB_DIC_VCOM_OUT_ENDPOINT_INDEX].maxPacketSize);
|
||||
|
||||
return kStatus_USB_Success;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief Notifies application layer about set configuration event.
|
||||
*
|
||||
* @param class_handle_t Handle to USB device class.
|
||||
* @param alternateSetting Id of device alternative setting.
|
||||
* @return usb_status_t Always return kStatus_USB_Success value.
|
||||
*/
|
||||
usb_status_t USB_DeviceInterface4CicVcomSetInterface(class_handle_t handle, uint8_t alternateSetting)
|
||||
{
|
||||
return kStatus_USB_Success;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief Notifies application layer about set configuration event.
|
||||
*
|
||||
* @param class_handle_t Handle to USB device class.
|
||||
* @param alternateSetting Id of device alternative setting.
|
||||
* @return usb_status_t Always return kStatus_USB_Success value.
|
||||
*/
|
||||
usb_status_t USB_DeviceInterface5DicVcomSetInterface(class_handle_t handle, uint8_t alternateSetting)
|
||||
{
|
||||
return kStatus_USB_Success;
|
||||
}
|
||||
|
||||
/*!
|
||||
* @brief Initializes device structure and buffer pointers.
|
||||
*
|
||||
* @param *device Pointer to structure to initialize to.
|
||||
* @return usb_status_t Always return kStatus_USB_Success value.
|
||||
*/
|
||||
usb_status_t USB_DeviceInterface4CicVcomInit(usb_device_composite_struct_t *deviceComposite)
|
||||
{
|
||||
s_UsbDeviceComposite = deviceComposite;
|
||||
s_UsbInterface4CicVcom.cdcAcmHandle = s_UsbDeviceComposite->interface4CicVcomHandle;
|
||||
return kStatus_USB_Success;
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
/*
|
||||
* Copyright 2015-2016, Freescale Semiconductor, Inc.
|
||||
* Copyright 2016-2021 NXP
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this list
|
||||
* of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice, this
|
||||
* list of conditions and the following disclaimer in the documentation and/or
|
||||
* other materials provided with the distribution.
|
||||
*
|
||||
* 3. Neither the name of copyright holder nor the names of its
|
||||
* contributors may be used to endorse or promote products derived from this
|
||||
* software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef __USB_DEVICE_INTERFACE_4_CIC_VCOM_H__
|
||||
#define __USB_DEVICE_INTERFACE_4_CIC_VCOM_H__
|
||||
|
||||
/*******************************************************************************
|
||||
* Definitions
|
||||
******************************************************************************/
|
||||
|
||||
/*!
|
||||
* @brief Interface task function.
|
||||
*/
|
||||
void USB_DeviceInterface4CicVcomTask(void);
|
||||
|
||||
#endif /* __USB_DEVICE_INTERFACE_4_CIC_VCOM_H__ */
|
Loading…
Reference in New Issue