/******************************************************************************* * * HAL_TLV.c * Provides Functions to Read the TLV Data Section of the MSP430 Devices * * * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/ * * * 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. * * Updated: Version 2.0 01/17/2011 * ******************************************************************************/ #ifndef HAL_TLV_H #define HAL_TLV_H /******************************************************************************* * Device Descriptors - Fixed Memory Locations ******************************************************************************/ #define DEVICE_ID_0 (0x1A04) #define DEVICE_ID_1 (0x1A05) /******************************************************************************* * Data Types ******************************************************************************/ struct s_TLV_Die_Record { unsigned char die_record[10]; }; struct s_TLV_ADC_Cal_Data { unsigned int adc_gain_factor; unsigned int adc_offset; unsigned int adc_ref15_30_temp; unsigned int adc_ref15_85_temp; unsigned int adc_ref20_30_temp; unsigned int adc_ref20_85_temp; unsigned int adc_ref25_30_temp; unsigned int adc_ref25_85_temp; }; struct s_TLV_Timer_D_Cal_Data { unsigned int TDH0CTL1_64; unsigned int TDH0CTL1_128; unsigned int TDH0CTL1_200; unsigned int TDH0CTL1_256; }; struct s_TLV_REF_Cal_Data { unsigned int ref_ref15; unsigned int ref_ref20; unsigned int adc_ref25; }; /******************************************************************************* * Tag Defines ******************************************************************************/ #define TLV_LDTAG (0x01) /* Legacy descriptor (1xx, 2xx, 4xx families) */ #define TLV_PDTAG (0x02) /* Peripheral discovery descriptor */ #define TLV_Reserved3 (0x03) /* Future usage */ #define TLV_Reserved4 (0x04) /* Future usage */ #define TLV_BLANK (0x05) /* Blank descriptor */ #define TLV_Reserved6 (0x06) /* Future usage */ #define TLV_Reserved7 (0x07) /* Serial Number */ #define TLV_DIERECORD (0x08) /* Die Record */ #define TLV_ADCCAL (0x11) /* ADC12 calibration */ #define TLV_ADC12CAL (0x11) /* ADC12 calibration */ #define TLV_ADC10CAL (0x13) /* ADC10 calibration */ #define TLV_REFCAL (0x12) /* REF calibration */ #define TLV_TIMER_D_CAL (0x15) /* Timer_Dx calibration */ #define TLV_TAGEXT (0xFE) /* Tag extender */ #define TLV_TAGEND (0xFF) /* Tag End of Table */ /******************************************************************************* * Peripheral Defines ******************************************************************************/ #define TLV_PID_NO_MODULE (0x00) /* No Module */ #define TLV_PID_PORTMAPPING (0x10) /* Port Mapping */ #define TLV_PID_MSP430CPUXV2 (0x23) /* MSP430CPUXV2 */ #define TLV_PID_JTAG (0x09) /* JTAG */ #define TLV_PID_SBW (0x0F) /* SBW */ #define TLV_PID_EEM_XS (0x02) /* EEM X-Small */ #define TLV_PID_EEM_S (0x03) /* EEM Small */ #define TLV_PID_EEM_M (0x04) /* EEM Medium */ #define TLV_PID_EEM_L (0x05) /* EEM Large */ #define TLV_PID_PMM (0x30) /* PMM */ #define TLV_PID_PMM_FR (0x32) /* PMM FRAM */ #define TLV_PID_FCTL (0x39) /* Flash */ #define TLV_PID_CRC16 (0x3C) /* CRC16 */ #define TLV_PID_CRC16_RB (0x3D) /* CRC16 Reverse */ #define TLV_PID_WDT_A (0x40) /* WDT_A */ #define TLV_PID_SFR (0x41) /* SFR */ #define TLV_PID_SYS (0x42) /* SYS */ #define TLV_PID_RAMCTL (0x44) /* RAMCTL */ #define TLV_PID_DMA_1 (0x46) /* DMA 1 */ #define TLV_PID_DMA_3 (0x47) /* DMA 3 */ #define TLV_PID_UCS (0x48) /* UCS */ #define TLV_PID_DMA_6 (0x4A) /* DMA 6 */ #define TLV_PID_DMA_2 (0x4B) /* DMA 2 */ #define TLV_PID_PORT1_2 (0x51) /* Port 1 + 2 / A */ #define TLV_PID_PORT3_4 (0x52) /* Port 3 + 4 / B */ #define TLV_PID_PORT5_6 (0x53) /* Port 5 + 6 / C */ #define TLV_PID_PORT7_8 (0x54) /* Port 7 + 8 / D */ #define TLV_PID_PORT9_10 (0x55) /* Port 9 + 10 / E */ #define TLV_PID_PORT11_12 (0x56) /* Port 11 + 12 / F */ #define TLV_PID_PORTU (0x5E) /* Port U */ #define TLV_PID_PORTJ (0x5F) /* Port J */ #define TLV_PID_TA2 (0x60) /* Timer A2 */ #define TLV_PID_TA3 (0x61) /* Timer A1 */ #define TLV_PID_TA5 (0x62) /* Timer A5 */ #define TLV_PID_TA7 (0x63) /* Timer A7 */ #define TLV_PID_TB3 (0x65) /* Timer B3 */ #define TLV_PID_TB5 (0x66) /* Timer B5 */ #define TLV_PID_TB7 (0x67) /* Timer B7 */ #define TLV_PID_RTC (0x68) /* RTC */ #define TLV_PID_BT_RTC (0x69) /* BT + RTC */ #define TLV_PID_BBS (0x6A) /* Battery Backup Switch */ #define TLV_PID_RTC_B (0x6B) /* RTC_B */ #define TLV_PID_TD2 (0x6C) /* Timer D2 */ #define TLV_PID_TD3 (0x6D) /* Timer D1 */ #define TLV_PID_TD5 (0x6E) /* Timer D5 */ #define TLV_PID_TD7 (0x6F) /* Timer D7 */ #define TLV_PID_TEC (0x70) /* Imer Event Control */ #define TLV_PID_RTC_C (0x71) /* RTC_C */ #define TLV_PID_AES (0x80) /* AES */ #define TLV_PID_MPY16 (0x84) /* MPY16 */ #define TLV_PID_MPY32 (0x85) /* MPY32 */ #define TLV_PID_MPU (0x86) /* MPU */ #define TLV_PID_USCI_AB (0x90) /* USCI_AB */ #define TLV_PID_USCI_A (0x91) /* USCI_A */ #define TLV_PID_USCI_B (0x92) /* USCI_B */ #define TLV_PID_EUSCI_A (0x94) /* eUSCI_A */ #define TLV_PID_EUSCI_B (0x95) /* eUSCI_B */ #define TLV_PID_REF (0xA0) /* Shared Reference */ #define TLV_PID_COMP_B (0xA8) /* COMP_B */ #define TLV_PID_COMP_D (0xA9) /* COMP_D */ #define TLV_PID_USB (0x98) /* USB */ #define TLV_PID_LCD_B (0xB1) /* LCD_B */ #define TLV_PID_LCD_C (0xB2) /* LCD_C */ #define TLV_PID_DAC12_A (0xC0) /* DAC12_A */ #define TLV_PID_SD16_B_1 (0xC8) /* SD16_B 1 Channel */ #define TLV_PID_SD16_B_2 (0xC9) /* SD16_B 2 Channel */ #define TLV_PID_SD16_B_3 (0xCA) /* SD16_B 3 Channel */ #define TLV_PID_SD16_B_4 (0xCB) /* SD16_B 4 Channel */ #define TLV_PID_SD16_B_5 (0xCC) /* SD16_B 5 Channel */ #define TLV_PID_SD16_B_6 (0xCD) /* SD16_B 6 Channel */ #define TLV_PID_SD16_B_7 (0xCE) /* SD16_B 7 Channel */ #define TLV_PID_SD16_B_8 (0xCF) /* SD16_B 8 Channel */ #define TLV_PID_ADC12_A (0xD1) /* ADC12_A */ #define TLV_PID_ADC10_A (0xD3) /* ADC10_A */ #define TLV_PID_ADC10_B (0xD4) /* ADC10_B */ #define TLV_PID_SD16_A (0xD8) /* SD16_A */ #define TLV_PID_TI_BSL (0xFC) /* BSL */ /******************************************************************************* * \brief Get Information out of the TLV Table * * \param tag Tag of the TLV entry * \param instance Instance of the Tag of the TLV entry * \param *length return: Length of the information if found * \param **data_address return: start pointer of Data ******************************************************************************/ void Get_TLV_Info(unsigned char tag, unsigned char instance, unsigned char *length, unsigned int **data_address); /******************************************************************************* * \brief Get Device Type out of the TLV Table * * \return Device dependent value ******************************************************************************/ unsigned int Get_Device_Type(void); /******************************************************************************* * \brief Get Memory Info out of the TLV Table * * \param instance Index of the Instance [0..] * \return Memory Data found ******************************************************************************/ unsigned int Get_TLV_Memory(unsigned char instance); /******************************************************************************* * \brief Get Peripheral Info out of the TLV Table * * \param tag Tag of the TLV entry * \param instance Index of the Instance [0..] * \return Peripheral Data found ******************************************************************************/ unsigned int Get_TLV_Peripheral(unsigned char tag, unsigned char instance); /******************************************************************************* * \brief Get Interrupt Info out of the TLV Table * * \param tag Tag of the TLV entry * \return Interrupt Data found ******************************************************************************/ unsigned char Get_TLV_Interrupt(unsigned char tag); #endif /* HAL_TLV_H */