95 lines
2.9 KiB
C
95 lines
2.9 KiB
C
/*
|
|
* Copyright (c) 2013 - 2015, Freescale Semiconductor, Inc.
|
|
* Copyright 2016-2017 NXP
|
|
* All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#include "fsl_device_registers.h"
|
|
#include "fsl_debug_console.h"
|
|
#include "pin_mux.h"
|
|
#include "board.h"
|
|
|
|
#include "usb.h"
|
|
#include "usb_device.h"
|
|
#include "usb_device_config.h"
|
|
#include <stdbool.h>
|
|
#include "fsl_power.h"
|
|
#include "fsl_component_serial_port_usb.h"
|
|
/*******************************************************************************
|
|
* Definitions
|
|
******************************************************************************/
|
|
|
|
|
|
/*******************************************************************************
|
|
* Prototypes
|
|
******************************************************************************/
|
|
void USB_DeviceClockInit(void);
|
|
|
|
/*******************************************************************************
|
|
* Code
|
|
******************************************************************************/
|
|
|
|
void USB_DeviceClockInit(void)
|
|
{
|
|
#if defined(USB_DEVICE_CONFIG_LPCIP3511FS) && (USB_DEVICE_CONFIG_LPCIP3511FS > 0U)
|
|
/* enable USB IP clock */
|
|
CLOCK_EnableUsbfs0DeviceClock(kCLOCK_UsbfsSrcFro, CLOCK_GetFroHfFreq());
|
|
#if (((defined(USB_DEVICE_CONFIG_LPCIP3511FS)) && (USB_DEVICE_CONFIG_LPCIP3511FS > 0U)) || \
|
|
((defined(USB_DEVICE_CONFIG_LPCIP3511HS)) && (USB_DEVICE_CONFIG_LPCIP3511HS > 0U)))
|
|
#if defined(FSL_FEATURE_USBHSD_USB_RAM) && (FSL_FEATURE_USBHSD_USB_RAM)
|
|
for (int i = 0; i < FSL_FEATURE_USBHSD_USB_RAM; i++)
|
|
{
|
|
((uint8_t *)FSL_FEATURE_USBHSD_USB_RAM_BASE_ADDRESS)[i] = 0x00U;
|
|
}
|
|
#endif
|
|
#endif
|
|
|
|
#endif
|
|
}
|
|
|
|
/*!
|
|
* @brief Main function
|
|
*/
|
|
int main(void)
|
|
{
|
|
char ch;
|
|
|
|
/* Init board hardware. */
|
|
/* set BOD VBAT level to 1.65V */
|
|
POWER_SetBodVbatLevel(kPOWER_BodVbatLevel1650mv, kPOWER_BodHystLevel50mv, false);
|
|
/* attach 12 MHz clock to FLEXCOMM0 (debug console) */
|
|
CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);
|
|
BOARD_InitBootPins();
|
|
BOARD_InitBootClocks();
|
|
BOARD_InitDebugConsole();
|
|
#if !defined(DONT_ENABLE_FLASH_PREFETCH)
|
|
/* enable flash prefetch for better performance */
|
|
SYSCON->FMCCR |= SYSCON_FMCCR_PREFEN_MASK;
|
|
#endif
|
|
|
|
POWER_DisablePD(kPDRUNCFG_PD_USB0_PHY); /*< Turn on USB Phy */
|
|
CLOCK_SetClkDiv(kCLOCK_DivUsb0Clk, 1, false);
|
|
CLOCK_AttachClk(kFRO_HF_to_USB0_CLK);
|
|
/* enable usb0 host clock */
|
|
CLOCK_EnableClock(kCLOCK_Usbhsl0);
|
|
/*According to reference mannual, device mode setting has to be set by access usb host register */
|
|
*((uint32_t *)(USBFSH_BASE + 0x5C)) |= USBFSH_PORTMODE_DEV_ENABLE_MASK;
|
|
/* disable usb0 host clock */
|
|
CLOCK_DisableClock(kCLOCK_Usbhsl0);
|
|
|
|
/* Initialize the debug console as CDC virtual com. */
|
|
USB_DeviceClockInit();
|
|
DbgConsole_Init((uint8_t)kSerialManager_UsbControllerLpcIp3511Fs0, (uint32_t)NULL, kSerialPort_UsbCdc,
|
|
(uint32_t)NULL);
|
|
|
|
PRINTF("hello world.\r\n");
|
|
|
|
while (1)
|
|
{
|
|
ch = GETCHAR();
|
|
PUTCHAR(ch);
|
|
}
|
|
}
|