TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

ECO033 – Sistemas Embarcados

Por:   •  18/4/2017  •  Relatório de pesquisa  •  2.716 Palavras (11 Páginas)  •  372 Visualizações

Página 1 de 11

ECO033 – Sistemas Embarcados

Prática Extra:

Uso de Serial, Joystick e RS232

Procedimento

1. Criar um novo projeto chamado…/ProjetoSerial/ProjetoSerial.uvproj; Copie o código fornecido (pendrive) para a pasta. Recompile e teste.

2. Esse exemplo mandará aos LEDs do GPIOE um padrão como contador binário. Pra fazer isso nós precisamos escrever no Output Data Register do GPIOE (ODR).
Ex.:
GPIOE->ODR = i << 8; /* enviar inteiro i para LEDs */
Teste. Nota: precisamos deslocar 8 bits porque a partir do esquemático você verá que os LEDs estão fisicamente conectados aos bits 8-15 do GPIOE.

3. Agora configurar a porta serial. O esquemático [3] mostra a porta serial COM conectada ao GPIOD bit 5 (Tx) e 6 (Rx). A função init_serial() inicia a UART2 (Universal Asynchronous Receiver Transmitter) que direciona a porta COM via GPIOD (bits 5-6). Inclua o arquivo Serial.c no seu projeto. Adicione a chamada para init_serial( ) depois de io_init( ) e teste a porta COM adicionando a linha sendchar(‘A’); /* envia caracter para porta COM */ no loop principal. (no caso, repetidamente mostra a letra A). Você precisará contar ao compilador que os comandos init_serial( ) e sendchar( ) são definidos externamente (no arquivo Serial.c) através da declaração dos protótipos no ProjetoSerial.c.

[pic 1][pic 2]

Ex.: /* protótipos de função*/

extern void init_serial(void);

extern int sendchar(int c);

Compile a aplicação.

4. Para testar a porta serial COM 3*  você precisa conectá-la a um “terminal burro”. O aplicativo PuTTY [1] pode ser configurado como um terminal burro. Execute o Putty, conforme a comfiguração ao lado.

*O número da porta depende de como o PC está configurado. Você pode precisar checar em qual porta está alocado no painel de controle. Se o adaptador USB/Serial for usado, então o driver o alocará à próxima porta livre. Baixe e teste a aplicação.

5. Inclua Retarget.c* no seu projeto. Esse arquivo sobrecarrega na biblioteca padrão da linguagem C as funções fputc() e fgetc() de modo que elas enviem os dados para a porta COM através das chamadas sendchar() e getkey() no Serial.c. Inclua a biblioteca padrão #include e substitua sendchar(‘A’); com printf(“Hello World!\n”); *Note: Retarget.c pode ser encontrado em C:\Keil\ARM\Examples\Hello

Seu projeto agora deve se parecer assim:

[pic 3][pic 4]
Recompile e teste.

6. Pra ler um caracter da porta serial, primeiro devemos checar o registro de status da UART para ver se um caracter foi recebido. Os bits no registro de status são mostrados abaixo:

[pic 5][pic 6]

Quando um caracter é recebido, o bit USARTx_SR_RXNE será modificado indicando que os dados estão aguardando no registrador de dados (USARTx_DR); o bit é limpo quando o registrador de dados é lido. Testar o registrador de status é chamado polling. Comumente o teste aparece como uma condição de loop usando uma técnica chamada espera ocupada [2].

[pic 7][pic 8]

Modifique o programa como mostrado no Apêndice B, de modo que os caracteres entrados no teclado do PC são repetidos na porta COM: -

7. Dois conversores analógico-digitais (ADC) de 12 bits são fabricados dentro do dispositivo STM32F107VC usado na MCBSTM32C evaluation board. Cada ADC compartilha até 16 canais externso. O esquemático MCBSTM32C mostra que POT1 provê uma tensão de entrada variável para o bit 4 do GPIOC. A função mostrada no Apêndice C é usada para configurar o ADC. Inclua-a no seu programa. Os detalhes já foram cobertos na disciplina. Uma rotina simples para ler e mostrar o valor ADC é mostrada abaixo:

 

for (;;) {

/* Loop infinito */

adcValue = (ADC1->DR & 0x0FFF);

/* valor AD de 12 bits */

printf("\rValor ADC = %i", adcValue);

GPIOE->ODR = adcValue << 4; /* Mostra 8-bits mais signif.*/

}

8. O Joystick está conectado nos bits 11-15 do GPIOD [3]. Essa porta pode ser facilmente configurada pela adição das seguintes linhas na função io_Init().
RCC->APB2ENR |= (1<<4); /* habilita clock do GPIOD */

GPIOD->CRH &= 0x00000FFF; /* Configura o GPIO para o JOYSTICK */

GPIOD->CRH |= 0x44444000;

Os bits de estado que determinam a posição do Joystick são:

[pic 9][pic 10]

Esses valores podem ser exibidos na tela do terminal com:

GPIOE->ODR = (GPIOD->IDR & 0xF800); /* Mostrar Joystick */

[pic 11][pic 12]O arquivo GLCD_SPI_STM32.c contém funções para inialização e escrita para o  QVGA TFT LCD colorido. Inclua-o no seu projeto.

Seu projeto agora deve parecer com isso: -

A função main() é mostrada no apêndice C. A função updateLCD() também é mostrada. Essa função escreve o valor ADC na tela LCD pelo uso da função sprintf() para formatar o valor inteiro como string hexadecimal. Após compilar e baixar para a memória flash você deve ver a saída ADC exibida na tela LCD.

 

Referências

[1] wikipedia, PuTTY at http://en.wikipedia.org/wiki/PuTTY 

[2] wikipedia, Busy Waiting at http://en.wikipedia.org/wiki/Busy_waiting 

[3] keil, “MCBSTM32C schematics”, mcbstm32c-base-board-schematics.pdf  

 

Apêndice A

/*----------------------------------------------------------------------------

* Name: Serial.c

* Purpose: Low level serial routines for STM32

* Note(s):

*----------------------------------------------------------------------------

* This file is part of the uVision/ARM development tools.

...

Baixar como (para membros premium)  txt (14.1 Kb)   pdf (748.6 Kb)   docx (301 Kb)  
Continuar por mais 10 páginas »
Disponível apenas no TrabalhosGratuitos.com