Anda di halaman 1dari 17

Application Report

SPMA001A - Junho de 2009 - Revisto janeiro 2013

®
ADC Técnicas Oversampling para Stellaris
microcontroladores da família
Eric Ocasio

ABSTRATO
Alguns membros da família de microcontroladores Stellaris ter um módulo conversor analógico-digital
(ADC). A resolução do ADC hardware é de 10 bits; no entanto, devido ao ruído e outros fatores de
precisão diminuindo, a verdadeira precisão é inferior a 10 bits. Este relatório proporciona uma técnica de
aplicação de sobreamostragem baseado em software, resultando em um número eficaz melhorada de bits
(ENOB) no resultado da conversão. Este documento descreve os métodos de oversampling um sinal de
entrada, e o impacto sobre a precisão e desempenho geral do sistema.

Conteúdo
1 oversampling ........................................................................................................................................................1
2 média ....................................................................................................................................................................2
3 Implementação .....................................................................................................................................................4
4 Oversampling mais de 8 vezes usando vários sequenciadores ou um temporizador ...........................................6
5 Oversampling Usando um rolamento médio .......................................................................................................10
6 Questões a considerar ........................................................................................................................................11
7 Conclusão ...........................................................................................................................................................12
8 Referências.........................................................................................................................................................12

Lista de Figuras
1 Resultados de conversão médios .........................................................................................................................2
2 Média normal ........................................................................................................................................................3
3 Média Móvel .........................................................................................................................................................4
4 Sobreamostragem por 16 .....................................................................................................................................6

1 oversampling
Como o nome implica, sobreamostragem reúne os dados de conversão adicionais a partir de um sinal de
entrada. convenção padrão para a amostragem de um sinal analógico que indica a frequência de
amostragem fs deve ser pelo menos o dobro da maior frequência componente f Hdo sinal de entrada. Isto
é referido como o Teorema de Nyquist (verequação 1).
Nyquist Teorema FS = 2 FH
(1)
Qualquer frequência de amostragem seleccionada acima da f Sé considerado como sendo de
sobreamostragem, e quando combinado com técnicas de amostragem, melhora a ENOB. Isto é
possível porque a média dos resultados de sobreamostragem também calcula a média do ruído de
quantização, por conseguinte, melhorar a relação sinal-para-ruído (SNR), que tem um efeito directo
sobre o ENOB.
Para cada bit de melhora a precisão, o sinal deve ser amostrado por um fator de quatro, o que significa
que a relação entre a frequência oversampling f OS e frequência de amostragem fS é como se mostra na
equação 2.
FOS = 4X *F
Frequência oversampling S (2)
em que x é a melhoria desejada na ENOB (por exemplo, durante dois bits de melhoria, x = 2).
Stellaris é uma marca registrada da Texas Instruments.
Todas as outras marcas comerciais são propriedade dos seus respectivos proprietários.

ADC Técnicas Oversampling para Stellaris® microcontroladores da


SPMA001A -junho 2009 Revisado jan 2013 família 1
Apresentar documentação comentários
Copyright © 2009-2013, Texas Instruments Incorporated
média www.ti.com

figura 1 mostra como oversampling melhora a precisão do resultado da conversão. Neste diagrama, a
sinal de entrada é amostrado por quatro (grupos de amostras são apresentados em verde e roxo) e
média. Os pontos de amostragem indicados ilustrar a diferença entre a matéria, o sinal ruidoso e média; o
ruído neste exemplo afectando ± 3 bits de precisão sobre uma amostra individual. Note-se que a média
dos valores (pontos laranja) são muito mais próximo do valor ideal do que a maioria das amostras
individuais.
Valor de conversão

grupo amostra
510
média

505 onda de entrada

500

495

490

As amostras
485
individuais

480

grupo amostra

Figura 1. Os resultados médios de Conversão

2 média
Calculando a média actua como um filtro passa-baixo do sinal de entrada, com a banda de passagem
do filtro estreitando medida que o tamanho da amostra aumenta. Quando uma média de resultados de
conversão, existem duas abordagens que podem ser tomadas: média normal ou média rolante.

2.1 Média normal


Tomando amostras n, adicionando-os e dividindo o resultado por n é referido como uma média
normal, e é mostrado na figura 1. Quando se utiliza a média normal num cenário de
sobreamostragem, após a técnica é aplicada, os dados de amostra utilizados no cálculo é
descartado. Este processo é repetido cada vez que o aplicativo precisa de um novo resultado da
conversão.
Em uma aplicação, a abordagem normal de média é de preferência utilizada nos casos em que a
frequência de amostragem é baixa em comparação com a taxa de amostragem do ADC.

