Overview
==================================
C2000 SysConfig is a powerful graphical user interface tool which configures the
C2000 Real-Time Control MCUs and auto-generates embedded software,
visualization diagrams, and debug artifacts.
The reliable and validated initialization software generated by the C2000
SysConfig tool can significantly speed up development and help designers avoid
lengthy debug sessions.
Please review these resources for additional information:
* [C2000 SysConfig (Software Guide)](https://software-dl.ti.com/C2000/docs/software_guide/c2000_sysconfig.html)
* [C2000 SysConfig (Application Note)](https://ti.com/lit/spracx3)
* SysConfig Development Tool for C2000 real-time MCUs (Video Series)
* [Speed Up Development with C2000 Real-Time MCUs Using SysConfig (White Paper)](https://ti.com/lit/spry341)
Features
=======================================
• **System initialization code generation:** C2000 SysConfig generates initialization
code for the C2000 device including peripheral initialization, interrupt
initialization, PinMux initialization, and so forth.
• **Device PinMux visualization:** A visual representation of the device and all of
its pins, a list of all possible PinMux options, your selected mode for each
pin, and a summary PinMux CSV file is supported by the tool.
• **Error detection:** C2000 SysConfig is capable of catching configuration errors
and notifying you of the incorrect setup.
• **Device level dependency identification:** C2000 SysConfig identifies the
dependencies in the device and ensures that the dependent peripherals are all
configured by you.
• **Device level error detection:** Device level configuration errors caused by
dependent peripherals are caught and you are notified of the error.
• **Portable device initialization:** Device initialization settings are portable
between device families and device packages.
C2000 SysConfig GUI Overview
==================================
Below is a visual representation of SysConfig. The following sections within this module go into the individual components of this tool.
Peripheral Selection
-----------------------------------
Within this section of SysConfig is a list of peripherals available to be
configured for the specified device. The SysConfig tool automatically keeps
track of how many instances of a peripheral there are for the specified device
package.
* To add a peripheral click on the '+' sign next to the peripheral name.
Below is a subset of peripherals that are shown within the 'Peripheral' section:
Peripheral Configuration
-----------------------------------
Within this section are the configurable options for a chosen peripheral. This consists of an interactive GUI where options can be selected and deselected.
* Hovering over an option provides a description of the item.
* For peripherals that have a **'PinMux Peripheral and Pin Configuration'** submodule, be sure to also reference the 'PinMux' diagram for a visual representation of which pins are being chosen. This is tied to the specific package of the specified device. More details can be found within the 'PinMux' section of this module.
* For peripherals that have a **'Global Parameters Settings that affect all instances'** submodule, anything configured within this part will affect all chosen instances.
Problems
-----------------------------------
This section will showcase any errors, warnings, and informational notes that pertain to the specific configuration setup.
* **Errors**:
* Highlight any issues against device specifications or configuration.
* Will prevent the project from building
* **Warnings**:
* Generated as needed when a configuration is not necessarily wrong, but requires further attention.
* Can be dismissed if desired
* **Suppressed**:
* Shows what errors, warnings, or information have been dismissed
* **Infos**:
* Additional information to be cautious about as you are configuring a certain peripheral
* Can be dismissed if desired
Additional information:
* Some peripherals may need the informational notes and warnings to be enabled. If so this will be located within the **'Global Parameters Settings that affect all instances'** section.
* Errata notices are also showcased through the SysConfig tool either through warnings or errors
* Incorrect setups can be detected across dependent modules
* If errors, warnings, or infos are generated, the location and details of the error will be displayed within the 'Problems' section as well as in the incorrect setup location.
* All errors need to be resolved in order to generate any code files
This section of SysConfig can be hidden/shown using the 'info circle' icon located on the top right corner.
Generated Files
-----------------------------------
Within this pane is the generated code specific to the configuration that is setup.
* **board.c** : This file contains the initialization code for each module including PinMux. Open this as you are configuring peripherals to view changes in real-time. The lines of code will be highlighted 'red' if a configuration change causes those lines to be removed or modified. The new lines will be highlighted in green. This is a good representation of how the GUI options translate to actual code.
* An all inclusive function named `Board_init` is available which initializes all module. You can choose to call the individual `Module_init` functions in their application, or you can use the `Board_init` function to use all modules. You can also choose to add `PinMux_init` to your application code to use only the PinMux initialization feature of the tool.
* **board.h** : This file contains the prototypes for all generated functions in the board.c file along with the re-namings of the modules for their specific application. Also, the GPIO number assigned for each PinMux option along with more information on each peripheral's configuration is included.
* **pinmux.csv** : This file contains a list of all of the pin numbers, names, selected mode, and muxing options on the device (specific to the package chosen).
* **.dot** : Some IP have graphical files that end in a '.dot' extension. If a peripheral with this capability is selected then the .dot file will appear as a generated file.
* **untitled.sysconfig** : Your settings for C2000 SysConfig and all other tools configured in the SysConfig GUI are saved in a syscfg file. The changes made to this file as you modify the configurable options can be viewed similar to any other auto-generated file in SysConfig. The SysConfig script saves the settings for all options selected by you.
Below is an example of how the board.c file changes real-time with a change in the GUI. In this case, the ADC Interrupt 1 was enabled.
This section of SysConfig can be hidden/shown using the 'code brackets' icon located on the top right corner.
PinMux
-----------------------------------
Knowing which peripherals and pins have been used and which ones are free is
extremely important in determining if the MCU is capable of all of the
application's requirements. SysConfig has built-in support for device PinMux,
is able to solve the device PinMux, and auto-generates PinMux initialization
code along with a summary CSV file. C2000 SysConfig will also visualize the
device package and show the used and free package pins.
Within this pane you can view the pinmux mapping of the device's package. The
color coding scheme can be found within the middle of the diagram. Below the
diagram will be the number of GPIOs used and how many are available.
* Naming of the device resources to an application specific name is also
possible through SysConfig. This allows the initialization code and the
runtime application code to be much more flexible to changes in PinMux and
resource instances. For example, if there needs to be a change to the GPIO
number used for a task in the application, no change would be necessary to
the runtime application code if the task GPIO was named through C2000
SysConfig.
* Each pin that gets configured through the **'PinMux Peripheral and Pin
Configuration'** section can be **Locked** and **Unlocked**. This is
represented by the lock to the right of the configurable setting. If there
is a lock that means the section is considered locked as well. If there is
no lock that means the selection returns to 'Any' instance/pin and allows
the solver to solve for new solutions as needed.
* The three dots on the top right corner are to set the 'Preferences and
Actions'. This is where the device pin labels can be changed to only show
the device pin name, the pin number, or both. Within this view is also the
option to 'Lock' the PinMux. Selecting this option locks the pinmux for
all of the peripherals with pinmux capabilities.
This view can be hidden/shown using the 'device pinmux' icon located on the top right corner.
C2000 SysConfig - Getting Started
==================================
C2000 SysConfig is delivered through [C2000Ware (C2000 real-time MCU software development kit)](https://www.ti.com/tool/C2000WARE) and can be used with [Code Composer Studio (CCS)](https://www.ti.com/tool/CCSTUDIO) IDE's built-in SysConfig (System Configuration) tool or with any other supported IDE through the [SysConfig tool's standalone version](https://www.ti.com/tool/SYSCONFIG).
SysConfig in Driverlib Examples
---------------------------------
Most driverlib examples in C2000Ware have either an example.syscfg file or you can add a file with the .syscfg extension. Double clicking and opening the .syscfg file launches the C2000 SysConfig tool.
To get started with C2000 SysConfig, import an existing example with C2000 SysConfig support.
1. Launch CCS and import the example
* Select `Project -> Import CCS Project`
* Browse to `C2000Ware_VERSION\driverlib\device\examples\c28x\peripheral\CCS`
* Select the .projectspec file for the project and import it
2. Inside your CCS project you should be able to see the .syscfg file along with the rest of the application files
3. Double click on the .syscfg file and the C2000 SysConfig GUI will launch.
* Note: You can also right-click on the syscfg file, the select `Open With -> SysConfig Editor`
4. The C2000 SysConfig GUI should be launched inside CCS
For more in-depth details about the generated files after building a project or the application code, etc. please refer to the [C2000 SysConfig](https://ti.com/lit/SPRACX3) application report.
Adding SysConfig Support to Existing Projects
---------------------------------
Follow these steps to check if the C2000 project properties are set up for C2000 SysConfig development:
1. Right-click on the project and select `Properties`.
2. In the left panel of the project properties, under the `Build category`, check to see if the SysConfig options are available.
3. If the SysConfig option is available under Build, SysConfig is enabled for your project.
If the SysConfig module is not enabled in your project, follow these steps to enable it:
1. Add an empty file of the syscfg file type named "empty.syscfg" to the project by copying the file into the project or creating a new file in the project.
2. CCS will ask whether or not to enable SysConfig. Accept and select Yes.
After the SysConfig feature has been enabled, you can change the settings inside the project properties to select C2000 SysConfig and choose your specific device package/part by following the steps [here](https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/910829/faq-how-do-i-add-sysconfig-support-pinmux-and-peripheral-initialization-to-an-existing-driverlib-project).
----------------------------------------------------------------
[[d! Feedback
Please provide any feedback you may have about the content within C2000 Academy to:
]]