tinyusb  0.4
Click here to lend your support to tinyusb donation and make a donation at pledgie.com
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
board_lpc4357usb.c
Go to the documentation of this file.
1 /**************************************************************************/
37 /**************************************************************************/
38 
39 #include "../board.h"
40 
41 #if BOARD == BOARD_LPC4357USB
42 
43 #define BOARD_UART_PORT (LPC_USART0)
44 #define BOARD_UART_PIN_PORT (0x0F)
45 #define BOARD_UART_PIN_TX (10) // PF.10 : UART0_TXD
46 #define BOARD_UART_PIN_RX (11) // PF.11 : UART0_RXD
47 
48 #define BOARD_LED0_PORT (0x0C)
49 #define BOARD_LED0_PIN (2) // PC.2 = User LED
50 #define BOARD_LED0_FUNCTION (4) // GPIO multiplexed as function 4 on PC.2
51 #define BOARD_LED0_GPIO_PORT (6)
52 #define BOARD_LED0_GPIO_PIN (1) // PC.2 = GPIO 6[1]
53 
54 void board_init(void)
55 {
56  CGU_Init();
57 
58  /* Setup the systick time for 1ms ticks */
59  SysTick_Config(CGU_GetPCLKFrequency(CGU_PERIPHERAL_M4CORE) / TUSB_CFG_TICKS_HZ);
60 
61  /* Configure LED0 as GPIO */
62  scu_pinmux(BOARD_LED0_PORT, BOARD_LED0_PIN, MD_PDN, BOARD_LED0_FUNCTION);
63  GPIO_SetDir(BOARD_LED0_GPIO_PORT, (1 << BOARD_LED0_GPIO_PIN), 1);
64 
65  /* Configure TRACE pins */
66  scu_pinmux(0xF, 4, MD_PDN, 0x2); /* PF_4 = TRACECLK */
67  scu_pinmux(0x7, 4, MD_PDN, 0x5); /* P7_4 = TRACEDATA[0] */
68  scu_pinmux(0x7, 5, MD_PDN, 0x5); /* P7_5 = TRACEDATA[1] */
69  scu_pinmux(0x7, 6, MD_PDN, 0x5); /* P7_6 = TRACEDATA[2] */
70  scu_pinmux(0x7, 7, MD_PDN, 0x5); /* P7_7 = TRACEDATA[3] */
71 
72  // USB0 Power: EA4357 channel B U20 GPIO26 active low (base board), P2_3 on LPC4357
73  scu_pinmux(0x2, 3, MD_PUP | MD_EZI, FUNC7); // USB0 VBus Power
74 
75  // 1.5Kohm pull-up resistor is needed on the USB DP data signal. GPIO28 (base), P9_5 (LPC4357) controls
76  //scu_pinmux(0x9, 5, MD_PUP|MD_EZI|MD_ZI, FUNC4); // GPIO5[18]
77  //GPIO_SetDir(5, BIT_(18), 1); // output
78  //GPIO_ClearValue(5, BIT_(18));
79 
80  /* Init I2C @ 400kHz */
81  I2C_Init(LPC_I2C0, 400000);
82  I2C_Cmd(LPC_I2C0, ENABLE);
83 
84 #if CFG_UART_ENABLE
85  //------------- UART init -------------//
86  scu_pinmux(BOARD_UART_PIN_PORT, BOARD_UART_PIN_TX, MD_PDN , FUNC1);
87  scu_pinmux(BOARD_UART_PIN_PORT, BOARD_UART_PIN_RX, MD_PLN|MD_EZI|MD_ZI, FUNC1);
88 
89  UART_CFG_Type UARTConfigStruct;
90  UART_ConfigStructInit(&UARTConfigStruct);
91  UARTConfigStruct.Baud_rate = CFG_UART_BAUDRATE;
92  UARTConfigStruct.Clock_Speed = 0;
93 
94  UART_Init(BOARD_UART_PORT, &UARTConfigStruct);
95  UART_TxCmd(BOARD_UART_PORT, ENABLE); // Enable UART Transmit
96 #endif
97 }
98 
99 //--------------------------------------------------------------------+
100 // LEDS
101 //--------------------------------------------------------------------+
102 void board_leds(uint32_t on_mask, uint32_t off_mask)
103 {
104  if (on_mask & 0x01)
105  {
106  LPC_GPIO_PORT->SET[BOARD_LED0_GPIO_PORT] = (1 << BOARD_LED0_GPIO_PIN);
107  }
108 
109  if (off_mask & 0x01)
110  {
111  LPC_GPIO_PORT->CLR[BOARD_LED0_GPIO_PORT] = (1 << BOARD_LED0_GPIO_PIN);
112  }
113 }
114 
115 //--------------------------------------------------------------------+
116 // UART
117 //--------------------------------------------------------------------+
118 #if CFG_UART_ENABLE
119 uint32_t board_uart_send(uint8_t *buffer, uint32_t length)
120 {
121  return UART_Send(BOARD_UART_PORT, buffer, length, BLOCKING);
122 }
123 
124 uint32_t board_uart_recv(uint8_t *buffer, uint32_t length)
125 {
126  return UART_Receive(BOARD_UART_PORT, buffer, length, BLOCKING);
127 }
128 #endif
129 
130 #endif
void board_init(void)
Initialize all required peripherals on board including uart, led, buttons etc ... ...
void board_leds(uint32_t on_mask, uint32_t off_mask)
Turns on and off leds on the board.
#define TUSB_CFG_TICKS_HZ
The rate ticks in hert. This is used in conjunction with tusb_tick_get to calculate timing...
#define CFG_UART_BAUDRATE
Baudrate for UART.
Definition: board.h:119