summaryrefslogtreecommitdiff
path: root/msp340/Blink/driverlib/MSP430FR5xx_6xx/tlv.h
diff options
context:
space:
mode:
Diffstat (limited to 'msp340/Blink/driverlib/MSP430FR5xx_6xx/tlv.h')
-rwxr-xr-xmsp340/Blink/driverlib/MSP430FR5xx_6xx/tlv.h439
1 files changed, 439 insertions, 0 deletions
diff --git a/msp340/Blink/driverlib/MSP430FR5xx_6xx/tlv.h b/msp340/Blink/driverlib/MSP430FR5xx_6xx/tlv.h
new file mode 100755
index 0000000..2089aa3
--- /dev/null
+++ b/msp340/Blink/driverlib/MSP430FR5xx_6xx/tlv.h
@@ -0,0 +1,439 @@
+/* --COPYRIGHT--,BSD
+ * Copyright (c) 2014, Texas Instruments Incorporated
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * * Neither the name of Texas Instruments Incorporated nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * --/COPYRIGHT--*/
+//*****************************************************************************
+//
+// tlv.h - Driver for the TLV Module.
+//
+//*****************************************************************************
+
+#ifndef __MSP430WARE_TLV_H__
+#define __MSP430WARE_TLV_H__
+
+#include "inc/hw_memmap.h"
+
+#ifdef __MSP430_HAS_TLV__
+
+//*****************************************************************************
+//
+// If building with a C++ compiler, make all of the definitions in this header
+// have a C binding.
+//
+//*****************************************************************************
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+#include "inc/hw_regaccess.h"
+//******************************************************************************
+//
+// TLV Data Types
+//
+//******************************************************************************
+struct s_TLV_Die_Record
+{
+ uint32_t wafer_id;
+ uint16_t die_x_position;
+ uint16_t die_y_position;
+ uint16_t test_results;
+};
+
+struct s_TLV_ADC_Cal_Data
+{
+ uint16_t adc_gain_factor;
+ int16_t adc_offset;
+ uint16_t adc_ref15_30_temp;
+ uint16_t adc_ref15_85_temp;
+ uint16_t adc_ref20_30_temp;
+ uint16_t adc_ref20_85_temp;
+ uint16_t adc_ref25_30_temp;
+ uint16_t adc_ref25_85_temp;
+};
+
+struct s_TLV_Timer_D_Cal_Data
+{
+ uint16_t TDH0CTL1_64;
+ uint16_t TDH0CTL1_128;
+ uint16_t TDH0CTL1_200;
+ uint16_t TDH0CTL1_256;
+};
+
+struct s_TLV_REF_Cal_Data
+{
+ uint16_t ref_ref15;
+ uint16_t ref_ref20;
+ uint16_t ref_ref25;
+};
+
+struct s_Peripheral_Memory_Data
+{
+ uint16_t memory_1;
+ uint16_t memory_2;
+ uint16_t memory_3;
+ uint16_t memory_4;
+};
+
+//*****************************************************************************
+//
+// The following are values that can be passed to the tag parameter for
+// functions: TLV_getInfo().
+//
+//*****************************************************************************
+#define TLV_TAG_LDTAG TLV_LDTAG
+#define TLV_TAG_PDTAG TLV_PDTAG
+#define TLV_TAG_Reserved3 TLV_Reserved3
+#define TLV_TAG_Reserved4 TLV_Reserved4
+#define TLV_TAG_BLANK TLV_BLANK
+#define TLV_TAG_Reserved6 TLV_Reserved6
+#define TLV_TAG_Reserved7 TLV_Reserved7
+#define TLV_TAG_TAGEND TLV_TAGEND
+#define TLV_TAG_TAGEXT TLV_TAGEXT
+#define TLV_TAG_TIMER_D_CAL TLV_TIMERDCAL
+#define TLV_DEVICE_ID_0 0x1A04
+#define TLV_DEVICE_ID_1 0x1A05
+#define TLV_TAG_DIERECORD TLV_DIERECORD
+#define TLV_TAG_ADCCAL TLV_ADCCAL
+#define TLV_TAG_ADC12CAL TLV_ADC12CAL
+#define TLV_TAG_ADC10CAL TLV_ADC10CAL
+#define TLV_TAG_REFCAL TLV_REFCAL
+
+//*****************************************************************************
+//
+// The following are values that can be passed to the tag parameter for
+// functions: TLV_getPeripheral().
+//
+//*****************************************************************************
+#define TLV_PID_NO_MODULE (0x00)
+#define TLV_PID_PORTMAPPING (0x10)
+#define TLV_PID_MSP430CPUXV2 (0x23)
+#define TLV_PID_JTAG (0x09)
+#define TLV_PID_SBW (0x0F)
+#define TLV_PID_EEM_XS (0x02)
+#define TLV_PID_EEM_S (0x03)
+#define TLV_PID_EEM_M (0x04)
+#define TLV_PID_EEM_L (0x05)
+#define TLV_PID_PMM (0x30)
+#define TLV_PID_PMM_FR (0x32)
+#define TLV_PID_FCTL (0x39)
+#define TLV_PID_CRC16 (0x3C)
+#define TLV_PID_CRC16_RB (0x3D)
+#define TLV_PID_WDT_A (0x40)
+#define TLV_PID_SFR (0x41)
+#define TLV_PID_SYS (0x42)
+#define TLV_PID_RAMCTL (0x44)
+#define TLV_PID_DMA_1 (0x46)
+#define TLV_PID_DMA_3 (0x47)
+#define TLV_PID_UCS (0x48)
+#define TLV_PID_DMA_6 (0x4A)
+#define TLV_PID_DMA_2 (0x4B)
+#define TLV_PID_PORT1_2 (0x51)
+#define TLV_PID_PORT3_4 (0x52)
+#define TLV_PID_PORT5_6 (0x53)
+#define TLV_PID_PORT7_8 (0x54)
+#define TLV_PID_PORT9_10 (0x55)
+#define TLV_PID_PORT11_12 (0x56)
+#define TLV_PID_PORTU (0x5E)
+#define TLV_PID_PORTJ (0x5F)
+#define TLV_PID_TA2 (0x60)
+#define TLV_PID_TA3 (0x61)
+#define TLV_PID_TA5 (0x62)
+#define TLV_PID_TA7 (0x63)
+#define TLV_PID_TB3 (0x65)
+#define TLV_PID_TB5 (0x66)
+#define TLV_PID_TB7 (0x67)
+#define TLV_PID_RTC (0x68)
+#define TLV_PID_BT_RTC (0x69)
+#define TLV_PID_BBS (0x6A)
+#define TLV_PID_RTC_B (0x6B)
+#define TLV_PID_TD2 (0x6C)
+#define TLV_PID_TD3 (0x6D)
+#define TLV_PID_TD5 (0x6E)
+#define TLV_PID_TD7 (0x6F)
+#define TLV_PID_TEC (0x70)
+#define TLV_PID_RTC_C (0x71)
+#define TLV_PID_AES (0x80)
+#define TLV_PID_MPY16 (0x84)
+#define TLV_PID_MPY32 (0x85)
+#define TLV_PID_MPU (0x86)
+#define TLV_PID_USCI_AB (0x90)
+#define TLV_PID_USCI_A (0x91)
+#define TLV_PID_USCI_B (0x92)
+#define TLV_PID_EUSCI_A (0x94)
+#define TLV_PID_EUSCI_B (0x95)
+#define TLV_PID_REF (0xA0)
+#define TLV_PID_COMP_B (0xA8)
+#define TLV_PID_COMP_D (0xA9)
+#define TLV_PID_USB (0x98)
+#define TLV_PID_LCD_B (0xB1)
+#define TLV_PID_LCD_C (0xB2)
+#define TLV_PID_DAC12_A (0xC0)
+#define TLV_PID_SD16_B_1 (0xC8)
+#define TLV_PID_SD16_B_2 (0xC9)
+#define TLV_PID_SD16_B_3 (0xCA)
+#define TLV_PID_SD16_B_4 (0xCB)
+#define TLV_PID_SD16_B_5 (0xCC)
+#define TLV_PID_SD16_B_6 (0xCD)
+#define TLV_PID_SD16_B_7 (0xCE)
+#define TLV_PID_SD16_B_8 (0xCF)
+#define TLV_PID_ADC12_A (0xD1)
+#define TLV_PID_ADC10_A (0xD3)
+#define TLV_PID_ADC10_B (0xD4)
+#define TLV_PID_SD16_A (0xD8)
+#define TLV_PID_TI_BSL (0xFC)
+
+//*****************************************************************************
+//
+// Prototypes for the APIs.
+//
+//*****************************************************************************
+
+//*****************************************************************************
+//
+//! \brief Gets TLV Info
+//!
+//! The TLV structure uses a tag or base address to identify segments of the
+//! table where information is stored. Some examples of TLV tags are Peripheral
+//! Descriptor, Interrupts, Info Block and Die Record. This function retrieves
+//! the value of a tag and the length of the tag.
+//!
+//! \param tag represents the tag for which the information needs to be
+//! retrieved.
+//! Valid values are:
+//! - \b TLV_TAG_LDTAG
+//! - \b TLV_TAG_PDTAG
+//! - \b TLV_TAG_Reserved3
+//! - \b TLV_TAG_Reserved4
+//! - \b TLV_TAG_BLANK
+//! - \b TLV_TAG_Reserved6
+//! - \b TLV_TAG_Reserved7
+//! - \b TLV_TAG_TAGEND
+//! - \b TLV_TAG_TAGEXT
+//! - \b TLV_TAG_TIMER_D_CAL
+//! - \b TLV_DEVICE_ID_0
+//! - \b TLV_DEVICE_ID_1
+//! - \b TLV_TAG_DIERECORD
+//! - \b TLV_TAG_ADCCAL
+//! - \b TLV_TAG_ADC12CAL
+//! - \b TLV_TAG_ADC10CAL
+//! - \b TLV_TAG_REFCAL
+//! \param instance In some cases a specific tag may have more than one
+//! instance. For example there may be multiple instances of timer
+//! calibration data present under a single Timer Cal tag. This variable
+//! specifies the instance for which information is to be retrieved (0,
+//! 1, etc.). When only one instance exists; 0 is passed.
+//! \param length Acts as a return through indirect reference. The function
+//! retrieves the value of the TLV tag length. This value is pointed to
+//! by *length and can be used by the application level once the
+//! function is called. If the specified tag is not found then the
+//! pointer is null 0.
+//! \param data_address acts as a return through indirect reference. Once the
+//! function is called data_address points to the pointer that holds the
+//! value retrieved from the specified TLV tag. If the specified tag is
+//! not found then the pointer is null 0.
+//!
+//! \return None
+//
+//*****************************************************************************
+extern void TLV_getInfo(uint8_t tag,
+ uint8_t instance,
+ uint8_t *length,
+ uint16_t **data_address);
+
+//*****************************************************************************
+//
+//! \brief Retrieves the unique device ID from the TLV structure.
+//!
+//!
+//! \return The device ID is returned as type uint16_t.
+//
+//*****************************************************************************
+extern uint16_t TLV_getDeviceType(void);
+
+//*****************************************************************************
+//
+//! \brief Gets memory information
+//!
+//! The Peripheral Descriptor tag is split into two portions a list of the
+//! available flash memory blocks followed by a list of available peripherals.
+//! This function is used to parse through the first portion and calculate the
+//! total flash memory available in a device. The typical usage is to call the
+//! TLV_getMemory which returns a non-zero value until the entire memory list
+//! has been parsed. When a zero is returned, it indicates that all the memory
+//! blocks have been counted and the next address holds the beginning of the
+//! device peripheral list.
+//!
+//! \param instance In some cases a specific tag may have more than one
+//! instance. This variable specifies the instance for which information
+//! is to be retrieved (0, 1 etc). When only one instance exists; 0 is
+//! passed.
+//!
+//! \return The returned value is zero if the end of the memory list is
+//! reached.
+//
+//*****************************************************************************
+extern uint16_t TLV_getMemory(uint8_t instance);
+
+//*****************************************************************************
+//
+//! \brief Gets peripheral information from the TLV
+//!
+//! he Peripheral Descriptor tag is split into two portions a list of the
+//! available flash memory blocks followed by a list of available peripherals.
+//! This function is used to parse through the second portion and can be used
+//! to check if a specific peripheral is present in a device. The function
+//! calls TLV_getPeripheral() recursively until the end of the memory list and
+//! consequently the beginning of the peripheral list is reached. <
+//!
+//! \param tag represents represents the tag for a specific peripheral for
+//! which the information needs to be retrieved. In the header file tlv.
+//! h specific peripheral tags are pre-defined, for example USCIA_B and
+//! TA0 are defined as TLV_PID_USCI_AB and TLV_PID_TA2 respectively.
+//! Valid values are:
+//! - \b TLV_PID_NO_MODULE - No Module
+//! - \b TLV_PID_PORTMAPPING - Port Mapping
+//! - \b TLV_PID_MSP430CPUXV2 - MSP430CPUXV2
+//! - \b TLV_PID_JTAG - JTAG
+//! - \b TLV_PID_SBW - SBW
+//! - \b TLV_PID_EEM_XS - EEM X-Small
+//! - \b TLV_PID_EEM_S - EEM Small
+//! - \b TLV_PID_EEM_M - EEM Medium
+//! - \b TLV_PID_EEM_L - EEM Large
+//! - \b TLV_PID_PMM - PMM
+//! - \b TLV_PID_PMM_FR - PMM FRAM
+//! - \b TLV_PID_FCTL - Flash
+//! - \b TLV_PID_CRC16 - CRC16
+//! - \b TLV_PID_CRC16_RB - CRC16 Reverse
+//! - \b TLV_PID_WDT_A - WDT_A
+//! - \b TLV_PID_SFR - SFR
+//! - \b TLV_PID_SYS - SYS
+//! - \b TLV_PID_RAMCTL - RAMCTL
+//! - \b TLV_PID_DMA_1 - DMA 1
+//! - \b TLV_PID_DMA_3 - DMA 3
+//! - \b TLV_PID_UCS - UCS
+//! - \b TLV_PID_DMA_6 - DMA 6
+//! - \b TLV_PID_DMA_2 - DMA 2
+//! - \b TLV_PID_PORT1_2 - Port 1 + 2 / A
+//! - \b TLV_PID_PORT3_4 - Port 3 + 4 / B
+//! - \b TLV_PID_PORT5_6 - Port 5 + 6 / C
+//! - \b TLV_PID_PORT7_8 - Port 7 + 8 / D
+//! - \b TLV_PID_PORT9_10 - Port 9 + 10 / E
+//! - \b TLV_PID_PORT11_12 - Port 11 + 12 / F
+//! - \b TLV_PID_PORTU - Port U
+//! - \b TLV_PID_PORTJ - Port J
+//! - \b TLV_PID_TA2 - Timer A2
+//! - \b TLV_PID_TA3 - Timer A1
+//! - \b TLV_PID_TA5 - Timer A5
+//! - \b TLV_PID_TA7 - Timer A7
+//! - \b TLV_PID_TB3 - Timer B3
+//! - \b TLV_PID_TB5 - Timer B5
+//! - \b TLV_PID_TB7 - Timer B7
+//! - \b TLV_PID_RTC - RTC
+//! - \b TLV_PID_BT_RTC - BT + RTC
+//! - \b TLV_PID_BBS - Battery Backup Switch
+//! - \b TLV_PID_RTC_B - RTC_B
+//! - \b TLV_PID_TD2 - Timer D2
+//! - \b TLV_PID_TD3 - Timer D1
+//! - \b TLV_PID_TD5 - Timer D5
+//! - \b TLV_PID_TD7 - Timer D7
+//! - \b TLV_PID_TEC - Timer Event Control
+//! - \b TLV_PID_RTC_C - RTC_C
+//! - \b TLV_PID_AES - AES
+//! - \b TLV_PID_MPY16 - MPY16
+//! - \b TLV_PID_MPY32 - MPY32
+//! - \b TLV_PID_MPU - MPU
+//! - \b TLV_PID_USCI_AB - USCI_AB
+//! - \b TLV_PID_USCI_A - USCI_A
+//! - \b TLV_PID_USCI_B - USCI_B
+//! - \b TLV_PID_EUSCI_A - eUSCI_A
+//! - \b TLV_PID_EUSCI_B - eUSCI_B
+//! - \b TLV_PID_REF - Shared Reference
+//! - \b TLV_PID_COMP_B - COMP_B
+//! - \b TLV_PID_COMP_D - COMP_D
+//! - \b TLV_PID_USB - USB
+//! - \b TLV_PID_LCD_B - LCD_B
+//! - \b TLV_PID_LCD_C - LCD_C
+//! - \b TLV_PID_DAC12_A - DAC12_A
+//! - \b TLV_PID_SD16_B_1 - SD16_B 1 Channel
+//! - \b TLV_PID_SD16_B_2 - SD16_B 2 Channel
+//! - \b TLV_PID_SD16_B_3 - SD16_B 3 Channel
+//! - \b TLV_PID_SD16_B_4 - SD16_B 4 Channel
+//! - \b TLV_PID_SD16_B_5 - SD16_B 5 Channel
+//! - \b TLV_PID_SD16_B_6 - SD16_B 6 Channel
+//! - \b TLV_PID_SD16_B_7 - SD16_B 7 Channel
+//! - \b TLV_PID_SD16_B_8 - SD16_B 8 Channel
+//! - \b TLV_PID_ADC12_A - ADC12_A
+//! - \b TLV_PID_ADC10_A - ADC10_A
+//! - \b TLV_PID_ADC10_B - ADC10_B
+//! - \b TLV_PID_SD16_A - SD16_A
+//! - \b TLV_PID_TI_BSL - BSL
+//! \param instance In some cases a specific tag may have more than one
+//! instance. For example a device may have more than a single USCI
+//! module, each of which is defined by an instance number 0, 1, 2, etc.
+//! When only one instance exists; 0 is passed.
+//!
+//! \return The returned value is zero if the specified tag value (peripheral)
+//! is not available in the device.
+//
+//*****************************************************************************
+extern uint16_t TLV_getPeripheral(uint8_t tag,
+ uint8_t instance);
+
+//*****************************************************************************
+//
+//! \brief Get interrupt information from the TLV
+//!
+//! This function is used to retrieve information on available interrupt
+//! vectors. It allows the user to check if a specific interrupt vector is
+//! defined in a given device.
+//!
+//! \param tag represents the tag for the interrupt vector. Interrupt vector
+//! tags number from 0 to N depending on the number of available
+//! interrupts. Refer to the device datasheet for a list of available
+//! interrupts.
+//!
+//! \return The returned value is zero is the specified interrupt vector is not
+//! defined.
+//
+//*****************************************************************************
+extern uint8_t TLV_getInterrupt(uint8_t tag);
+
+//*****************************************************************************
+//
+// Mark the end of the C bindings section for C++ compilers.
+//
+//*****************************************************************************
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+#endif // __MSP430WARE_TLV_H__