/****************************************************************************** * Filename: hw_soc_adc.h * Revised: $Date: 2013-04-30 17:13:44 +0200 (Tue, 30 Apr 2013) $ * Revision: $Revision: 9943 $ * * Copyright (C) 2013 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. * ******************************************************************************/ #ifndef __HW_SOC_ADC_H__ #define __HW_SOC_ADC_H__ //***************************************************************************** // // The following are defines for the SOC_ADC register offsets. // //***************************************************************************** #define SOC_ADC_ADCCON1 0x400D7000 // This register controls the ADC. #define SOC_ADC_ADCCON2 0x400D7004 // This register controls the ADC. #define SOC_ADC_ADCCON3 0x400D7008 // This register controls the ADC. #define SOC_ADC_ADCL 0x400D700C // This register contains the // least-significant part of ADC // conversion result. #define SOC_ADC_ADCH 0x400D7010 // This register contains the // most-significant part of ADC // conversion result. #define SOC_ADC_RNDL 0x400D7014 // This registers contains // random-number-generator data; // low byte. #define SOC_ADC_RNDH 0x400D7018 // This register contains // random-number-generator data; // high byte. #define SOC_ADC_CMPCTL 0x400D7024 // Analog comparator control and // status register. //***************************************************************************** // // The following are defines for the bit fields in the // SOC_ADC_ADCCON1 register. // //***************************************************************************** #define SOC_ADC_ADCCON1_EOC 0x00000080 // End of conversion. Cleared when // ADCH has been read. If a new // conversion is completed before // the previous data has been read, // the EOC bit remains high. 0: // Conversion not complete 1: // Conversion completed #define SOC_ADC_ADCCON1_EOC_M 0x00000080 #define SOC_ADC_ADCCON1_EOC_S 7 #define SOC_ADC_ADCCON1_ST 0x00000040 // Start conversion Read as 1 // until conversion completes 0: No // conversion in progress. 1: Start // a conversion sequence if // ADCCON1.STSEL = 11 and no // sequence is running. #define SOC_ADC_ADCCON1_ST_M 0x00000040 #define SOC_ADC_ADCCON1_ST_S 6 #define SOC_ADC_ADCCON1_STSEL_M 0x00000030 // Start select Selects the event // that starts a new conversion // sequence 00: Not implemented 01: // Full speed. Do not wait for // triggers 10: Timer 1 channel 0 // compare event 11: ADCCON1.ST = 1 #define SOC_ADC_ADCCON1_STSEL_S 4 #define SOC_ADC_ADCCON1_RCTRL_M 0x0000000C // Controls the 16-bit // random-number generator (see // User Guide Chapter 16) When 01 // is written, the setting // automatically returns to 00 when // the operation completes. 00: // Normal operation (13x unrolling) // 01: Clock the LFSR once (13x // unrolling) 10: Reserved 11: // Stopped. The random-number // generator is turned off. #define SOC_ADC_ADCCON1_RCTRL_S 2 //***************************************************************************** // // The following are defines for the bit fields in the // SOC_ADC_ADCCON2 register. // //***************************************************************************** #define SOC_ADC_ADCCON2_SREF_M 0x000000C0 // Selects reference voltage used // for the sequence of conversions // 00: Internal reference 01: // External reference on AIN7 pin // 10: AVDD5 pin 11: External // reference on AIN6-AIN7 // differential input #define SOC_ADC_ADCCON2_SREF_S 6 #define SOC_ADC_ADCCON2_SDIV_M 0x00000030 // Sets the decimation rate for // channels included in the // sequence of conversions. The // decimation rate also determines // the resolution and time required // to complete a conversion. 00: 64 // decimation rate (7 bits ENOB // setting) 01: 128 decimation rate // (9 bits ENOB setting) 10: 256 // decimation rate (10 bits ENOB // setting) 11: 512 decimation rate // (12 bits ENOB setting) #define SOC_ADC_ADCCON2_SDIV_S 4 #define SOC_ADC_ADCCON2_SCH_M 0x0000000F // Sequence channel select Selects // the end of the sequence A // sequence can either be from AIN0 // to AIN7 (SCH <= 7) or from // differential input AIN0-AIN1 to // AIN6-AIN7 (8 <= SCH <= 11). For // other settings, only one // conversions is performed. When // read, these bits indicate the // channel number on which a // conversion is ongoing: 0000: // AIN0 0001: AIN1 0010: AIN2 0011: // AIN3 0100: AIN4 0101: AIN5 0110: // AIN6 0111: AIN7 1000: AIN0-AIN1 // 1001: AIN2-AIN3 1010: AIN4-AIN5 // 1011: AIN6-AIN7 1100: GND 1101: // Reserved 1110: Temperature // sensor 1111: VDD/3 #define SOC_ADC_ADCCON2_SCH_S 0 //***************************************************************************** // // The following are defines for the bit fields in the // SOC_ADC_ADCCON3 register. // //***************************************************************************** #define SOC_ADC_ADCCON3_EREF_M 0x000000C0 // Selects reference voltage used // for the extra conversion 00: // Internal reference 01: External // reference on AIN7 pin 10: AVDD5 // pin 11: External reference on // AIN6-AIN7 differential input #define SOC_ADC_ADCCON3_EREF_S 6 #define SOC_ADC_ADCCON3_EDIV_M 0x00000030 // Sets the decimation rate used // for the extra conversion The // decimation rate also determines // the resolution and the time // required to complete the // conversion. 00: 64 decimation // rate (7 bits ENOB) 01: 128 // decimation rate (9 bits ENOB) // 10: 256 decimation rate (10 bits // ENOB) 11: 512 decimation rate // (12 bits ENOB) #define SOC_ADC_ADCCON3_EDIV_S 4 #define SOC_ADC_ADCCON3_ECH_M 0x0000000F // Single channel select. Selects // the channel number of the single // conversion that is triggered by // writing to ADCCON3. 0000: AIN0 // 0001: AIN1 0010: AIN2 0011: AIN3 // 0100: AIN4 0101: AIN5 0110: AIN6 // 0111: AIN7 1000: AIN0-AIN1 1001: // AIN2-AIN3 1010: AIN4-AIN5 1011: // AIN6-AIN7 1100: GND 1101: // Reserved 1110: Temperature // sensor 1111: VDD/3 #define SOC_ADC_ADCCON3_ECH_S 0 //***************************************************************************** // // The following are defines for the bit fields in the SOC_ADC_ADCL register. // //***************************************************************************** #define SOC_ADC_ADCL_ADC_M 0x000000FC // Least-significant part of ADC // conversion result #define SOC_ADC_ADCL_ADC_S 2 //***************************************************************************** // // The following are defines for the bit fields in the SOC_ADC_ADCH register. // //***************************************************************************** #define SOC_ADC_ADCH_ADC_M 0x000000FF // Most-significant part of ADC // conversion result #define SOC_ADC_ADCH_ADC_S 0 //***************************************************************************** // // The following are defines for the bit fields in the SOC_ADC_RNDL register. // //***************************************************************************** #define SOC_ADC_RNDL_RNDL_M 0x000000FF // Random value/seed or CRC // result, low byte When used for // random-number generation, // writing to this register twice // seeds the random-number // generator. Writing to this // register copies the 8 LSBs of // the LFSR to the 8 MSBs and // replaces the 8 LSBs with the // data value written. The value // returned when reading from this // register is the 8 LSBs of the // LFSR. When used for // random-number generation, // reading this register returns // the 8 LSBs of the random number. // When used for CRC calculations, // reading this register returns // the 8 LSBs of the CRC result. #define SOC_ADC_RNDL_RNDL_S 0 //***************************************************************************** // // The following are defines for the bit fields in the SOC_ADC_RNDH register. // //***************************************************************************** #define SOC_ADC_RNDH_RNDH_M 0x000000FF // Random value or CRC // result/input data, high byte // When written, a CRC16 // calculation is triggered, and // the data value written is // processed starting with the MSB. // The value returned when reading // from this register is the 8 MSBs // of the LFSR. When used for // random-number generation, // reading this register returns // the 8 MSBs of the random number. // When used for CRC calculations, // reading this register returns // the 8 MSBs of the CRC result. #define SOC_ADC_RNDH_RNDH_S 0 //***************************************************************************** // // The following are defines for the bit fields in the // SOC_ADC_CMPCTL register. // //***************************************************************************** #define SOC_ADC_CMPCTL_EN 0x00000002 // Comparator enable #define SOC_ADC_CMPCTL_EN_M 0x00000002 #define SOC_ADC_CMPCTL_EN_S 1 #define SOC_ADC_CMPCTL_OUTPUT 0x00000001 // Comparator output #define SOC_ADC_CMPCTL_OUTPUT_M 0x00000001 #define SOC_ADC_CMPCTL_OUTPUT_S 0 #endif // __HW_SOC_ADC_H__