NOTA: Importante: Quando sobreamostragem de n num cenário de média normal, a taxa de


amostragem ADC eficaz é reduzida pelo mesmo fator de n. Por exemplo, sobre-
amostragem de um sinal de entrada por 4 corta a taxa de amostragem ADC eficaz máxima
de 4, o que significa que um 250K-amostras / s ADC torna-se eficazmente a / s ADC 62.5K-
amostras.
Copyright © 2009-2013, Texas Instruments Incorporated
www.ti.com média

Figura 2 mostra uma situação em que a média normal é usada para oversample uma fonte de entrada por
4. Para este exemplo, a aplicação requer que um novo valor de conversão estar pronto (média completa),
em cada passo de t (t0, t1, t2, e assim por diante).
Quando se utilizam técnicas de amostragem, há um ligeiro atraso associado com o resultado da
conversão calculada, uma vez que corresponde à média dos últimos n amostras. O atraso pode ser
calculado utilizando a fórmula apresentada naequação 3.
t
demo
= t
(
-t ) /2+t
Amostra média Delay ra sn s0 processo (3)
onde tS0 é o tempo em que a primeira amostra da média ocorre, e tSné onde ocorre a última amostra. O
tempo necessário para o manipulador de interrupção para processar os dados de amostra e calcular a
média
tprocesso para fornecer ao aplicativo também é tido em conta na equação. EmFigura 2, O resultado da
conversão é retardada em destaque na laranja.
Valor de conversão
amostra média disponível
tdemora

onda de entrada

t0 t1 t2
tS0 tSn

Figura 2. Cálculo da média normal

2.2 Média Móvel


Uma média móvel utiliza um tampão de amostra do n amostras mais recentes no cálculo da média,
permitindo que o ADC para provar a sua taxa máxima (a taxa de amostragem ADC não é reduzida por n,
em média normal), tornando-o ideal para aplicações que requerem sobreamostragem e altas taxas de
amostragem. O tamp de amostra pode ser pré-preenchido com dados válidos amostra (tomando N-1
amostras antes do primeiro “real” ponto de dados), ou pode ser deixado num estado desconhecido,
dependendo da aplicação. A desvantagem de não enchimento prévio do tampão é que as primeiras
amostras N-1 contêm dados inválidos e afectar adversamente o cálculo da média rolante. Se for aceitável
pela aplicação, tampão de preenchimento pode ser eliminado se o software pode ter em conta a
possibilidade das primeiras amostras N-1 ser enviesada.
Figura 3 mostra um exemplo de sobreamostragem, com uma média rolante. O diagrama mostra um caso
em que o sinal de entrada é amostrado por 4, o que significa que o tampão de amostra utiliza as quatro
amostras mais recentes para calcular a média. Neste exemplo, a aplicação requer uma nova amostra em
cada etapa de t. Antes do primeiro resultado de sobre-amostrado é calculado no momento t0, o tampão
de amostra recolhe três amostras de modo que os primeiros dados fornecidos para a aplicação é válido.
Quando se utiliza uma média móvel, o mesmo atraso amostra calculada pela equação 3 aplica-se.
EmFigura 3, Os valores retardados para t0, t1 e t2 (mostrado como D0, D1 e D2, respectivamente) são
destacadas em cor de laranja.
Importante: Utilizando uma média móvel adiciona sobrecarga de processamento adicional
devido à manipulação tampão de amostra que tem de ser realizada durante cada interrupção.
Copyright © 2009-2013, Texas Instruments Incorporated
Implementação www.ti.com

Valor de conversão d1
d0 d2

onda de entrada

t
t0 t5 t10 t15 t20

Figura 3. rolamento médio

3 Implementação
A arquitectura sequenciador amostra no ADC torna simples sobreamostragem por permitindo até 17
amostras originais (a partir de qualquer um dos canais analógicos) para ser recolhido usando um único
gatilho. Isto permite uma flexibilidade no software, fornecendo os meios para uma aplicação para
oversample um número de canais em qualquer momento dado.
Esta secção apresenta várias implementações de sobreamostragem utilizando os microcontroladores
Stellaris. Existem inúmeros métodos que funcionam utilizando combinações de configurações do
sequenciador de amostra, gatilhos ADC e interrupções, no entanto, os exemplos mostrados aqui se
concentrar em técnicas que têm mais probabilidade de ser usado.
Todo o código exemplo usa as funções da biblioteca ADC dos controladores de periféricos Stellaris. O
código fonte para a biblioteca de drivers e os exemplos de software apresentados nesta nota de
aplicação pode ser encontrada no website emhttp://www.ti.com.

