测试NXP USB C Multiport Adapter评估板的单片机
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应该设置成0x01LPC_IOCON->TDO_PIO0_13 = ((1UL << 0) | /* select GPIO function */(1UL << 7) ); /* keep reserved values */编译成功后下载程序到评估板就可以看到LED闪烁的速度比原来快了Jlink连接到评估板