[原创] 测试NXP USB C Multiport Adapter评估板的单片机

littleshrimp   2016-4-12 14:38 楼主


NXP USB C Multiport Adapter集成了一颗LPC11U35Cortex-M0单片机,MCU LPC11U35作为一个核心的微控制器,负责整个系统的控制,其主要功能包括以下几个部分:

通过SPI接口实现对PD PDY的控制,主要实现了PD应用层的协议。

通过PD PHY1实现与电脑的通讯,申请Display port视频数据和USB数据,获得电脑电源规格的信息,并做相应的处理;

通过PD PHY2实现与电源适配器的通讯,作为与电脑和电源适配器进行电源规格交流的桥梁,并作相应的处理。

 检测VBUSVBUS_CHARGE的电压,并作相应的处理。

 通过SPI通讯,控制PD PHYIO输出来控制负载开关的开通和关闭。

 通过IO来控制模拟开关开通和切断SBU/AUX

 实现USB Billboard功能及DFU(在线程序升级)功能。

 

从原理图可以看到,板子上集成了一颗红色LED,使用LPC11U35P0_13控制

下面写一个简单的全程控制红色的LED闪烁

打开Keil uVision5新建一个LPC11U35 test的工程

单片机选择LPC11U35FHI33/501

勾选CMSMS下边的COREDevice下边的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_130~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, 2016-4-12 14:37 上传)

虾扯蛋,蛋扯虾,虾扯蛋扯虾

回复评论 (3)


虾扯蛋,蛋扯虾,虾扯蛋扯虾
点赞  2016-4-12 14:45
好高级
HELLO_WATER
点赞  2016-4-12 15:22
不错,我想问一下,修改单片机会不会影响整个模块的功能
tbool.taobao.com学习交流
点赞  2016-4-16 10:56
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复