需要准备的东西
【0】. DA14580DEVKT-B评估板和USB数据线;
【1】. Keil MDK5;
【2】. Jlink驱动软件(电脑安装了Jlink驱动软件以后,USB数据线连接评估板插入电脑才能显示Jlink和相应的串口);
【3】.官方的SDK 目前选用的是DA14580_SDK 5.0.4(DA14580_SDK 5.0.4.rar)
【4】. 裸机评估板准备两份文档DA14580的数据手册和该评估板的电路原理图,这个官网都有的,需要注册账号,然后下载即可;
本次调试的内容就是简单的跑一个DA14580 SDK中的Demo工程,一般开发板跑的基本测试程序都是GPIO的基本操作-LED灯的操作;正好DA14580 SDK中有一个这样的基础Demo工程,解压SDK(DA14580_SDK 5.0.4.rar),在SDK解压目录DA1458x_SDK\5.0.4\projects\target_apps\peripheral_examples下有一个blinky目录,这个就是基础的GPIO操作的Demo工程,网上基础入门的Demo工程就是这个,我们使用Keil5打开这个工程,
DA14580芯片介绍
ARM Cortex-M0 处理器 16MHz频率
内部集成专用链路处理器
内部集成AES-128位加密处理器
32KB OTP闪存;
42KB SRAM;
84KB ROM;
8KB Retention SRAM(保留);
GPIO P0(8个引脚), P1(6个引脚),P2(10个引脚),P3(8个引脚);
串口 2个;
SPI+接口;
I2C接口;
GPIO 操作的相关定义:
typedef enum {
INPUT = 0,
INPUT_PULLUP = 0x100,
INPUT_PULLDOWN = 0x200,
OUTPUT = 0x300,
} GPIO_PUPD;
typedef enum {
GPIO_POWER_RAIL_3V = 0,
GPIO_POWER_RAIL_1V = 1,
} GPIO_POWER_RAIL;
typedef enum {
GPIO_PORT_0 = 0,
GPIO_PORT_1 = 1,
GPIO_PORT_2 = 2,
GPIO_PORT_3 = 3,
GPIO_PORT_3_REMAP = 4,
} GPIO_PORT;
typedef enum {
GPIO_PIN_0 = 0,
GPIO_PIN_1 = 1,
GPIO_PIN_2 = 2,
GPIO_PIN_3 = 3,
GPIO_PIN_4 = 4,
GPIO_PIN_5 = 5,
GPIO_PIN_6 = 6,
GPIO_PIN_7 = 7,
GPIO_PIN_8 = 8,
GPIO_PIN_9 = 9,
} GPIO_PIN;
typedef enum {
PID_GPIO = 0,
PID_UART1_RX,
PID_UART1_TX,
PID_UART2_RX,
PID_UART2_TX,
PID_SPI_DI,
PID_SPI_DO,
PID_SPI_CLK,
PID_SPI_EN,
PID_I2C_SCL,
PID_I2C_SDA,
PID_UART1_IRDA_RX,
PID_UART1_IRDA_TX,
PID_UART2_IRDA_RX,
PID_UART2_IRDA_TX,
PID_ADC,
PID_PWM0,
PID_PWM1,
PID_BLE_DIAG,
PID_UART1_CTSN,
PID_UART1_RTSN,
PID_UART2_CTSN,
PID_UART2_RTSN,
PID_PWM2,
PID_PWM3,
PID_PWM4,
} GPIO_FUNCTION;
typedef enum {
GPIO_IRQ_INPUT_LEVEL_HIGH = 0,
GPIO_IRQ_INPUT_LEVEL_LOW = 1,
} GPIO_IRQ_INPUT_LEVEL;
// GPIO base address
#define GPIO_BASE P0_DATA_REG
/*===========================================================================*/
/* memory map GPIO */
/*===========================================================================*/
#define P0_DATA_REG (0x50003000) /* P0 Data input / output register */
#define P0_SET_DATA_REG (0x50003002) /* P0 Set port pins register */
#define P0_RESET_DATA_REG (0x50003004) /* P0 Reset port pins register */
#define P00_MODE_REG (0x50003006) /* P00 Mode Register */
#define P01_MODE_REG (0x50003008) /* P01 Mode Register */
#define P02_MODE_REG (0x5000300A) /* P02 Mode Register */
#define P03_MODE_REG (0x5000300C) /* P03 Mode Register */
#define P04_MODE_REG (0x5000300E) /* P04 Mode Register */
#define P05_MODE_REG (0x50003010) /* P05 Mode Register */
#define P06_MODE_REG (0x50003012) /* P06 Mode Register */
#define P07_MODE_REG (0x50003014) /* P07 Mode Register */
#define P1_DATA_REG (0x50003020) /* P1 Data input / output register */
#define P1_SET_DATA_REG (0x50003022) /* P1 Set port pins register */
#define P1_RESET_DATA_REG (0x50003024) /* P1 Reset port pins register */
#define P10_MODE_REG (0x50003026) /* P10 Mode Register */
#define P11_MODE_REG (0x50003028) /* P11 Mode Register */
#define P12_MODE_REG (0x5000302A) /* P12 Mode Register */
#define P13_MODE_REG (0x5000302C) /* P13 Mode Register */
#define P14_MODE_REG (0x5000302E) /* P14 Mode Register */
#define P15_MODE_REG (0x50003030) /* P15 Mode Register */
#define P2_DATA_REG (0x50003040) /* P2 Data input / output register */
#define P2_SET_DATA_REG (0x50003042) /* P2 Set port pins register */
#define P2_RESET_DATA_REG (0x50003044) /* P2 Reset port pins register */
#define P20_MODE_REG (0x50003046) /* P20 Mode Register */
#define P21_MODE_REG (0x50003048) /* P21 Mode Register */
#define P22_MODE_REG (0x5000304A) /* P22 Mode Register */
#define P23_MODE_REG (0x5000304C) /* P23 Mode Register */
#define P24_MODE_REG (0x5000304E) /* P24 Mode Register */
#define P25_MODE_REG (0x50003050) /* P25 Mode Register */
#define P26_MODE_REG (0x50003052) /* P26 Mode Register */
#define P27_MODE_REG (0x50003054) /* P27 Mode Register */
#define P28_MODE_REG (0x50003056) /* P28 Mode Register */
#define P29_MODE_REG (0x50003058) /* P29 Mode Register */
#define P01_PADPWR_CTRL_REG (0x50003070) /* Ports 0 and 1 Output Power Control Register */
#define P2_PADPWR_CTRL_REG (0x50003072) /* Port 2 Output Power Control Register */
#define P3_PADPWR_CTRL_REG (0x50003074) /* Port 3 Output Power Control Register */
#define P3_DATA_REG (0x50003080) /* P3 Data input / output register */
#define P3_SET_DATA_REG (0x50003082) /* P3 Set port pins register */
#define P3_RESET_DATA_REG (0x50003084) /* P3 Reset port pins register */
#define P30_MODE_REG (0x50003086) /* P30 Mode Register */
#define P31_MODE_REG (0x50003088) /* P31 Mode Register */
#define P32_MODE_REG (0x5000308A) /* P32 Mode Register */
#define P33_MODE_REG (0x5000308C) /* P33 Mode Register */
#define P34_MODE_REG (0x5000308E) /* P34 Mode Register */
#define P35_MODE_REG (0x50003090) /* P35 Mode Register */
#define P36_MODE_REG (0x50003092) /* P36 Mode Register */
#define P37_MODE_REG (0x50003094) /* P37 Mode Register */