3.1 Oversampling até 8 vezes usando as funções de biblioteca driver


A biblioteca de drivers periféricos Stellaris foi construído com funções que permitem oversampling até
8 vezes. Para a maioria das aplicações, este nível de oversampling é suficiente desde a melhoria na
ENOB é de aproximadamente 1,4 pedaços.
Usando as funções de oversampling Driver Library é a maneira mais fácil de oversample o sinal de
entrada. A principal diferença entre configurar uma conversão “típico” ADC e uma conversão de
sobreamostragem é as chamadas de função. As funções oversampling tem um prefixo
ADCSoftwareOversample, e distinguem-se facilmente a partir das funções ADC padrão.
Uma vez que os parâmetros para o processo de conversão do ADC são determinadas (frequência de
amostragem, fonte de disparo, o canal, e assim por diante), escrever o código é simples. Por exemplo, o
código para definir-se uma conversão periódica 10-ms (desencadeado por um temporizador) que é sobre-
amostrado por 8 consiste nos segmentos de código mostrado naExemplo 1.

4 ADC Técnicas Oversampling para Stellaris® microcontroladores da família SPMA001A -junho 2009 Revisado jan 2013
Apresentar documentação comentários
Copyright © 2009-2013, Texas Instruments Incorporated
www.ti.com Implementação

3.2 8x Oversampling com as funções Driver Library

Exemplo 1.a. Segmento 1. Código Configuração do ADC - Funções da Biblioteca do Driver

//
// Inicializar o ADC para oversample canal 1 por 8x usando sequenciador 0.
// Sequencer será disparado por um dos temporizadores de propósito geral.
//
ADCSequenceConfigure (ADC_BASE, 0, ADC_TRIGGER_TIMER, 0);
ADCSoftwareOversampleConfigure (ADC_BASE, 0, 8);
ADCSoftwareOversampleStepConfigure (ADC_BASE, 0, 0, (ADC_CTL_CH1
\ | ADC_CTL_IE | ADC_CTL_END));
//
// Inicializar Temporizador 0 para acionar uma conversão ADC uma vez a cada 10 milissegundos
//
TimerConfigure (TIMER0_BASE, TIMER_CFG_32_BIT_PER);
TimerLoadSet (TIMER0_BASE, TIMER_A, SysCtlClockGet () /
100); TimerControlTrigger (TIMER0_BASE, TIMER_A, true);

A configuração mostrada na ADC 1.a segmento de código dita que uma interrupção ocorre quando a
amostragem for concluída, o que significa que um manipulador de interrupção deve ser implementada
(ver 1.b segmento de código). Desde as funções oversampling Biblioteca condutor médio
automaticamente os dados amostrados, a função de manipulador de interrupção é relativamente
básico. Tenha em mente que ter a média calculada durante cada interrupção adiciona sobrecarga
computacional para o manipulador de interrupção.

Exemplo 1.b. Segmento 2. Código ADC interrupção Handler

vazio
ADCIntHandler (void)
{
lStatus longos;
//
// Desmarque a interrupção ADC
//
ADCIntClear (ADC_BASE, 0);
//
// Obter dados médios do ADC
//
lStatus = ADCSoftwareOversampleDataGet (ADC_BASE, 0, & g_ulAverage);
//
// Espaço reservado para o código de processamento de ADC
//
}

ADC Técnicas Oversampling para Stellaris® microcontroladores da


SPMA001A -junho 2009 Revisado jan 2013 família 5
Apresentar documentação comentários
Copyright © 2009-2013, Texas Instruments Incorporated
Oversampling mais de 8 vezes usando vários sequenciadores ou um temporizador www.ti.com

Com as etapas de configuração e manipulador de interrupção no lugar, o processo de conversão é


iniciada. Antes do temporizador está ligado (começa a contagem), o sequenciador ADC e interromper
deve estar habilitado (verCódigo 1.c segmento).

Exemplo 1.c Segmento 3. Código Ativando o ADC e interrupções

//
// Ativar ADC sequenciador 0 e sua interrupção (tanto na ADC e NVIC)
//
ADCSequenceEnable (ADC_BASE,
0); ADCIntEnable (ADC_BASE, 0);
IntEnable (INT_ADC0);
//
// Ativar o temporizador e iniciar o processo de conversão
//
TimerEnable (TIMER0_BASE, TIMER_A);

4 Oversampling mais de 8 vezes usando vários sequenciadores ou um temporizador


