# MSP430 DriverLib 2.00.00.16

## Release Notes

Document Revision: 020615.1706

## Introduction

This is the MSP430 Peripheral Driver Library. This peripheral driver library's intent is to allow application development at an API level instead at the device register level. Allowing developers to concentrate on their applications instead of the nuances of the particular MSP430 device they are using.

This document is divided into the following sections:

- Documentation
- What's New
- Revision History
- Installation and Usage
- Device Support
- Peripheral Support
- Dependencies
- Validation Information
- Upgrade and Compatibility Information
- Examples
- Known Issues
- Versioning
- Technical Support and Product Updates

## Documentation

- MSP430ware Peripheral Driver Library API

- MSP430F5xx_6xx

- MSP430FR57xx

- MSP430FR5xx_6xx
- MSP430FR2xx_4xx
- MSP430i2xx

- MSP430ware Peripheral Driver Library User's Guides

- MSP430F5xx_6xx

- MSP430FR57xx

- MSP430FR5xx_6xx
- MSP430FR2xx_4xx
- MSP430i2xx

- Manifest
- License

## What's New

2.00.00.16

- This is a major release. We have removed all APIs that were deprecated in previous releases. We have also made some modifications to some of the existing APIs to be compliant with the new Texas Instruments coding standards. Please refer List of APIs Removed for details.
- Bugzilla issue (10587) fixed - Erroneous comments in rtc_ex1_countmode.c
- Bugzilla issue (5256) fixed - Comp_e_ex2_outputToggleVcompVsVref25V has invalid comments
- Bugzilla issue (5256) fixed - Minor comments update to MSP430FR5xx_6xx pmm_Reset_LPMx_5.c
- Bugzilla issue (10347) fixed - Timer_X_stop() functions optimized
- Bugzilla issue (7172) fixed - Updates to source code based on new header files updates for MSP430FR2xx_4xx rtc.c/rtc.h.
- Bugzilla issue (5661) fixed - MSP430FR2xx_4xx RTC_clearInterrupt implementation updated
- Bugzilla issue (10252) fixed - CS_LFXTClockFrequency/CS_HFXTClockFrequency should be prefixed with 'private' and be declared as static
- Bugzilla issue (10385) fixed - Documentation error - FlashCtrl refereed to as FLashCtl in User's guide
- Bugzilla issue (5021) fixed - Need higher resolution screen captures in the Driverlib User's guide
- Bugzilla issue (10383) fixed - Timer_A documentation to be updated with latest APIs instead of deprecated ones

## Revision History

1.97.00.19

- MSP430FR2xx_4xx references to XT2 have been removed.
- MSP430FR2xx_4xx references to UCSSEL__ACLK have been updated to UCSSEL__MODCLK.
- MSP430FR5xx_6xx references to ACCTEIE have been deprecated since this bit is removed from MSP430FR5xx_6xx User's guide.
- The following APIs in MSP430FR5xx_6xx family have been deprecated

- SysCtl_enableBSLProtect
- SysCtl_disableBSLProtect
- SysCtl_disableBSLMemory
- SysCtl_enableBSLMemory
- SysCtl_setRAMAssignedToBSL
- SysCtl_setBSLSize

1.95.00.49

- Added support for MSP430FR2xx_4xx family of devices
- Added new APIs that are compliant with Texas Instruments new coding guidelines. Existing user code will work without modification if it includes driverlib.h instead of individual peripheral header files. Refer Upgrade and Compatibility Information
- By default all deprecated APIs work. All deprecated APIs can be excluded from build by adding compiler option –DDEPRECATED in the project setting
- Minor documentation updates
- Added structs to doxygen documentation

1.90.00.65

- Added support for MSP430i2xx family of devices
- Added support for MSP430FR69xx family of devices
- Optimized GPIO functions across families to use a lookup table to improve performance
- Optimized TIMER_A, TIMER_B and TIMER_D initialization performance
- Improved MPU APIs and documentation
- Bugzilla issue (5895) fixed - cleared MPU password
- Bugzilla issue (6133) fixed - locking MPU turns off MPU
- Bugzilla issue (6134) fixed - permissions not set correctly when uysing MPU_createThreeSegments()
- Bugzilla issue (6138) fixed - Enabling MPU NMI turns off the MPU
- Bugzilla issue (6139) fixed - Enable NMI after MPU Lock kills program
- Fixed issues with documentation for all RTC modules
- Fixed permissions issues that didn't allow group/word access
- Fixed various documentation issues throughout APIs and examples

