Table of Contents
Introduction
Because of the sheer complexity of the F2837xD devices, it is not uncommon for new users to have trouble bringing up the device the first time. This guide aims to give you, the user, a step by step guide for how to create and debug projects from scratch. This guide will focus on the user of an F2837xD control card, but these same ideas should apply to other boards with minimal translation.
Project Creation
Step_1 Create a new ccs project
Step_2 verify your device is connected to which port
Go to the device manager and check port
Step_3 Verify your device is connected or Not
Step_4 Include the required driver to project
In my system project location located below path
C:\ti\C2000Ware_3_04_00_00_Software\device_support\f2837xd\common
C:\ti\C2000Ware_3_04_00_00_Software\device_support\f2837xd\headers
Step_5 Create driver folder to save drivers
Step_6 Copy and past fallowing library files into the created Drivers folder
device.c
device.h
driverlib.h
F2837xD_CodeStartBranch.asm
You can Find those files in following path location
- C:\ti\C2000Ware_3_04_00_00_Software\device_support\f2837xd\common\source
- C:\ti\C2000Ware_3_04_00_00_Software\device_support\f2837xd\common\include
Step_7 Add driver lib.lib file to the project
Path location
C:\ti\C2000Ware_3_04_00_00_Software\driverlib\f2837xd\driverlib\ccs\debug
Step_8 Include all these added files to the project
Step_9 Add predefined symbols to the project
Step_10 Create main.c file and execute your code
/*
* main.c
*
* Created on: 25-Nov-2021
* Author: Admin
*/
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "F28x_Project.h"
#include "F2837xD_device.h"
#include "F2837xD_Examples.h"
#include "device.h"
#include "driverlib.h"
void gpio_init();
void main(void)
{
Device_init();
Device_initGPIO();
gpio_init();
while(1)
{
GPIO_writePin(DEVICE_GPIO_PIN_LED1, 1); // led1 mean GPIO 31
GPIO_writePin(DEVICE_GPIO_PIN_LED2, 1); // led1 mean GPIO 34
DEVICE_DELAY_US(1000000);
GPIO_writePin(DEVICE_GPIO_PIN_LED1, 0);
GPIO_writePin(DEVICE_GPIO_PIN_LED2, 0);
DEVICE_DELAY_US(1000000);
}
}
void gpio_init()
{
// config led 1
GPIO_setPinConfig(DEVICE_GPIO_PIN_LED1);
GPIO_setDirectionMode(DEVICE_GPIO_PIN_LED1, GPIO_DIR_MODE_OUT);
GPIO_setPadConfig(DEVICE_GPIO_PIN_LED1, GPIO_PIN_TYPE_STD);
GPIO_setMasterCore(DEVICE_GPIO_PIN_LED1, GPIO_CORE_CPU1);
// config led 2
GPIO_setPinConfig(DEVICE_GPIO_PIN_LED2);
GPIO_setDirectionMode(DEVICE_GPIO_PIN_LED2, GPIO_DIR_MODE_OUT);
GPIO_setPadConfig(DEVICE_GPIO_PIN_LED2, GPIO_PIN_TYPE_STD);
GPIO_setMasterCore(DEVICE_GPIO_PIN_LED2, GPIO_CORE_CPU1);
}
How to access gpio register in your project
Step_1 Include F2827xD_Headers_nonBIOS_cpu1
Path location
Step_2 Copy and past f2827XD_GlobalVariableDefs.c
This .c file contains all gpio registrars
Final Code Using Registers_Method_1
/*
* main.c
*
* Created on: 25-Nov-2021
* Author: Admin
*/
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "F28x_Project.h"
#include "F2837xD_device.h"
#include "F2837xD_Examples.h"
#include "device.h"
#include "driverlib.h"
void gpio_init();
void main(void)
{
Device_init();
Device_initGPIO();
gpio_init();
while(1)
{
GpioDataRegs.GPACLEAR.bit.GPIO31=1;
DEVICE_DELAY_US(1000000);
GpioDataRegs.GPASET.bit.GPIO31=1;
DEVICE_DELAY_US(1000000);;
}
}
void gpio_init()
{
// config led 1
GPIO_setPinConfig(DEVICE_GPIO_PIN_LED1);
GPIO_setDirectionMode(DEVICE_GPIO_PIN_LED1, GPIO_DIR_MODE_OUT);
GPIO_setPadConfig(DEVICE_GPIO_PIN_LED1, GPIO_PIN_TYPE_STD);
GPIO_setMasterCore(DEVICE_GPIO_PIN_LED1, GPIO_CORE_CPU1);
// config led 2
GPIO_setPinConfig(DEVICE_GPIO_PIN_LED2);
GPIO_setDirectionMode(DEVICE_GPIO_PIN_LED2, GPIO_DIR_MODE_OUT);
GPIO_setPadConfig(DEVICE_GPIO_PIN_LED2, GPIO_PIN_TYPE_STD);
GPIO_setMasterCore(DEVICE_GPIO_PIN_LED2, GPIO_CORE_CPU1);
}
Final Code Using Registers Method_2
/*
* main.c
*
* Created on: 25-Nov-2021
* Author: Admin
*/
#include "stdio.h"
#include "string.h"
#include "stdlib.h"
#include "F28x_Project.h"
#include "F2837xD_device.h"
#include "F2837xD_Examples.h"
#include "device.h"
#include "driverlib.h"
void gpio_init();
void main(void)
{
Device_init();
Device_initGPIO();
gpio_init();
while(1)
{
GpioDataRegs.GPBSET.bit.GPIO52 = 1;
DEVICE_DELAY_US(100000);
GpioDataRegs.GPBCLEAR.bit.GPIO52 = 1;
DEVICE_DELAY_US(100000);
}
}
void gpio_init()
{
EALLOW;
GpioCtrlRegs.GPBMUX2.bit.GPIO52 = 0; // 0=GPIO, 1=EPWM1A, 2=Resv, 3=Resv
GpioCtrlRegs.GPBDIR.bit.GPIO52=1; // 1=OUTput, 0=INput
GpioCtrlRegs.GPBCSEL3.bit.GPIO52=0; //xx00: CPU1 selected
// xx01: CPU1.CLA1 selected
// xx10: CPU2 selected
// xx11: CPU2.CLA1 selected
GpioCtrlRegs.GPBMUX2.bit.GPIO53 = 0; // 0=GPIO, 1=EPWM1A, 2=Resv, 3=Resv
GpioCtrlRegs.GPBDIR.bit.GPIO53=1; // 1=OUTput, 0=INput
GpioCtrlRegs.GPBCSEL3.bit.GPIO53=0; //xx00: CPU1 selected
// xx01: CPU1.CLA1 selected
// xx10: CPU2 selected
// xx11: CPU2.CLA1 selected
EDIS;
}