As funções da biblioteca oversampling driver estão limitados a sobreamostragem por 8 vezes (com
base nas limitações dos sequenciadores de amostra de hardware), o que significa que as aplicações
que requerem factores de sobreamostragem maiores devem usar uma implementação alternativa. Esta
secção mostra como se aproximar de uma situação tal, utilizando dois métodos: múltiplo
sequenciadores de amostra e um temporizador que funciona na frequência de sobre-amostragem.

4.1 16x sobreamostragem Usando vários Sequenciadores Amostra


A flexibilidade do sequenciador de amostra permite que uma grande variedade de configurações. Para
oversample por 16, sequenciadores de amostras de 0-2 pode ser usado desde que a sua capacidade
acumulada é de 16 amostras (8 + 4 + 4). Para este nível de oversampling para trabalhar, todas as
etapas dos sequenciadores deve ser definido para provar a mesma entrada analógica, ou seja, a
capacidade de experimentar várias entradas usando um único seqüenciador está perdido.
2.a segmento de código configura uma conversão periódica de 10 ms utilizando sequenciadores 0-2. Um
disparador é único temporizador utilizado para iniciar a amostragem em todos os 3 sequenciadores,
eliminando a necessidade de configurações complexas de gatilho. Para obter o resultado desejado, as
prioridades amostra do sequenciador são configurados de tal forma que amostra sequenciador 2 tem a
prioridade mais baixa (o que significa que as amostras últimos), e o “fim da conversão de” interrupção é
configurado para afirmar após o último passo da sequência de amostras de 2 (tal como mostrado
naFigura 4).
Valor de conversão
Desencade
ar
gerado onda de entrada
SS0 SS1 SS2

interromper gerado

SSx = Amostra X Sequencer

Figura 4. sobreamostragem por 16


www.ti.com Oversampling mais de 8 vezes usando vários sequenciadores ou um
temporizador
Exemplo 2.a. Segmento 4. Código Configuração do ADC - Vários sequenciadores Amostra

//
// Inicializar o ADC para 16x sobreamostragem no canal 1 usando sequenciadores
// 0-2. A conversão é desencadeada por uma GPTM.
//
ADCSequenceConfigure (ADC_BASE, 0, ADC_TRIGGER_TIMER,0);
ADCSequenceConfigure (ADC_BASE, 1, ADC_TRIGGER_TIMER,1);
ADCSequenceConfigure (ADC_BASE, 2, ADC_TRIGGER_TIMER,2);
//
// Configurar passos de sequência para 0 sequenciador
//
ADCSequenceStepConfigure (ADC_BASE, 0, 0, ADC_CTL_CH1);
ADCSequenceStepConfigure (ADC_BASE, 0, 1, ADC_CTL_CH1);
ADCSequenceStepConfigure (ADC_BASE, 0, 2, ADC_CTL_CH1);
ADCSequenceStepConfigure (ADC_BASE, 0, 3, ADC_CTL_CH1);
ADCSequenceStepConfigure (ADC_BASE, 0, 4, ADC_CTL_CH1);
ADCSequenceStepConfigure (ADC_BASE, 0, 5, ADC_CTL_CH1);
ADCSequenceStepConfigure (ADC_BASE, 0, 6, ADC_CTL_CH1);
ADCSequenceStepConfigure (ADC_BASE, 0, 7, (ADC_CTL_CH1|ADC_CTL_END));
//
// Configurar passos de sequência para um sequenciador
//
ADCSequenceStepConfigure (ADC_BASE, 1, 0, ADC_CTL_CH1);
ADCSequenceStepConfigure (ADC_BASE, 1, 1, ADC_CTL_CH1);
ADCSequenceStepConfigure (ADC_BASE, 1, 2, ADC_CTL_CH1);
ADCSequenceStepConfigure (ADC_BASE, 1, 3, (ADC_CTL_CH1|ADC_CTL_END));
//
// Configurar passos de sequência para sequenciador dois
//
ADCSequenceStepConfigure (ADC_BASE, 2, 0, ADC_CTL_CH1);
ADCSequenceStepConfigure (ADC_BASE, 2, 1, ADC_CTL_CH1);
ADCSequenceStepConfigure (ADC_BASE, 2, 2, ADC_CTL_CH1);
ADCSequenceStepConfigure (ADC_BASE, 2, 3, (ADC_CTL_CH1|ADC_CTL_IE|ADC_CTL_END));
//
// Inicializar Temporizador 0 para acionar uma conversão ADC uma vez a cada 10 milissegundos
//
TimerConfigure (TIMER0_BASE, TIMER_CFG_32_BIT_PER);
TimerLoadSet (TIMER0_BASE, TIMER_A, SysCtlClockGet () / 100);
TimerControlTrigger (TIMER0_BASE, TIMER_A, true);