1.80.00.18

- Added support for MSP430F6779A device family
- Bugzilla issue (6073) fixed - Clock divider calculation error in timer_b.c
- Users upgrading driverlib from version 1.60 to 1.80, please refer Upgrade and Compatibility Information section.
- Removal of baseaddress removes support of Grace 2.20.02.32. Users that rely on Grace should not update Driver Library at this time until a new Grace is released.

1.70.00.41

- Improved RTSC support. Driver Library projects added to New Project Wizard and Project Template.
- Energia support
- Removed baseaddress parameter in core peripherals. Provided backward compatibility through compiler define DRIVERLIB_LGEACY_MODE. For more information view the Upgrade and Compatibility Information section.
- Removal of baseaddress removes support of Grace 2.20.02.32. Users that rely on Grace should not update Driver Library at this time until a new Grace is released.
- Red Hat MSPGCC Support
- Removed deprecated 5xx_6xx folder support
- Code metrics added to documentation
- Workaround added for compiler warnings in older device header files
- Fixed various spelling issues in user's guides
- Bugzilla issue (5781) fixed - DAC12_A_init() ignores outputSelect argument.
- Bugzilla issue (5347) fixed - SD24_B_configureConverterAdvanced() code fixed.

1.60.03.05

- Added RTSC support. This allows better discoverability by Grace and some basic documentation in the Eclipse help system.
- Added P2 update support. Driver Library can now be updated through CCS.

1.60.02.01

- Fixed issue with C++ bindings
- Fixed bug with USCI_A_UART recieveData, transmitData, transmitBreak that used the wrong type of register access (16 instead of 8)
- Fixed bug with USCI_B_I2C enableInterrupt, masterSingleReceive that used the wrong type of register access (16 instead of 8)

1.60.01.08

- Fixed include path in example projects to refer to driver library copy in workspace instead of from the installation
- Minor updates to inc/hw_memmap.h for each supported family

1.60.00.46

- Added C++ bindings to all driverlib peripherals
- Improved User's Guide Documentation
- Improved Release Notes Format
- Converted CCS examples to use CCS projectSpec
- In all driverlib code examples, the source and header files are now copied into the project and not linked (unlike previous driverlib releases)
- Examples generated from .projectspec file instead of .cproject/.project files
- Clear LPM5 bit for GPIO settings in all Wolverine examples
- Fixed Bug 4537- Set enable bit on ADC to 0 before turning ADC on or off in ADC12_B_enable and ADC12_B_disable
- Fixed Bug 4579- Changed comment in MPU_createThreeSegments() in MSP430FR5xx_6xx, MSP430FR57xx families
- Fixed Bug 4568 - Lock CS modules after unlocking in MSP430FR5xx_6xx, MSP430FR57xx families
- Removed (E)USCI_A_UART_init() and (e)uart_baudrate.h/c files in all families. Please use (E)USCI_A_UART_initAdvance() instead. The values to be written into the clockPrescalar, firstModReg, secondModReg and overSampling parameters of (E)USCI_A_UART_initAdvance() should be pre-computed and passed into the initialization function. http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/MSP430BaudRateConverter/index.html helps pre-compute the necessary values.
- Removed busy bit checking for all FRAM peripherals
- Fixed Bug 4340 - (E)USCI_I2C timeout functions should use pre-decrement rather than post-decrement in while loop
- Fixed Bug 4591 - EUSCI_B_I2C_masterSendSingleByteWithTimeout() timeout incorrect
- Fixed Bug 3856 - The following AES256 API for MSP430FR5xx_6xx are removed AES256_decryptDataUsingEncryptionKey, AES256_startDecryptDataUsingEncryptionKey, AES256_generateFirstRoundKey,AES256_startGenerateFirstRoundKey. Two new API are added - AES_setDecipherKey, AES_startSetDecipherKey
- Fixed Bug 4452 - Need FLASH apis that unlock info memory
- Added version.h to indicate driverlib version no.
- driverlib.h file is now available in every supported device family. Including this one header file in applications is sufficient for using any driverlib API call. Including driverlib.h eliminates the need to include "inc/hw_memmap.h" and every single "peripheral.h" the user would like to use.
- Driverlib code examples copy the driverlib source and header files instead of linking them
- Removed deprecated 5xx_6xx examples. All customers should be using the new family based structure for driver library development. Please refer to the family's user's guides for new APIs.
- EUSCI_SPI, EUSCI_I2C, EUSCI_UART APIs are deprecated. Please use EUSCI_A_SPI, EUSCI_B_SPI, EUSCI_B_I2C, EUSCI_A_UART APIs for EUSCI operations.
- The deprecated EUSCI_SPI, EUSCI_I2C, EUSCI_UART APIs are removed for MSP430FR5xx_6xx family.

