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连接到评估板
test.rar
(5.95 KB, 下载次数: 0)