No Segmento de Código 2.b, o manipulador de interrupção deve reunir os dados das FIFOs e executar o cálculo
da média. A função ADCSequenceDataGet não é usada aqui, uma vez que os resultados desejados são obtidos
sem ter que lidar com o overhead(estress) da função, portanto, leituras de registro diretas são usadas para
esvaziar os FIFOs do seqüenciador. O uso de ADCSequenceDataGet requer que a função defina um buffer de
amostra extra de 8 entradas. Mesmo com leituras de registros diretos, ainda há uma sobrecarga computacional
dos cálculos de soma e média executados no manipulador de interrupção.
Exemplo 2.b. Segmento 5. Código ADC interrupção Handler

void
ADCIntHandler(void) {
unsigned long ulIdx;
unsigned long ulSum = 0;
//
// Clear the interrupt
//
ADCIntClear(ADC_BASE, 2);
//
// Get the data from sequencer 0
ADC Técnicas Oversampling para Stellaris® microcontroladores da
SPMA001A -junho 2009 Revisado jan 2013 família 7
Apresentar documentação comentários
Copyright © 2009-2013, Texas Instruments Incorporated
Oversampling mais de 8 vezes usando vários sequenciadores ou um temporizador www.ti.com

Exemplo 2.b. Segmento 5. Código ADC interrupção Handler (continuação)


//
for(ulIdx = 8; ulIdx; ulIdx--)
{
ulSum += HWREG(ADC_BASE + ADC_O_SSFIFO0);
}
//
// Get the data from sequencers 1 and 2
//
for(ulIdx = 4; ulIdx; ulIdx--)
{
ulSum += HWREG(ADC_BASE + ADC_O_SSFIFO1);
ulSum += HWREG(ADC_BASE + ADC_O_SSFIFO2);
}
//
// Average the oversampled data
//
g_ulAverage = ulSum >> 4;
//
// Place holder for ADC processing code
//
}

Antes de iniciar o processo de conversão, os seqüenciadores de amostra e as interrupções são


ativadas (ver Código 2.c segmento).

Exemplo 2.c. Segment 6. Código Ativando o ADC e interrupções

//
// Ative os sequenciadores e interromper
//
ADCSequenceEnable (ADC_BASE,0);
ADCSequenceEnable (ADC_BASE,1);
ADCSequenceEnable (ADC_BASE,2);
ADCIntEnable (ADC_BASE, 2);
IntEnable (INT_ADC2);
//
// Ativar o temporizador e iniciar o processo de conversão
//
TimerEnable (TIMER0_BASE, TIMER_A);

8 ADC Técnicas Oversampling para Stellaris® microcontroladores da família SPMA001A -junho 2009 Revisado jan 2013
Apresentar documentação comentários
Copyright © 2009-2013, Texas Instruments Incorporated
www.ti.com Oversampling mais de 8 vezes usando vários sequenciadores ou um
temporizador

4,2 16x Oversampling Usando um temporizador a correr em fOS


Outra maneira de oversample (sem consumir uma grande parte dos recursos ADC sequenciador) é
usando um timer periódico que é executado na freqüência oversampling. Por exemplo, se uma conversão
devem ser devolvidos para a aplicação principal a cada 10 ms e deve ser sobreamostrado por 16, um
temporizador pode ser configurado para ter uma única amostra a cada 625 us. Tendo o gatilho
temporizador uma conversão na frequência de oversampling, obviamente, gera ADC adicional de
interrupção de tráfego, que devem ser contabilizados na aplicação.
O código que configura a ADC e temporizador para operar como esta é apresentada na 3.a segmento de
código.

Exemplo 3.a. Segmento 7. Código Configuração do ADC - temporizador a correr em fOS

//
// Inicializar o ADC para levar uma única amostra no canal 1, 3 sequenciador
// quando um gatilho é detectado.
//
ADCSequenceConfigure (ADC_BASE, 3, ADC_TRIGGER_TIMER, 0);
ADCSequenceStepConfigure (ADC_BASE, 3, 0, (ADC_CTL_CH1 | ADC_CTL_IE | ADC_CTL_END));
//
// Inicializar Temporizador 0 para acionar uma conversão ADC uma vez a cada 625 microssegundos
//
TimerConfigure (TIMER0_BASE, TIMER_CFG_32_BIT_PER);
TimerLoadSet (TIMER0_BASE, TIMER_A, SysCtlClockGet () / 1600);
TimerControlTrigger (TIMER0_BASE, TIMER_A, true);