1.40.01.00

- Changed some remaining UART APIs to use C99 types
- Fixed minor doxygen documentation for CS
- Fixed bug in GPIO_interruptEdgeSelect that caused it to fail to work with even ports (P2, P4, ..)
- Fixed bug in COMP_E that accidentally clears the previous settings in CECTL2
- Fixed bug in ADC12_B_memoryConfigure that did not allow enabling the window comparator
- The header files have been updated to be in sync with CCS5.5 Beta
- FRAM_configureWaitStateControl API in 5xx_6xx family now ignores the manualWaitState parameter since this register bit is now changed to a reserved bit. The API signature has not changed to maintain backward compatibility..
- FRAM_configureWaitStateControl API in MSP430FR5xx_6xx family signature has changed to exclude the manualWaitState parameter since this register bit is now a reserved bit.
- PMM_lockLPM5() API is used in MSP430FR5xx_6xx examples to disable the GPIO power-on default high-impedance mode to activate previously configured port settings.
- Comp_E examples in examples\driverlib\5xx_6xx\comp_e will fail to build due to a bug in the existing device header file for versions of CCS less than CCS 5.3. To workaround this, please upgrade CCS or replace the msp430fr5969.h from the CCS5.3 release in your CCS install.
- Comp_E examples in examples\driverlib\5xx_6xx\comp_e will fail to build due to a bug in the existing device header file for versions of IAR5.5. To workaround this, please replace the msp430fr5969.h from deprecated\msp430fr5xx_6xx_header_files\IAR from the in your IAR5.5 install.

1.40.00.00

- Added TIMER_X_counterGet to get the current count of the timer
- Changed timer initialization functions to not start timer automatically
- Added documentation to create driverlib based projects from scratch
- Fixed byte order in AES encrypt/decrupt APIs
- Separated EUSCI_SPI to EUSCI_A_SPI and EUSCI_B_SPI
- Separated USCI_SPI to USCI_A_SPI and USCI_B_SPI
- Renamed EUCSI_UART to EUSCI_A_UART and USCI_UART to USCI_A_UART
- Renamed EUSCI_I2C to EUSCI_B_I2C and USCI_I2C to USCI_B_I2C
- Added API CRC_set8BitData and CRC_set16BitData
- Fixed minor doxygen documentation for ADC12_A
- Changed driverlib emptyProject to use ELF
- Comp_E examples in examples\driverlib\5xx_6xx\comp_e will fail to build due to a bug in the existing device header file for versions of CCS less than CCS 5.3. To workaround this, please upgrade CCS or replace the msp430fr5969.h from the CCS5.3 release in your CCS install.
- Comp_E examples in examples\driverlib\5xx_6xx\comp_e will fail to build due to a bug in the existing device header file for versions of IAR5.5. To workaround this, please replace the msp430fr5969.h from deprecated\msp430fr5xx_6xx_header_files\IAR from the in your IAR5.5 install.

1.30.00.00

- Added 4 wire EUSCI_SPI support
- Fixed typos in EUSCI examples
- Fixed comments in FRPMM
- Fixed parameters in UCS_clockSignalInit
- Added timeout functions to I2C and EUSCI_I2C peripheral drivers
- Fixed bug in GPIO_setDriveStrength API. Modified PxIES instead of PxDS
- Fixed comments in COMP_E examples
- Added support to ADC12_B to configure window comparator
- Comp_E examples in examples\driverlib\5xx_6xx\comp_e will fail to build due to a bug in the existing device header file for versions of CCS less than CCS 5.3. To workaround this, please upgrade CCS or replace the msp430fr5969.h from the CCS5.3 release in your CCS install.
- Comp_E examples in examples\driverlib\5xx_6xx\comp_e will fail to build due to a bug in the existing device header file for versions of IAR5.5. To workaround this, please replace the msp430fr5969.h from deprecated\msp430fr5xx_6xx_header_files\IAR from the in your IAR5.5 install.

