laboratório de pds

24
Laboratório de PDS Prof. Luciano Scandelari UTFPR/DAELN

Upload: others

Post on 29-Jun-2022

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Laboratório de PDS

Laboratório de PDS Prof. Luciano Scandelari

UTFPR/DAELN

Page 2: Laboratório de PDS

KIT ARM F4

Page 3: Laboratório de PDS

CPU • STM32F407VGT6 microcontroller featuring 1 MB of Flash memory, 192 KB of RAM

• ● On-board ST-LINK/V2 with selection mode switch to use the kit as a standalone

• ● Board power supply: through USB bus or from an external 5V supply voltage

• ● External application power supply: 3V and 5V

• ● LIS302DL, ST MEMS motion sensor, 3-axis digital output accelerometer

• ● MP45DT02, ST MEMS audio sensor, omnidirectional digital microphone

• ● CS43L22, audio DAC with integrated class D speaker driver

• ● Eight LEDs:

• – LD1 (red/green) for USB communication

• – LD2 (red) for 3.3V power on

• – Four user LEDs, LD3 (orange), LD4 (green), LD5 (red) and LD6 (blue)

• – 2 USB OTG LEDs LD7 (green) VBus and LD8 (red) over-current

• ● Two pushbuttons (user and reset)

• ● USB OTG with micro-AB connector

• ● Extension header for LQFP100 I/Os for quick connection to prototyping board and easy probing

Page 4: Laboratório de PDS

Arquitetura

Page 5: Laboratório de PDS
Page 6: Laboratório de PDS

Exemplo

• Startup_stm32f4xx.s • Inicialização do ambiente C (stack e bss)

• Stm32f4_Discovery.c • Biblioteca de funções desta placa

• Stm32fxx_*.c • Biblioteca ST para ARM

• Main.c • Programa principal

• Stm32f4xx_it.c • Rotinas de serviço de interrupção

• System_stm32f4xx.c • Definições da CPU

Page 7: Laboratório de PDS

Otimização de código

• Otimização pode gerar código errôneo

• Cuidado com otimização

• Começar sem otimização e prosseguir otimizando

• Otimização pode ser: • Tamanho

• Velocidade

Page 8: Laboratório de PDS

Ligar o clock para cada periférico usado

/* Preconfiguration before using DAC----------------------------------------*/

GPIO_InitTypeDef GPIO_InitStructure;

/* DMA1 clock and GPIOA clock enable (to be used with DAC) */

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);

/* DAC Periph clock enable */

RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);

Page 9: Laboratório de PDS

Inicialização dos pinos

• Os pinos de I/O devem ser definidos como: • Entrada

• Saída (normal, open-drain)

• Função alternativa (serial, A/D, etc)

Page 10: Laboratório de PDS

Configuração do Timer Systick

if (SysTick_Config(SystemCoreClock / 1000))

{

/* Capture error */

while (1);

}

Page 11: Laboratório de PDS

Loop Principal

while (1)

{

while(Conversao==0);

STM_EVAL_LEDOn(LED3);

valor_DA = valor_AD;

Conversao=0;

STM_EVAL_LEDOff(LED3);

}

Aguarda interrupção

Liga LED3 – para medir tempo

Entrada (AD) Saída (DA)

Desliga LED3 – para medir tempo

Page 12: Laboratório de PDS

Não mexa na interrupção por enquanto!!!

AD valor_AD

Reinicia A/D

Valor_DA DA

Sinaliza que aconteceu a interrupção para main()

Toogle do LED4 para medir tempo de amostragem

Page 13: Laboratório de PDS

Interrupção

• Rotina feita para garantir tempo de amostragem sem jitter

• Jitter na amostragem = ruído

• Tempo de amostragem dado pelo tempo de interrupção

Page 14: Laboratório de PDS

PROCESSAMENTO

• O processamento deve ser feito no loop principal, ENTRE DUAS INTERRUPÇÕES

• Sempre medir o tempo de processamento através do pino LED3 (PD13)

• Sempre medir o tempo de amostragem através do pino LED4 (PD12)

• O tempo de processamento deve ser menor que o de amostragem

• Se não for menor, a amostragem ficará comprometida e o resultado errado

Page 15: Laboratório de PDS

Conversor A/D

• Conversor de 12 bits

• Valores de 0 a 2047

• Sempre mede níveis DC entre 0 e 3,3v

• PROTEJA A ENTRADA DO A/D !!!! • Máxima tensão = 3,3v

• Mínima tensão = 0v

• Sempre use um resistor de 1k em série e um zener de 3,9v em paralelo (ver circuito no quadro)

• Usar filtro anti-alias na entrada

Page 16: Laboratório de PDS

Conversor D/A

• Saída em 12 bits

• Saída de 0 a 3,3v DC

• Baixa corrente de saída (1mA)

• Usar filtro de reconstrução (anti-alias)

Page 17: Laboratório de PDS

Filtro Anti-Alias

• Usar um filtro de ordem 2 (filtro RC), com frequência de corte fc

• A frequência de corte fc (-3dB) deve ser acima da maior frequência do sinal que se pretende utilizar

• A frequência de corte fc deve ser inferior a frequência de amostragem

• A utilização do filtro anti-alias não deve interferir na curva de resposta do sistema (mas na prática interfere)

• O filtro na prática impõe uma frequência de amostragem superior ao Nyquist

Page 18: Laboratório de PDS

Alias

Page 19: Laboratório de PDS

Curva de resposta

Page 20: Laboratório de PDS

Escolha do filtro

Page 21: Laboratório de PDS

Filtro Ativo

Page 22: Laboratório de PDS

Filtro ativo com amp-op

Page 23: Laboratório de PDS

Filtro ativo com amp-op

Page 24: Laboratório de PDS

Exp 1 – Scope Digital com trigger

• Scope Digital com entrada no A/D

• Trigger

• Frequência de amostragem (por equipe)

• Enviar os dados via interface serial

• Usar o modo “terminal” do programa de gráficos

• Teclas: + aumenta em 1kHz a frequência de amostragem

- diminui 1kHz a frequência de amostragem