Agora que a ADC é a amostragem na frequência de oversampling, o manipulador de interrupção deve


manter o controle do número de amostras colhidas e a soma global (ver 3.b segmento de código).
Quando 16 conversões foram acumulados, a média é realizada e as variáveis globais de contagem de
amostra e soma são apagadas.

Exemplo 8. Segmento de código 3.b. ADC interrupção Handler

{
//
// Desmarque a interrupção
//
ADCIntClear (ADC_BASE, 3);
//
// Adicionar a nova amostra para a soma global de
//
g_ulSum + = HWREG (ADC_BASE + ADC_O_SSFIFO3);
//
// incremento g_ucOversampleCnt
//
g_ucOversampleCnt ++;
//
// Se 16 amostras têm acumulado, média-los e redefinir globals
//
se (g_ucOversampleCnt == 16)
{
g_ulAverage = g_ulSum >> 4;
g_ucOversampleCnt = 0;
g_ulSum = 0;
}
//
// Espaço reservado para o código de processamento de ADC
//
}

Finalmente, antes de activar o temporizador, sequenciador 3 e sua interrupção são habilitados, e as


variáveis de contador e soma globais são apagadas (ver 3.c segmento de código).

Copyright © 2009-2013, Texas Instruments Incorporated


Oversampling Usando um rolamento médio www.ti.com

Exemplo 9. Segmento 3.c. Código Ativando o ADC, interrupções e variáveis globais

//
// Permitir que o sequenciador e interromper
//
ADCSequenceEnable (ADC_BASE,
3); ADCIntEnable (ADC_BASE, 3);
IntEnable (INT_ADC3);
//
// Zero o contador oversample e a soma
//
g_ucOversampleCnt = 0;
g_ulSum = 0;
//
// Ativar o temporizador e iniciar o processo de conversão
//
TimerEnable (TIMER0_BASE, TIMER_A);

5 Oversampling Usando um rolamento médio


A abordagem média móvel é útil em situações em que a frequência de amostragem é mais próxima
da taxa máxima de amostra do ADC. O componente principal de um pedido de média móvel é o
tampão da amostra, o que elimina e adiciona dados de cada vez que uma conversão completa.
Em seção 5.1, O ADC é configurado para provar uma vez a cada 100 uS, e o tampão de amostra
contém 16 entradas. Note-se que a aplicação não preencher previamente o tampão de amostra com
dados válidos, de modo que as primeiras 16 amostras devem ser tratadas em conformidade por um
software. Este dispositivo está configurado para provar a um gatilho temporizador, e interrompe o
processador depois de cada conversão.

5.1 Oversampling Usando um rolamento média a cada 100 microssegundos

Exemplo de código 10. 4.A Segmento Configuração do ADC - Média Móvel

//
// Inicializar o ADC para levar uma única amostra no canal 1, 3 sequenciador
// quando um gatilho é detectado.
//
ADCSequenceConfigure (ADC_BASE, 3, ADC_TRIGGER_TIMER, 0); ADCSequenceStepConfigure (ADC_BASE, 3, 0,
(ADC_CTL_CH1 | ADC_CTL_IE | ADC_CTL_END));
//
// Inicializar Temporizador 0 para acionar uma conversão ADC uma vez a cada 100 microssegundos
//
TimerConfigure (TIMER0_BASE, TIMER_CFG_32_BIT_PER);
TimerLoadSet (TIMER0_BASE, TIMER_A, SysCtlClockGet () / 10000);
TimerControlTrigger (TIMER0_BASE, TIMER_A, true);

O manipulador de interrupção é responsável pela actualização do tampão de amostra e realizar o cálculo


da média (ver 4.b segmento de código). Para cada interrupção ADC, o último elemento no tampão de
amostra é descartada, e os dados restantes é deslocado mais de um lugar no buffer. O novo resultado
de conversão é, em seguida, colocados no início do tampão de amostra antes que a média é calculada.
Mais uma vez, os cálculos adicionais realizadas no manipulador de interrupção adicionar sobrecarga que
deve ser levado em conta.

Exemplo de código 11. Segmento 4.b. ADC interrupção Handler