## Installation and Usage

Generally DriverLib is installed as part of MSP430ware. If you wish to update DriverLib from the zip file, unzip msp430_driverlib_x_xx_xx_xx.zip in your MSP430Ware installation. The installation contains the driver library core as well as peripheral examples and API documentation.

After installing MSP430Ware or Driver Library restart Code Composer Studio. When opening CCS you will be greeted with a window like that shown below:
2.00.00.162.00.00.16
Accept the new product and approve the content. You will now be able to use the RTSC features of driver library.
For more information about these feautres visit the Driver Library User's Guide.

The MSP430 peripheral driver library contains the following components:

doc | MSP430 Peripheral Driver Library documentation
driverlib | MSP430 Peripheral Driver Library source code
examples | MSP430 Peripheral Driver Library examples

## Device Support

The following families of devices are support in this release of MSP430 Driver Library:

- MSP430F5xx_6xx
- MSP430FR57xx
- MSP430FR5xx_6xx
- MSP430FR2xx_4xx
- MSP430i2xx

## Peripheral Support

## This is the 2.00.00.16 release of MSP430 Peripheral Driver Library. The following peripherals are supported in this release:

- MSP430F5xx_6xx Devices

- ADC10_A
- ADC12_A
- AES
- BATTBAK (Battery Backup System)
- COMP_B
- CRC
- DAC12_A
- DMA
- EUSCI_B_I2C
- EUSCI_A_SPI
- EUSCI_B_SPI
- EUSCI_A_UART
- FLASH
- SFR
- SYSCTL
- GPIO
- LDOPWR
- MPY32
- PMAP
- PMM
- RAM Controller
- REF
- REF_A
- RTC_A
- RTC_B
- RTC_C
- SD24_B
- SFR
- SYS
- TEC
- TIMER_A
- TIMER_B
- TIMER_D
- TLV
- UCS
- USCI_B_I2C
- USCI_A_SPI
- USCI_B_SPI
- USCI_A_UART
- WDT_A

- MSP430FR57xx Devices

- ADC12_B
- AES256
- COMP_E
- CRC
- CS
- DMA
- EUSCI_B_I2C
- EUSCI_A_SPI
- EUSCI_B_SPI
- EUSCI_A_UART
- FRAMCTL
- GPIO
- MPU
- MPY32
- PMM
- REF
- RTC_B
- SFR
- SYSCTL
- TIMER_A
- TIMER_B
- TLV
- WDT_A

- MSP430FR5xx_6xx Devices

- ADC12_B
- AES256
- Comp_E
- CRC
- CS
- DMA
- EUSCI_B_I2C
- EUSCI_A_SPI
- EUSCI_B_SPI
- EUSCI_A_UART
- FRAMCTL
- GPIO
- MPU
- MPY32
- PMM
- REF_A
- RTC_B
- SFR
- SYSCTL
- TIMER_A
- TIMER_B
- TLV
- WDT_A

- MSP430FR2xx_4xx Devices

- ADC
- CRC
- CS
- EUSCI_B_I2C
- EUSCI_A_SPI
- EUSCI_B_SPI
- EUSCI_A_UART
- FRAMCTL
- GPIO
- LCD_E
- PMM
- RTC
- SFR
- SYSCTL
- TIMER_A
- TLV
- WDT_A

- MSP430i2xx Devices

- CS
- EUSCI_B_I2C
- EUSCI_A_SPI
- EUSCI_B_SPI
- EUSCI_A_UART
- FLASHCTL
- GPIO
- MPY
- PMM
- SD24
- SFR
- TIMER_A
- TLV
- WDT

## Dependencies

MSP4305xx_6xx devices

- CCS 5.3.0
- IAR 5.20.1

MSP430FR57xx devices

- CCS 5.3.0
- IAR 5.40

MSP430FR5xx_6xx devices

