NXP
USB C Multiport Adapter集成了一颗LPC11U35的Cortex-M0单片机,MCU LPC11U35作为一个核心的微控制器,负责整个系统的控制,其主要功能包括以下几个部分:
通过SPI接口实现对PD PDY的控制,主要实现了PD应用层的协议。
通过PD PHY1实现与电脑的通讯,申请Display port视频数据和USB数据,获得电脑电源规格的信息,并做相应的处理;
通过PD PHY2实现与电源适配器的通讯,作为与电脑和电源适配器进行电源规格交流的桥梁,并作相应的处理。
检测VBUS和VBUS_CHARGE的电压,并作相应的处理。
通过SPI通讯,控制PD PHY的IO输出来控制负载开关的开通和关闭。
通过IO来控制模拟开关开通和切断SBU/AUX。
实现USB Billboard功能及DFU(在线程序升级)功能。
从原理图可以看到,板子上集成了一颗红色LED,使用LPC11U35的P0_13控制
下面写一个简单的全程控制红色的LED闪烁
打开Keil uVision5新建一个LPC11U35 test的工程
单片机选择LPC11U35FHI33/501
勾选CMSMS下边的CORE和Device下边的Startup
生成的项目文件如下
在Source Group1里添加3个文件
LED.h
#include
"LPC11Uxx.h"
// Device header
/* LEDs: P1.13*/
extern int32_t LED_Initialize (void) ; extern int32_t LED_On (void) ; extern int32_t LED_Off (void) ; extern int32_t LED_SetOut(uint32_t value) ; extern uint32_t LED_GetCount (void) ;
|
LED.c
#include
"LPC11Uxx.h"
// Device header
#define
LED_BIT
(1UL << 13)
/* LEDs: P1.13*/
int32_t LED_Initialize (void) {
LPC_SYSCON->SYSAHBCLKCTRL |= ((1UL <<
6) | /* enable clock for GPIO */
(1UL << 16) ); /* enable clock for IOCON */
LPC_IOCON->TDO_PIO0_13 =
((1UL << 0) |
/* select GPIO
function
*/
(1UL << 7)
); /* keep reserved values
*/
LPC_GPIO->DIR[0] |=
LED_BIT;
/* configure
PINs as Output
*/ LPC_GPIO->SET[0] |=
LED_BIT; /* switch LEDs off
*/
return 0; } int32_t LED_On (void) {
LPC_GPIO->CLR[0] = LED_BIT; /* LED On
*/ return 0; } int32_t LED_Off (void) {
LPC_GPIO->SET[0] = LED_BIT; /* LED Off */ return 0; } int32_t LED_SetOut(uint32_t value) { if (value) { LED_On (); } else { LED_Off(); } return 0; } uint32_t LED_GetCount (void) { return LED_BIT; } |
main.c
#include
"LPC11Uxx.h"
// Device header #include
"LED.h"
//
uint8_t dir = 0;
void delay(int32_t delay) { uint32_t i; while(delay--) for(i=0;i<65500;i++); } /*---------------------------------------------------------------------------- Main function *----------------------------------------------------------------------------*/ int main (void) {
SystemCoreClockUpdate();
LED_Initialize();
/* LED Initialization
*/
while (1) {
LED_SetOut(dir);
dir = !dir;
delay(10); } } |
PIO0_13的配置和其它I/O口有所不同,LPC_IOCON->TDO_PIO0_13的0~2应该设置成0x01
LPC_IOCON->TDO_PIO0_13 = ((1UL << 0) |
/* select GPIO function
*/
(1UL << 7)
); /* keep reserved values
*/
编译成功后下载程序到评估板就可以看到LED闪烁的速度比原来快了
Jlink连接到评估板
(下载次数: 0, 2016-4-12 14:37 上传)