vazio
ADCIntHandler (void)
{

10 ADC Técnicas Oversampling para Stellaris® microcontroladores da família SPMA001A -junho 2009 Revisado jan 2013
Apresentar documentação comentários
www.ti.com Questões a
considerar

Exemplo de código 11. Segmento 4.b. ADC interrupção Handler (continuação)


//
// Desmarque a interrupção
//
ADCIntClear (ADC_BASE, 3);
//
// Verifique g_ucOversampleIdx para se certificar de que ela está dentro do alcance
//
se (g_ucOversampleIdx == 16)
{
g_ucOversampleIdx = 0;
}
//
// Subtrair o valor mais antiga da soma global de
//
g_ulSum - = g_ulSampleBuffer [g_ucOversampleIdx];
//
// Substitua o valor mais antigo com o novo valor da amostra
//
g_ulSampleBuffer [g_ucOversampleIdx] = HWREG (ADC_BASE + ADC_O_SSFIFO3);
//
// Adicione a nova amostra para o montante global
//
g_ulSum + = g_ulSampleBuffer [g_ucOversampleIdx];
//
// incremento g_ucOversampleIdx
//
g_ucOversampleIdx ++;
//
// Obter o valor médio a partir de dados do registo de amostras
//
g_ulAverage = g_ulSum >> 4;
//
// Espaço reservado para o código de processamento de ADC
//
}

Mais uma vez, antes que o timer é iniciado, o sequenciador e sua interrupção são habilitados (veja 4.c
segmento de código).

Exemplo de código 12. Segmento 4.c. Ativando o ADC e interrupções

//
// Permitir que o sequenciador e a interrupção
//
ADCSequenceEnable (ADC_BASE,
3); ADCIntEnable (ADC_BASE, 3);
IntEnable (INT_ADC3);

//
// Ativar o temporizador e iniciar o processo de conversão
//
TimerEnable (TIMER0_BASE, TIMER_A);

6 Questões a considerar
As técnicas oversampling descritos neste documento têm um impacto óbvio sobre o desempenho geral do
sistema, uma vez que requerem código adicional para executar os cálculos de média, as interrupções
adicionais, ea maior parte dos recursos do sequenciador de amostras. Escolhendo a técnica que melhor
se adequa à aplicação requer analisar os trade-offs entre o tráfego de interrupção aumentou e
manipuladores de interrupção mais volumosos.

SPMA001A -junho 2009 Revisado jan 2013 ADC Técnicas Oversampling para Stellaris® microcontroladores da 11
família
Apresentar documentação comentários
Copyright © 2009-2013, Texas Instruments Incorporated
Conclusão www.ti.com

7 Conclusão
A arquitetura de exemplo sequenciador oferece uma ampla gama de opções para a
implementação de técnicas de oversampling. Quando combinado com média software, a
arquitetura permite que os designers de sistema para efetivamente fazer a engenharia trade-offs
entre frequência de amostragem, o desempenho do sistema e resolução de amostragem.

8 Referências
Os seguintes documentos e software relacionados estão disponíveis no site da Stellaris
em: www.ti.com/stellaris:
• Folha Stellaris LM3S microcontrolador de dados (documentos de dispositivos individuais
disponíveis através produtos ferramenta de seleção).
• Biblioteca de Drivers Periféricos Stellaris. Disponível para download emwww.ti.com/tool/sw-drl.
• StellarisWare Usuário do Driver Library Manual, publicação SW-DRL-UG (SPMU019)

