能不能告诉我原因,照片在附件处
xyz549040622:
你这个数值明显有点太大了,我下午跑跑例程看看,是否和你的一致呢?
chang liu11:
回复 xyz549040622:
谢谢啊,要是能把你的例程发过来就更好了
chang liu11:
回复 xyz549040622:
我是这么使用这个例程的,我把关于ADC定义的那一部分代码,复制后,把gamepad里面的adc代码替换掉,我想用MDK重新搭建,但是不会,有没有完整的详细的教程,谢谢
chang liu11:
回复 xyz549040622:
测试没有啊,急求呀,卡在这里很久了
xyz549040622:
回复 chang liu11:
应该是官方的算法不对,你看看这个例程,是没问题的。
//sensor. // // Copyright (c) 2010-2017 Texas Instruments Incorporated.All rights reserved. // Software License Agreement ////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. //// This is part of revision 2.1.4.178 of the Tiva Firmware Development Package. // //*****************************************************************************#include <stdbool.h> #include <stdint.h> #include "inc/hw_memmap.h" #include "driverlib/adc.h" #include "driverlib/gpio.h" #include "driverlib/pin_map.h" #include "driverlib/sysctl.h" #include "driverlib/uart.h" #include "utils/uartstdio.h"//***************************************************************************** // //! \addtogroup adc_examples_list //! <h1>ADC Temperature Sensor (temperature_sensor)</h1> //! //! This example shows how to setup ADC0 to read the internal temperature //! sensor. //! //! NOTE: The internal temperature sensor is not calibrated.This example //! just takes the raw temperature sensor sample and converts it using the //! equation found in the LM3S9B96 datasheet. //! //! This example uses the following peripherals and I/O signals.You must //! review these and change as needed for your own board: //! - ADC0 peripheral //! //! The following UART signals are configured only for displaying console //! messages for this example.These are not required for operation of the //! ADC. //! - UART0 peripheral //! - GPIO Port A peripheral (for UART0 pins) //! - UART0RX - PA0 //! - UART0TX - PA1 //! //! This example uses the following interrupt handlers.To use this example //! in your own application you must add these interrupt handlers to your //! vector table. //! - None. // //*****************************************************************************//***************************************************************************** // // This function sets up UART0 to be used for a console to display information // as the example is running. // //***************************************************************************** void InitConsole(void) {//// Enable GPIO port A which is used for UART0 pins.// TODO: change this to whichever GPIO port you are using.//SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);//// Configure the pin muxing for UART0 functions on port A0 and A1.// This step is not necessary if your part does not support pin muxing.// TODO: change this to select the port/pin you are using.//GPIOPinConfigure(GPIO_PA0_U0RX);GPIOPinConfigure(GPIO_PA1_U0TX);//// Enable UART0 so that we can configure the clock.//SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);//// Use the internal 16MHz oscillator as the UART clock source.//UARTClockSourceSet(UART0_BASE, UART_CLOCK_PIOSC);//// Select the alternate (UART) function for these pins.// TODO: change this to select the port/pin you are using.//GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);//// Initialize the UART for console I/O.//UARTStdioConfig(0, 115200, 16000000); }int main(void) {uint32_t ui32ADC0Value[4];volatile uint32_t ui32TempAvg;volatile uint32_t ui32TempValueC;volatile uint32_t ui32TempValueF;SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHZ);InitConsole();//// Display the setup on the console.//UARTprintf("ADC ->\n");UARTprintf("Type: Internal Temperature Sensor\n");UARTprintf("Samples: One\n");UARTprintf("Update Rate: 250ms\n");UARTprintf("Input Pin: Internal temperature sensor\n\n");//5分频,使用PLL,外部晶振16M,system时钟源选择 main osc。系统时钟40MHZSysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);//使能ADC0ADCSequenceConfigure(ADC0_BASE, 1, ADC_TRIGGER_PROCESSOR, 0);//We want to use ADC0, sample sequencer 1,//we want the processor to trigger the sequence and we want to use the highest priorityADCSequenceStepConfigure(ADC0_BASE, 1, 0, ADC_CTL_TS);ADCSequenceStepConfigure(ADC0_BASE, 1, 1, ADC_CTL_TS);ADCSequenceStepConfigure(ADC0_BASE, 1, 2, ADC_CTL_TS);//Configure steps 0 - 2 on sequencer 1 to sample the temperature sensor (ADC_CTL_TS).ADCSequenceStepConfigure(ADC0_BASE,1,3,ADC_CTL_TS|ADC_CTL_IE|ADC_CTL_END);//Sample the temperature sensor (ADC_CTL_TS) and configure the interrupt flag (ADC_CTL_IE)//Tell the ADC logic that this is the last conversion on sequencer1 (ADC_CTL_END).ADCSequenceEnable(ADC0_BASE, 1);//enable ADC sequencer 1while(1){ADCIntClear(ADC0_BASE, 1);ADCProcessorTrigger(ADC0_BASE, 1);//trigger the ADC conversion with softwarewhile(!ADCIntStatus(ADC0_BASE, 1, false)){}//wait for the conversion to completeADCSequenceDataGet(ADC0_BASE, 1, ui32ADC0Value);ui32TempAvg = (ui32ADC0Value[0] + ui32ADC0Value[1] + ui32ADC0Value[2] + ui32ADC0Value[3] + 2)/4;//Since 2/4 = 1/2 = 0.5, 1.5 will be rounded to 2.0 with//the addition of 0.5. In the case of 1.0, when 0.5 is added to yield 1.5, this will be rounded//back down to 1.0 due to the rules of integer math.即四舍五入ui32TempValueC = (1475 - ((2475 * ui32TempAvg)) / 4096)/10;//TEMP = 147.5 – ((75 * (VREFP – VREFN) * ADCVALUE) / 4096)//VREFP – VREFN=3.3Vui32TempValueF = ((ui32TempValueC * 9) + 160) / 5;UARTprintf("Temperature = %d*C or %d*F\r\n", ui32TempValueC,ui32TempValueF);//F = ( C * 9)/5 +32} }
chang liu11:
回复 xyz549040622:
好厉害,那处理四路数据,的算法是不是也可以这样写,例程里面的一路数据输出的AIN代表什么意思
chang liu11:
回复 xyz549040622:
我在南京,测得温度是16摄氏度,现在就在尝试外设四路数据的结算采集,但是还是不清楚如何将采集的数据解算
chang liu11:
回复 xyz549040622:
ADC -> Type: Internal Temperature Sensor Samples: One Update Rate: 250ms Input Pin: AIN0/PE3
Temperature = 6*C or 42*F or 2331 Temperature = 11*C or 51*F or 2253 Temperature = 10*C or 50*F or 2277 Temperature = 11*C or 51*F or 2251 Temperature = 36*C or 96*F or 1842 Temperature = 14*C or 57*F or 2206 Temperature = 17*C or 62*F or 2155 Temperature = 24*C or 75*F or 2043 Temperature = 23*C or 73*F or 2049 Temperature = 23*C or 73*F or 2055 Temperature = 23*C or 73*F or 2053 Temperature = 23*C or 73*F or 2048 Temperature = 24*C or 75*F or 2041 Temperature = 23*C or 73*F or 2051 Temperature = 24*C or 75*F or 2041 Temperature = 24*C or 75*F or 2040 Temperature = 23*C or 73*F or 2048 Temperature = 24*C or 75*F or 2037 Temperature = 23*C or 73*F or 2059 Temperature = 23*C or 73*F or 2054 Temperature = 23*C or 73*F or 2055 Temperature = 23*C or 73*F or 2049 Temperature = 23*C or 73*F or 2049 Temperature = 23*C 272T27* 2** 2*72T272 2** 2** T272T272 2** 2**2T272T2** 2** 2*72T272 2** 2** T272T272 2** 2**2T742T6* T9* T** T**2T142T5* T6* 7** 7** 6** 1** 6** 6** 8** 842 742 742T142T742T642T742T6* T6* T142T7* T8* T*52T172T2** 2** 2*72T272 2** 2** T272T272 2** 2** T272T27* 2** 2*72T272 2** 2** T272T272 2** 2** T272T27* 2** 2*72T272 2** 1** 7** 6** 1** 7** 1** 7** 8** 8** 7** 7** 7** 542 642 542T742T742T542T9* T** T** 8** 8** 5** 1** 1** 1** T*52T252 2** 2** T272T272 2** 2**2T272T2** 2** 2*72T272 2** 2** T272T272 2** 2** T272T27* 2** 2*72T272 2** 2** T272T272 1** 8** 1** 6** 8** 7** 6** 5** 5** 542 642T842T642T742T64 T5* T** 5** 6** 7** 8** 7** 6** 842 1** 952 942 842 742 2** 2** T272T272 2** 2**2T272T2** 2** 2*72T272 2** 2** T272T272 2** 2** T272T27* 2** 2*72T272 2** 2** T272T272 2** 1** T8* T** 9** 7** 8** 6** 6** 6** 6** 8** 6** 842 442T642T542T642T6* T142T7* T6* T** 7** 8** 8** 1** 8** 1** 9** T152T272 2** 2** T272T27* 2** 2**2T272 2** 2** T*72T272 2** 2** T272T272 2** 2**2T272T2** 2** 2*72T272 2** 2** T272T152 1** 9** 642 652 1*2 542 742 542T642T842T842T6* T** T** 7** 6** 6** 1** 7** 8** 7** 7** 942 74* 1** 7** 1** 1** T162T272 2** 2**2T272 2** 2** 2*72T272 2** 2** T272T272 2** 2** T272T27* 2** 2**2T272 2** 2** T272T272 2** 2** T272T16* 842 742 1** 742 64* 542 542T742T542T942T442T7* T6* T** 7** 8** 6** 5** 1** 6** 7** 742 742 842 142 1** 1** 1** T172T27* 2** 2**2T272 2** 2** T272T272 2** 2** T272T272 2** 2** T272T2** 2** 2*72T272 2** 2** T272T272 2** 2** T272T242 1** 942 842 842 542 142 742 642T642T542T642T8* T** T** 8** 6** 6** 6** 8** 742 842 742T742T942T842T752T842T162 1** 2** T272T272 2** 2** T272T272 2** 2**2T272T2** 2** 2*72T272 2** 2** T272T272 2** 2** T272T27* 2** 2*72T272 2** 2** 8** 9** 6** 5** 9** 9** 6** 7** 742 842T642T642T542T6* T6* T6* 7** 9** 8** 7** 7** 8** 642 1** 942 9** 9** 1** 1*72T272 2** 2** T272T272 2** 2** T272T27* 2** 2**2T272 2** 2** 2*72T272 2** 2** T272T272 2** 2** T272T2** 2** 2*62T142T942T842T142T642T142T642T642T7* T** T** 8** 6** 6** 5** 8** 8** 642 742 842T642T742T742T7*2T142T152T152 1** 2** 2*72T272 2** 2** T272T272 2** 2** T272T27* 2** 2**2T272 2** 2** T272T272 2** 2** T272T272 2** 2**2T272 2** 2** T*52T842T742T642T152T742T742T542T6* T6* T8* 8** 1** 6** 6** 6** 8** 6** 7*2 642 752 742T842T742T742T7* T152T152T142 2** 2** T272T27* 2** 2*72T272 2** 2** T272T272 2** 2** T272T272 2** 2** T272T2** 2** 2*72T272 2** 2** T272T272 2** 1** T8*2T6* T** T7* 7** 6** 7** 1** 5** 6** 6** 8** 6** 6** 742 742T642T742T142T642T642T642T742T842T142 1** 9** 1** 1** T272T27* 2** 2*72T272 2** 2** T272T272 2** 2** T272T272 2** 2**2T272T2** 2** 2*72T272 2** 2** T272T272 2** 2** T172T742T942T842T74 T7* T4* T** 6** 1** 6** 7** 9** 4** 7** 642 742 142 842T742T142T842T642T742T142T852T952T952T15* 1** 2*72T272 2** 2** T272T272 2** 2** T272T272 2** 2** T272T27* 2** 2*72T272 2** 2** T272T272 2** 2** T272T272 2** 1** T** T** T7* 7** 7** 8** 7** 6** 6** 842 642 642T642T842T642T7* T** T** 6** 7** 8** 8** 6** 1** 8** 8** 7** 1** T172T27* 2** 2**2T272 2** 2** 2*72T272 2** 2** T272T272 2** 2**2T272T2** 2** 2*72T272 2** 2** T272T272 2** 2** T272T242 942 852 64* 74* 642 642T852T642T742T642T8* T6* T** T** 7** 9** 5** 6** 7** 7** 742 642 842T152 842 142 1** 1** T272T27* 2** 2**2T272 2** 2** T*72T272 2** 2** T272T272 2** 2** T272T27* 2** 2**2T272 2** 2** T272T272 2** 2** T262T742T642T942T142T142T842T842T832T6* T** T** 8** 6** 6** 7** 8** 542 842 842T742T742T842T8* T7* T8* T** T9* T152T27* 2** 2*72T272 2** 2** T272T272 2** 2** T272T272 2** 2**2T272T27* 2** 2*72T272 2** 2** T272T272 2** 2** T272T27* 2** 1** T** T** T8* T** 6** 6** 5** 6** 7** 8** 742 542 642T752T742T542T7* T8* T** T** 7** 6** 9** 7** 8** 1** 1** T252T272 2** 2** T272T272 2** 2**2T272T2** 2** 2*72T272 2** 2** T272T272 2** 2** T272T272 2** 2**2T272T2** 2** 2*72T152 642 742T742T752T742T542T742T742T8* T** T** 8** 6** 6** 6** 7** 642 642 942T842T642T742T8* T7* T** T152T152 1** 2** T272T272 2** 2** T272T272 2** 2**2T272T2** 2** 2*72T272 2** 2** T272T272 2** 2** T272T27* 2** 2**2T272T2** 2** 1*52T742T742T742T942T142T542T842T832T6* T** 9** 7** 5** 6** 9** 5** 642 742T742T642T642T74 T6* T** T** T** T9* T852T152 2** 2** T272T272 2** 2** T272T272 2** 2**2T272T2** 2** 2*72T272 2** 2** T272T272 2** 2** T272T272 2** 2**2T272T1** 8** 7** 6** 7** 7** 6** 542 432T542T742T642T542T6* T** T** 7** 7** 8** 8** 6** 642 642 842T842T842T942T152 1** 1** T272T272 2** 2** T272T27* 2** 2**2T272T2** 2** 2*72T272 2** 2** T272T272 2** 2** T272T27* 2** 2**2T272 2** 2** T*62T852T842T742T6*2T742T8* T** T** T** 5** 5** 9** 7** 6** 742 742 642T742T842T742T842T7* T** T** T142T152T842T15* 1** 2**2T272 2** 2** T*72T272 2** 2** T272T272 2** 2** T272T27* 2** 2**2T272T2** 2** 2*72T272 2** 2** T272T272 2** 1** T** 7** 7** 1** 1** T** T** T** T** T6* 6** 7** 7** 5** 6** 542 1** 642 852 742 742T542T842T142 942 942 1** 1** 1*72T272 2** 2** T272T272 2** 2** T272T272 2** 2** T272T27* 2** 2*72T272 2** 2** T272T272 2** 2** T272T272 2** 2**2T742T9* T152T752T842T142T142T542T642T742T6* T7* T** 6** 8** 6** 6** 7** 642 742 642T842T942T742T8* T9*2T152T1** 2** T*72T272 2** 2** T272T272 2** 2** T272T27* 2** 2*72T272 2** 2** T272T272 2** 2** T272T272 2** 2**2T272T2** 2** 2*52T542T842T142T142T842T8*2T4* T6* 6** 7** 7** 7** 5** 642 642 642T642T842T842T6* T7* 7** 7** 7** 1** 8** T152T952T25* 2** 2**2T272 2** 2** T272T272 2** 2** T272T272 2** 2** T272T27* 2** 2**2T272 2** 2** T272T272 2** 2** T272T272 1** 9** 7** 6** 9** 8** 6** 8** 742 642 142 642 642T542T642T642T7* T** T** T** T** T** 7** 7** 8** 1** 6** 1**2T9*2T152 2** 2** T272T272 2** 2** T272T272 2** 2** T272T27* 2** 2**2T272 2** 2** T272T272 2** 2** T272T272 2** 2** T272T15* 642 642 842T542T842T832T742T642T5* T** T** 7** 6** 5** 5** 8** 7** 8** 742 642 742T642T742T642T142T942T142T15* 1** 2*72T272 2** 2** T272T272 2** 2** T272T272 2** 2** T272T27* 2** 2*72T272 2** 2** T272T272 2** 2** T272T272 2** 1**2T9* T** T8* 1** T6* T** T** 6** 7** 5** 7** 6** 6** 542 842 742T642T842T542T642T6* T** T** T152T142T152T152 1** 1** 2*72T272 2** 2**
这是我收到的数据,好奇怪,能不能把你的那个完整例程发给我呀,我不会新建工程,使用的时候是把game_pad后面的ADC部分换掉
HELP
谢谢
而且我把sequence换成3的时候,提取出来的数据就不一样了
xyz549040622:
回复 chang liu11:
CCS的工程直接复制过去是不能直接使用的。你还是对adc的原理不清楚,出现错误的数据就很正常了。你替换的是哪部分的代码呢?想要实现什么样的功能呢?
chang liu11:
回复 xyz549040622:
外接传感器,接收数据,并且结算,我用的是keil5,ccs装上去不管哪个版本,都会出现缺少编译器,请问我该如何去做