- CCS 5.5
- IAR 5.60

MSP430FR2xx_4xx devices

- CCS 6.0.1
- IAR 5.60

MSP430i2xx devices

- CCS 6.0.0
- IAR 6.10.2

## Validation Information

This release is a GA version.

## Upgrade and Compatibility Information

Steps to upgrade from Driverlib 1.90 to Driverlib 1.95
1. All projects that use driverlib should work as is when you replace the existing driverlib by Driverlib 1.95.
2. Some of the source and header file names have changed to be in line with the new Texas Instruments coding guidelines. However as long as the user includes "driverlib.h" instead of individual peripheral header files, the user will have no issues upgrading.
Steps to upgrade from Driverlib 1.60 to Driverlib 1.70

1. Add compiler define DRIVERLIB_LEGACY_MODE
2. Include "driverlib.h" instead of individual module header files ( eg. fram.h, wdt_a.h etc.)

Removal of baseaddress removes support of Grace 2.20.02.32. Users that rely on Grace should not update Driver Library at this time until a new Grace is released.
As part of our continued process of optimizing MSP430 driverlib and standardizing the MSP430 driverlib APIs we have segregated the MSP430 modules into

- ‘CORE’ modules - those that would have ONLY one instance of the module in a single device.
- ‘PERIPHERAL’ modules – those that could have multiple instances of the module in a single device.

This would reflect as the baseaddress of module being absent/present in the module driverlib API based on if the module is a core/peripheral. This change increases performance in some APIs and allows greater software standardization across MCU platforms in TI’s portfolio. We believe this also increases readability by removing an extra parameter in APIs for peripherals that will only have one instance.

Based on this rule, we had to change some of the existing driverlib APIs to remove the baseaddress parameter. This would break compatibility for existing customers.

To provide backward compatibility

1. We will provide a compiler define DRIVERLIB_LEGACY_MODE. If this is predefined in the compiler settings, the older APIs will work (Pre 1.70 Release).
2. The user must also include the “driverlib.h” header file released in 1.60 driverlib onwards instead of the individual header files.

If DRIVERLIB_LEGACY_MODE compiler define is absent, then the newer APIs take effect (Post 1.70 Release).

Without making the above change, most existing projects that rely on driverlib 1.60 or below will fail to compile by default. Adding the compiler define DRIVERLIB_LEGACY_MODE and including “driverlib.h” instead of individual header files is necessary to get the projects to compile in legacy mode(using the older APIs).

We advise newer projects that are in the process of development to adopt the newer APIs. The older APIs are still available in the deprecated section. Here is the affected peripheral list.

MSP430F5xx_6xx

- DMA
- FLASH
- MPY32
- PMM
- RAM
- SFR
- SYS
- UCS

MSP430FR5xx_6xx

- CS
- DMA
- FRAM
- MPY32
- PMM
- SFR
- SYS

MSP430FR57xx

- CS
- DMA
- FRAM
- MPY32
- PMM
- SFR
- SYS

## Examples

The examples may be built with either IAR, CCS or GCC. To build the examples navigate to examples/<family>/<peripheral>/<ide> and double click the .eww project files for IAR, import the .projectSpec file for CCS or run a "make -f " for the GCC makefile..

Current supported families are found in the Device Support section of the release notes.

Current supported peripherals are found in the Peripheral Support section of the release notes.

## Known Issues

- Asserts in CCS work only when the project is optimized for size
- EUSCI_A_UART_CLOCKSOURCE_ACLK/UCSSEL__ACLK do not exist for MSP430FR4133. Previously defined header files used these defines. EUSCI_A_UART_CLOCKSOURCE_MODCLK/UCSSEL__MODCLK have been added to the header files. Please update your user code, if they have the older defines and hence fail to compile.
- MSP430FR2xx_4xx driverlib and header files previously had references to XT2 defines. MSP430FR2xx_4xx devices do not support XT2. These references have since been removed. If your user code uses these defines please remove them.

## Versioning

This is build 2.00.00.16 of MSP430 driver library.

## Technical Support and Product Updates

- Please visit the MSP430 E2E forum for driver library support.
- For other questions and support, please visit support.ti.com.
- E-Mail us directly at msp430ware@list.ti.com.

## Additional Resources

For more information, visit www.ti.com.