12 ADC Técnicas Oversampling para Stellaris® microcontroladores da família SPMA001A -junho 2009 Revisado jan 2013
Apresentar documentação comentários
Copyright © 2009-2013, Texas Instruments Incorporated
NOTÍCIA IMPORTANTE
Texas Instruments Incorporated e suas subsidiárias (TI) reservamos o direito de fazer correções, melhorias, melhorias e outras alterações
aos seus produtos e serviços semicondutores por JESD46, última edição, e descontinuar qualquer produto ou serviço por JESD48, última
edição. Os compradores devem obter a última informação relevante antes de fazer pedidos e deve verificar que tais informações sejam
atuais e completas. Todos os produtos semicondutores (também referidos aqui como “componentes”) são vendidos sujeitos aos termos e
condições de venda fornecidos no momento da confirmação do pedido de TI.
TI garante desempenho de seus componentes com as especificações aplicáveis no momento da venda, de acordo com a garantia, em
termos e condições de venda de produtos semicondutores da TI. técnicas de teste e outro de controle de qualidade são utilizados na
medida em julgar necessário TI para apoiar esta garantia. Exceto quando exigido por lei aplicável, testes de todos os parâmetros de cada
componente não é necessariamente executada.
TI não assume qualquer responsabilidade assistência aplicações ou a concepção de produtos dos compradores. Os compradores
são responsáveis pelos seus produtos e aplicações que utilizam componentes de TI. Para minimizar os riscos associados aos
produtos e aplicações dos compradores, os compradores devem fornecer garantias de projeto e operação adequados.
A TI não garante nem declara que qualquer licença, expressa ou implícita, é concedido sob qualquer direito de patente, direitos de autor, a
máscara de trabalho certo, ou outro direito de propriedade intelectual relacionada a qualquer combinação, máquina ou processo em que
são utilizados componentes ou serviços de TI . Informações publicadas pela TI em relação a produtos ou serviços de terceiros não constitui
uma licença para utilizar tais produtos ou serviços, ou uma garantia ou endosso dos mesmos. Uso de tais informações pode exigir uma
licença de um terceiro, nas patentes ou outros direitos de propriedade intelectual de terceiros, ou de uma licença de TI sob as patentes ou
outros direitos de propriedade intelectual de TI.
A reprodução de porções significativas da informação da TI em livros de dados TI ou folhas de dados só é permitida se reprodução é sem
alteração e é acompanhada por garantias todos associados, condições, limitações, e os avisos. TI não é responsável por tal
documentação alterada. Informações de terceiros pode estar sujeito a restrições adicionais.
Revenda de componentes ou serviços com declarações diferentes a partir de ou para além dos parâmetros estabelecidos pela TI para
esse componente ou serviço anula todos os expressam e quaisquer garantias implícitas para o componente de TI associado ou serviço
de TI e é uma prática comercial desleal e enganosa. TI não é responsável por quaisquer dessas declarações.
Comprador reconhece e concorda que é o único responsável pelo cumprimento de todos os requisitos legais, regulamentares e
relacionadas com a segurança relativamente aos seus produtos, bem como qualquer utilização de componentes de TI em suas aplicações,
independentemente de qualquer informação ou suporte aplicações relacionadas que podem ser fornecidos por TI. Comprador representa e
concorda que ele tem todo o conhecimento necessário para criar e implementar salvaguardas que antecipam perigosas consequências de
falhas, falhas do monitor e as suas consequências, diminuir a probabilidade de falhas que podem causar danos e tomar ações corretivas
apropriadas. Comprador indenizará totalmente TI e seus representantes contra quaisquer danos que surjam do uso de quaisquer
componentes da TI em aplicações de segurança crítica.
Em alguns casos, os componentes da TI pode ser promovido especificamente para facilitar aplicações de segurança. Com tais
componentes, o objetivo da TI é ajudar permitem que os clientes para projetar e criar suas próprias soluções de produto final que
atendam às normas de segurança funcionais aplicáveis e exigências. No entanto, esses componentes estão sujeitas a estes termos.
Nenhum dos componentes de TI são autorizadas para utilização em FDA Classe III (ou equipamento médico crítico de vida similar) a
menos que os oficiais autorizados das partes assinam um acordo especial que rege especificamente tal uso.
Somente os componentes de TI que TI tem especificamente designados como nível militar ou “plástica reforçada” são projetados e
fabricados para uso em aplicações militares / aeroespaciais ou ambientes. Comprador reconhece e concorda que qualquer uso militar ou
aeroespacial dos componentes de TI que não foram assim designados é exclusivamente por risco do comprador, e que o comprador é o
único responsável pelo cumprimento de todos os requisitos legais e regulamentares em relação a tal uso.
A TI especificamente designado certos componentes como satisfazendo requisitos da norma ISO / TS16949, principalmente para a
indústria automóvel. Em todo o caso de uso de produtos não-designada, TI não será responsável por qualquer falha para cumprir a norma
ISO / TS16949.
Produtos aplicações
auditivo www.ti.com/audio Automotiva e Transporte www.ti.com/automotive
amplificadores amplifier.ti.com Comunicações e Telecom www.ti.com/communications
Conversores de dados dataconverter.ti.com Computadores e Periféricos www.ti.com/computers
produtos DLP ® www.dlp.com Eletrônicos de consumo www.ti.com/consumer-apps
DSP dsp.ti.com Energia e Iluminação www.ti.com/energy
Relógios e temporizadores www.ti.com/clocks Industrial www.ti.com/industrial
Interface interface.ti.com Médico www.ti.com/medical
Lógica logic.ti.com Segurança www.ti.com/security
poder Mgmt power.ti.com Espaço, Avionics e Defesa www.ti.com/space-avionics-defense
microcontroladores microcontroller.ti.com Vídeo e Imagem www.ti.com/video
RFID www.ti-rfid.com
Aplicações OMAP Processadores www.ti.com/omap TI Comunidade E2E e2e.ti.com
Conectividade sem fio www.ti.com/wirelessconnectivity

Endereço para correspondência: Texas Instruments, Caixa Postal 655303, Dallas, Texas 75265
Copyright © 2013, Texas Instruments Incorporated

Anda mungkin juga menyukai