Anda di halaman 1dari 40

Universidade Federal da Bahia

Escola Polit
ecnica
Departamento de Engenharia El etrica
ENGG54 - Laborat orio Integrado III-A

Manual do Kit DSP TMS320C5502

Andre Madureira Denis Gomes Tiago Matos

12 de Dezembro de 2016
rio
Suma i

Sum
ario

1 Introduc
ao 1

2 Kit do DSP 2

2.1 Instalacao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2.2 Intrucao de Configuracao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

2.3 Exemplo Demonstracao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

3 Dificuldades Encontradas 4

3.1 Instalacao da IDE e Drivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

3.2 Vdeo Demonstrativo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

4 Audio 5

4.1 Descricao Detalhada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

4.2 Configuracao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

4.2.1 Multichannel Buffered Serial Port (McBSP) . . . . . . . . . . . . . . . . 8

5 Ethernet 10

5.1 Configuracoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

5.2 Transmissao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

5.3 Recepcao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

6 LCD 14

6.1 Funcionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

6.2 Funcoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

6.2.1 Int16 osd9616 init( ) . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

6.2.2 Int16 osd9616 send( Uint16 comdat, Uint16 data) . . . . . . . . . 14

6.2.3 Int16 osd9616 multiSend( Uint16* data, Uint16 len) . . . . . . . 15


rio
Suma ii

6.2.4 Int16 printLetter(Uint16 c4,Uint16 c3,Uint16 c2,Uint16 c1) . . 15

6.2.5 Int16 printString(char* s, Uint16 n) . . . . . . . . . . . . . . . . . 16

6.3 Anexo A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

7 GPIO 18

7.1 GPIO Entradas e Sadas de proposito geral . . . . . . . . . . . . . . . . . . . . 18

7.2 PGPIO Portas paralelas de proposito geral . . . . . . . . . . . . . . . . . . . . 19

7.3 Estrutura de Configuracao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

7.4 Funcoes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

7.5 Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

8 DMA 30

8.1 Configuracao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

8.2 Channel Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

8.3 Funcoes e Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

8.3.1 DMA Handle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

8.3.2 DMA open(channel, action) . . . . . . . . . . . . . . . . . . . . . . . . . 33

8.3.3 DMA config(handle, &config) . . . . . . . . . . . . . . . . . . . . . . . . 33

8.3.4 DMA start(handle) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

8.3.5 DMA RSETH(handle, channel, value . . . . . . . . . . . . . . . . . . . . 34

8.3.6 DMA FSETH(handle, register, field, value) . . . . . . . . . . . . . . . . . 34

8.3.7 DMA FGETH(handle, register, field) . . . . . . . . . . . . . . . . . . . . 35

8.3.8 DMA close(handle) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

9 Contribuic
ao dos Integrantes 36

10 Refer
encias 37
Introduc
ao 1

1 Introduc
ao

O TSM320C5502 e uma plataforma de baixo custo para o desenvolvimento de aplicacoes


voltadas para o processamento digital de sinais. Possui baixo consumo e e facil de usar em
comparacao com outras plataformas existentes no mercado. Pode ser utilizada para teste de
codigos que serao posteriormente implementados em hardware mais complexo, processamento
simples de audio e vdeo, para fins educacionais etc.

Este kit possui uma baixa quantidade de informacoes, e a documentacao e esparsa, o


que torna o seu uso complicado, e torna-se necessaria a procura por diversos datasheets durante
seu uso.

O manual foi elaborado para facilitar a utilizacao das bibliotecas advindas do uso do
eZdsp, e permitir a rapida integracao e desenvolvimento do usuario.
Kit do DSP 2

2 Kit do DSP

No kit do DSP, temos um CD de instalacao da IDE Code Composer Studio (CCS),


e um manual do TSM320C5502. A versao do instalador que acompanha o CD suporta ate
Windows 7, sendo necessario baixar uma versao mais atualizada no site da Texas Instruments
para Windows 8 ou superiores.

2.1 Instala
c
ao

Primeiramente, tentamos baixar e instalar o Code Composer Studio versao 4 no site da


Texas Instruments, mas por algum motivo o emulador do DSP nao aparecia. Por essa razao,
resolvemos utilizar o CD que veio no proprio kit do DSP para a instalcao da IDE.

Quando roda o programa aparece uma opcao de customizacao, onde pode-se escolher os
componentes do modelo do equipamento. Se optar por instalar todos os modelos, o processo
ira demorar para terminar e tera muitos componentes que nao vao ser utilizados. Dessa forma,
e melhor usar a opcao de customizar, instalando apenas os componentes referentes ao seu
equipamento.

2.2 Intru
c
ao de Configura
cao

1. Inicie o Code Composer Studio;

2. Clique em Target, depois em New Target Configuration File e Finish;

3. Na aba Connection escolha Texas Instruments XDS100v2 USB Emulator

4. Em Device escreva 5502 e marque a opcao EZDSP5502

5. Clique em Save

2.3 Exemplo Demonstra


c
ao

1. Conecte a placa ao computador via usb;

2. Clique em File->Import;

3. Expanda a pasta CCS e escolha Existing CCS/CCE Eclipse Project clique em Next;

4. Clique em Browse, escolha o diretorio onde o projeto do programa esta salvo (para
acessar os exemplos padrao da placa TMS320C5502 eZdsp siga o caminho: C: ->
Arquivos de Programas (x86) -> Texas Instruments -> ccsv4 -> emulation ->
boards -> ezdsp5502 v1 -> tests -> Escolha a pasta do seu exemplo
Kit do DSP 3

5. Click em OK e Finish;

6. Clique Project-> Build Active Project, espere aparecer na aba console a mensagem
Build Complete para o exemplo escolhido;

7. Clique Target-> Debug Active Project, espere carregar o programa na memoria do


DSP;

8. Clique em Target -> Run.

Video Demonstrativo - Exemplo de controle do display:

https://youtu.be/sdbl9MiRd5k
Dificuldades Encontradas 4

3 Dificuldades Encontradas

Devido a`s dificuldades no processo de instalacao, a complexidade do uso da IDE e ao


pouco tempo com o DSP em maos, a construcao deste manual e producao do vdeo demons-
trativo do DSP demandaram muito empenho dos envolvidos com o projeto.

3.1 Instala
c
ao da IDE e Drivers

Visto que a versao disponibilizada no CD de instalacao nao suporta Windows 8 ou


superior, tentamos utilizar a versao 6 (6.2.0.00050) do Code Composer Studio}. Para isso,
fizemos o seguinte:

1. Fomos ao site da Texas Instruments e baixamos o instalador do Code Composer Studio


versao 6 (6.2.0.00050)

2. Criamos a pasta temp na unidade C:/ do computador, onde salvamos o executavel da


IDE

3. Iniciamos o processo de instalacao

A tentativa de usar essa versao foi bastante incomoda, pois ela nao possuia os exemplos
na pasta como explicado na versao 4. Entao copiamos a pasta dos exemplos da versao 4 para
a 6 e mesmo assim o programa nao estava rodando.

Por esse motivo optamos por usar a versao 4 do CCS disponvel no CD do kit. Para
isso, precisamos utilizar um computador com sistema operacional Windows 7.

3.2 Vdeo Demonstrativo

Devido ao acesso ao DSP estar restrito ao laboratorio e a restricoes de horario extra-


classe, a construcao do vdeo demonstrativo consumiu mais tempo e empenho do que o esperado.
Audio 5

4 Audio

Nesta parte do manual, abordaremos a utilizacao do codec de audio AIC3204 usando


linguagem C, do DSP eZdsp c5502. Para demonstrar a utilizacao das funcoes importantes para
seu funcionamento, extrairemos secoes de codigo que exemplificam as funcoes descritas.

Figura 1: Diagrama de Blocos do Codec de Audio AIC3204

4.1 Descri
c
ao Detalhada

O TLV320AIC3204 (tambem chamado de AIC3204) e um chip decodificador de audio


dotado de:

Entradas e sadas stereo de baixa tensao

Baixo consumo eletrico

Baixa geracao de ruido


Audio 6

Entradas e sadas programaveis

Modo de bypass analogico

Blocos de processamento de sinais

Interface digital flexvel

PLLs e LDOs integrados

Abaixo, exemplificamos algumas funcoes basicas utilizadas num programa que da como
sada um tom sonoro na sada stereo analogica.

4.2 Configura
c
ao

Para configuracao do Codec, basicamente sao utilizadas funcoes definidas na biblioteca


que mudam valores de registradores de configuracao do AIC. Essas funcoes sao:

AIC3204 rset(regnum, regval): Muda o valor do registrador regnum para o valor de


regval

AIC3204 rget(regnum, *regval): Retorna o valor do registrador regnum

No datasheet do codec e possvel encontrar uma tabela com todos os registradores. Nao
a anexaremos completamente neste arquivo devido ao volume de informacoes que ela contem.
Segue abaixo uma tabela resumida de alguns dos registradores de maior interesse:
Audio 7

Figura 2: Registradores do Codec de Audio TLV320AIC3204


Audio 8

Utilizando principalmente a funcao rset, varias linhas sao utilizadas em nosso codigo-
exemplo para configurar o codec. Alguns exemplos abaixo:

// S e l e c i o n a banco de r e g i s t r a d o r 0
AIC3204 rset ( 0 , 0 ) ;
// Reseta o codec
AIC3204 rset ( 1 , 1 ) ;
// S e l e c i o n a pagina 1
AIC3204 rset ( 0 , 1 ) ;
// Enable nos b l o c o s a n a l o g i c o s
AIC3204 rset ( 2 , 1 ) ;

Algumas funcoes da biblioteca do DSP utilizadas:


// i n i c i a l i z a o DSP}
EZDSP5502 init ( ) ;
// Funcao de d e l a y
EZDSP5502 waitusec ( ms ) ;
// I n i c i a l i z a a M u l t i c h a n n e l B u f f e r e d S e r i a l Port (McBSP)
EZDSP5502 MCBSP init ( ) ;

4.2.1 Multichannel Buffered Serial Port (McBSP)

Os McBSPs nos dispositivos C6000 e C5000 fornecem comunicacao bidirecional full


duplex com dispositivos seriais externos, tais como codecs, chips de interface analogica (AICS),
e conversores A / D e D / A.

O McBSP tambem pode ser usado para comunicacao interprocessadores em aplicacoes


de multiprocessamento. Em resumo, e o barramento principal de comunicacao do DSP. Neste
codigo o McBSP e iniciado e utilizado para comunicacao com o codec.

Em nosso codigo, temos uma senoide de exemplo que e passada para o audio codec
e posteriormente para a sada analogica, devido a configuracao previa do codec, da seguinte
forma:

1. Configuramos o I2C para o modo MCBSP (os argumentos sao constantes pre-definidas):
EZDSP5502 I2CGPIO configLine ( BSP SEL1 , OUT) ;
EZDSP5502 I2CGPIO writeLine ( BSP SEL1 , LOW) ;

2. Entao utiliza-se a funcao abaixo dentro de uma iteracao pra escrever as amostras no
MCBSP:
EZDSP5502 MCBSP write ( s i n e t a b l e [ sample ] ) ;
Audio 9

possvel modificar detalhes no codigo como numero de samples usadas ou taxa de


E
reproducao da amostra de som para obter resultados diferentes na sada, o que envolve somente
modificacoes nas iteracoes ou no vetor de amostras.

Em resumo, para fazer o som funcionar, deve-se configurar o AIC (chip de interface
analogica) que ira fazer o trabalho de decodificacao do audio. O AIC e configurado atraves de
uma funcao que modifica os valores de seus registradores, que contem configuracoes de clock,
ADC, DAC entre outras.

Deve-se setar tambem o modo de utilizacao do Multi-Channel Buffered Serial Port, que
ira fazer a comunicacao com o periferico de audio. No caso, mandando as samples do arquivo
de audio para o AIC.
Ethernet 10

5 Ethernet

Nesta parte do manual, abordaremos a utilizacao do controlador Ethernet ksz8851-16


utilizando linguagem C, do DSP eZdsp c5502.

Figura 3: Diagrama de Blocos do Controlador de Ethernet

Para demonstrar a utilizacao das funcoes importantes para seu funcionamento, extrai-
remos secoes de codigo que exemplificam as funcoes descritas.

O controlador possui as seguintes caractersticas:

Projetado para aplicacoes de alta performance e de grande volume de processamento

Controlador ethernet PHY e MAC integrado em acordo com o padrao IEEE 802.3/802.3u

Suporta a geracao e checagem de checksum para IPV6 TCP/UDP/ICMP

Suporta transmissao e escrita de grande volume de dados via DMA-slave

Maior armazenamento interno, com 12K Bytes para RX FIFO e 6K Bytes para TX FIFO

O processador se comunica com o controlador atraves de protocolo EMIF (External


Memory Interface). Atraves do EMIF, o DSP tem acesso de escrita e leitura a` memoria do
controlador ethernet.
Ethernet 11

5.1 Configura
coes

Para estabelecer uma comunicacao Ethernet e preciso, antes de qualquer coisa, configurar
o controlador por meio de seus registradores (na folha de dados do controlador e possvel
encontrar a descricao de cada um dos registradores).

A biblioteca fornecida pelo fabricante implementa funcoes para leitura e escrita destes
registradores:
void e n e t r e g w r i t e ( Uint16 regnum , Uint16 r e g d a t a ) ;
Uint16 e n e t r e g r e a d ( Uint16 regnum ) ;

A funcao regwrite() recebe como parametros o n umero do registrador e o valor que


deseja-se escrever no mesmo, realizando a escrita no registrador indicado.

Ja a funcao regread() recebe o n


umero do registrador como parametro e retorna o valor
daquele registrador no momento da leitura.

Abaixo, mostraremos as operacoes que sao necessarias para configurar o controlador,


de modo que seja possvel estabelecer um link de comunicacao direto via ethernet com outro
dispositivo:

1. Primeiramente, devemos colocar o controlador em um estado inicial (reset) e habilitar o


estabelecimento de um link de comunicacao:

e n e t r e g w r i t e ( 0 x26 , 0 x0003 ) ; // Reset g l o b a l


EZDSP5502 waitusec ( 1 0 0 0 ) ; // Aguarda 1 segundo
e n e t r e g w r i t e ( 0 x26 , 0 x0000 ) ; // R e t i r a r e s e t g l o b a l
EZDSP5502 waitusec ( 1 0 0 0 ) ; // Aguarda 1 segundo
e n e t r e g w r i t e ( 0 xc6 , 0 x0235 ) ; // C o n f i g u r a o l i n k /LEDs de
indicacao

2. Entao, e preciso aguardar que algum outro dispositivo, conectado `a outra ponta do cabo,
responda. Ou seja, aguardar que o link seja estabelecido:

while ( 1 ) {
i f ( ( e n e t r e g r e a d ( 0 xe6 ) & 0 x0004 ) != 0 ) {
break ;
}
}

3. Por fim, configura-se o controlador para que seja possvel a transmissao de pacotes:

e n e t r e g w r i t e ( 0 x70 , 0 x0000 ) ; // D e s a b i l i t a t r a n s m i s s a o
e n e t r e g w r i t e ( 0 x70 , 0 x0010 ) ; // Limpa a f i l a de t r a n s m i s s a o
Ethernet 12

e n e t r e g w r i t e ( 0 x70 , 0 x0007 ) ; // TXCR C o n f i g u r a autoCRC


durante t r a n s m i s s a o , h a b i l i t a padding , H a b i l i t a t r a n s m i s s a o
e n e t r e g w r i t e ( 0 x84 , 0 x4000 ) ; // TXFDPR H a b i l i t a auto
i n c r e m e n t o do p o n t e i r o de dados
e n e t r e g w r i t e ( 0 x92 , 0 x f f f f ) ; // ISR Limpa o r e g i s t r a d o r de
interrupcoes
e n e t r e g w r i t e ( 0 x90 , 0 x f f f f ) ; // IER H a b i l i t a as i n t e r r u p c o e s
de e n v i o e r e c e b i m e n t o
e n e t r e g w r i t e ( 0 x80 , 0 x0004 ) ; // Transmissao ( 0 x04 uso automatico
da f i l a )
e n e t r e g w r i t e ( 0 x74 , 0 x0013 ) ; // RXCR1 H a b i l i t a recebimento , modo
promiscuo
e n e t r e g w r i t e ( 0 x76 , 0 x0084 ) ; // RXCR2 SPI r e c e b e u n i c o frame
e n e t r e g w r i t e ( 0 x9c , 0 x0001 ) ; // I n t e r r u p c a o apos o p r i m e i r o
frame r e c e b i d o
e n e t r e g w r i t e ( 0 x82 , 0 x0030 ) ; // RXQCR H a b i l i t a t h r e s h o l d de
r ec ebimento , remocao
automatica da f i l a

Apos a realizacao da etapa de configuracao o controlador esta pronto para que se efetue
a transmissao e recepcao de pacotes.

A biblioteca oferece duas funcoes para estas tarefas:


void e n e t t x p a c k e t ( Uint8 buf , Uint16 l e n ) ;
I n t 1 6 e n e t r x p a c k e t ( Uint8 buf ) ;

5.2 Transmiss
ao

Para transmitir um pacote de bytes utiliza-se a funcao enet txpacket() recebe como
parametros um ponteiro para o bloco de bytes que se deseja transmitir e o numero de bytes
que se deseja enviar.

Contudo, antes de efetuar a leitura de pacotes e necessario verificar se existem novos


pacotes prontos para serem lidos.
while ( ( e n e t r e g r e a d ( 0 x92 ) & 0 x2000 ) == 0 ) ; // Aguarda a r e c e p c a o de
pacotes
e n e t r e g w r i t e ( 0 x92 , e n e t r e g r e a d ( 0 x92 ) | 0 x2000 ) ; // Limpa o b i t ISR
que i n d i c a o r e c e b i m e n t o
Ethernet 13

5.3 Recep
cao

Uma vez verificado a existencia de pacotes prontos para serem lidos, utilize-se a funcao
enet rxpacket() para ler os dados. Esta funcao recebe como parametro o ponteiro para a
area de memoria onde os dados recebidos serao salvos e retorna o tamanho do pacote recebido.

E importante observar que o controlador nao tem implementado os protocolos TCP/IP.


Assim, essa comunicacao ocorre na camada MAC. E possvel implementar os protocolos
TCP/IP, ou fazer uso de uma biblioteca, no DSP, deste modo, utilizando o controlador como
interface de rede.
LCD 14

6 LCD

O DSP possui um display de LCD OSD9616 de 96 pixels de comprimento por 16 pixels


de altura, divididos em 6 paginas de memoria, de forma que possam ser armazenadas diversas
cenas simultaneamente.

Alem disso, pixels podem ser transladados tanto verticalmente quanto horizontalmente
utilizando-se funcoes de scroll.

O ezdsp5502 comunica-se com o OSD9616 atraves do protocolo I2C, utilizando um con-


trolador SSD1306. Para realizar o envio de dados, comandos sao enviados para o controlador,
sendo entao decodificados e transformados em pixels a serem acesos no display.

6.1 Funcionamento

Para utilizar o OSD9616, o chip deve ser ligado e iniciado corretamente atraves
da funcao osd9616 init(). Apos esta inicializacao, comandos podem ser utilizados tanto
individualmente, usando a funcao 9616 send() quanto enviados sequencialmente com o
9616 multiSend().

Visando facilitar o display de caracteres, o Ezdsp possui a funcao 9616 printLetter().


No entanto, ela ainda apresenta dificuldade de utilizacao, visto que os caracteres sao inseridos
na forma de pixels. Por este motivo foi desenvolvida uma funcao para o envio de strings.

Os principais comandos estao descritos na tabela 3 do anexo A (secao 6.3). Para a lista
completa de comandos, vide datasheet do SSD1306.

6.2 Fun
coes

6.2.1 Int16 osd9616 init( )

Esta funcao inicializa o display de LCD, fornecendo energia e ligando-o.

Argumentos:

void

6.2.2 Int16 osd9616 send( Uint16 comdat, Uint16 data)

Envia o comando / informacao especificado(a) por data via I2C. Vide a tabela 3 no
anexo A (secao 6.3) para os valores conhecidos para os comandos.
LCD 15

Argumentos:

comdat 2 bytes que indicam se o valor a ser enviado e um comando(0x00) ou um


dado(0x40).

data 2 bytes que representam o comando/dado a ser enviado. Caso seja um dado, os
bits altos representarao o pixel a ser aceso.

6.2.3 Int16 osd9616 multiSend( Uint16* data, Uint16 len)

Envia len comandos / dados atraves do I2C. O valor maximo de len e 10.

Argumentos:

data Ponteiro para o local dos dados a serem enviados

len N
umero de Uint16 a serem enviados.

6.2.4 Int16 printLetter(Uint16 c4,Uint16 c3,Uint16 c2,Uint16 c1)

Cada letra e representada por 4 colunas de 8 pixels. Cada uma destas colunas e
representada, de forma inversa, pelos bytes passados como parametro. Cada letra gerada e
seguida por uma coluna de pixels em branco para separar uma letra da proxima. O bit mais
significativo representa o pixel mais baixo, o qual sempre e zero para gerar um espaco de 1
pixel entre a letra e a linha abaixo.

Argumentos:

c1, c2, c3, c4 - Bytes que representam qual pixel da coluna sera aceso.
LCD 16

Exemplos (0s omitidos para facilitar a visualizacao):

// L e t r a E
p r i n t L e t t e r ( 0 x41 , 0 x49 , 0 x49 , 0 x7F ) ;

C1 (0x7F) C2 (0x49) C3 (0x49) C4 (0x41)


1 1 1 1
1
1
1 1 1
1
1
1 1 1 1

Tabela 1: Exemplo da Funcao printLetter do LCD

// L e t r a T
p r i n t L e t t e r ( 0 x01 , 0 x7F , 0 x01 , 0 x01 ) ;

C1 (0x01) C2 (0x01) C3 (0x7F) C4 (0x01)


1 1 1 1
1
1
1
1
1
1

Tabela 2: Exemplo da Funcao printLetter do LCD

6.2.5 Int16 printString(char* s, Uint16 n)

Esta funcao foi desenvolvida visando facilitar o envio de caracteres. A string a ser
enviada nao deve ser terminada por \0.

Argumentos:

s - String a ser enviada.

n - N
umero de caracteres de s.
LCD 17

6.3 Anexo A

Valor Argumento 1 Argumento 2 Comando


0x2F Habilitar scrolling horizontal
0xB0 Setar a pagina 0 (8 linhas superiores) como ativa
0xB1 Setar a pagina 1 (8 linhas inferirores) como ativa
0xA3 numFixed numScroll Seta a area de scroll vertical. A partir da borda
superior da tela, numFixed linhas serao invari-
antes, e numScroll linhas realizarao o scroll ver-
tical. Se numFixed + numScroll 16, o resto das
linhas sera fixa. Por exemplo, 0xA30408 poe as
4 linhas superiores e inferiores sem scroll e as 8
linhas intermediarias com scroll.
0xAF Ligar o LCD

Tabela 3: Comandos do Display LCD


GPIO 18

7 GPIO

Manual de utilizacao dos modulos GPIO/PGPIO do TMS320C5502. A figura mostra


o diagrama de blocos funcionais do VC5502. Neste manual descreveremos a utilizacao dos
modulos GPIO e PGPIO e as funcoes e macros da API a eles associados.

Figura 4: Diagrama de Blocos dos GPIO / PGPIO do VC5502

7.1 GPIO Entradas e Sadas de prop


osito geral

O modulo GPIO e composto de oito bits individualmente selecionaveis de entrada e sada


GPIO0 (LSB) a GPIO7 (MSB) para fins gerais.
GPIO 19

As portas de I/O sao controladas usando dois registradores, IODIR [IO0DIR:IO7DIR] e


IODATA [IO0D:IO7D]:

IOxDIR = 0; // Configura o pino GPIOx como uma entrada

IOxDIR = 1; // Configura o pino GPIOx como uma sa


da

IOxD = 0; // O pino GPIOx e


lido/setado em n
vel l
ogico baixo

IOxD = 1; // O pino GPIOx e


lido/setado em n
vel l
ogico alto

O pino GPIO7 determina, durante a reinicializacao, a funcao dos pinos SP0 e SP2 (vide
figura 4). Estes sao definidos para GPIO3 e GPIO5, respectivamente, e configurados como
entrada apos o reset se GPIO7 esta em nvel logico baixo. Se GPIO7 e nvel logico alto durante
a reinicializacao, os pinos SP0 e SP2 sao definidos para CLKX2 e FSX2, respectivamente.

7.2 PGPIO Portas paralelas de prop


osito geral

Varios pinos de dupla finalidade complementam os pinos GPIO dedicados:

4 pinos de endereco (A[21:18])

16 pinos de dados (D[31:16])

16 sinais de controle (C[15:0])

8 pinos de dados do host (HD[7:0])

2 pinos de controle HPI (HC0, HC1) podem ser individualmente habilitados como PGPIO
atraves dos multiplexadores Parallel/Host Port Mux quando o pino GPIO6 e colocado
em nvel logico baixo durante a reinicializacao.

Pino PGPIO Equivalente


A[21:18] PGPIO[3:0]
D[31:16] PGPIO[19:4]
C[15:0] PGPIO[35:20]
HD[7:0] PGPIO[43:36]
HC0 PGPIO44
HC1 PGPIO45

Tabela 4: Pinos PGPIO


GPIO 20

Estes pinos sao controlados por tres conjuntos de registradores:

Registradores de habilitac ao PGPIO (PGPIOEN0-PGPIOEN2):


Determinam se a funcao dos pinos de sada PGPIO e ativada ou desativada.

Registradores de direc ao PGPIO (PGPIODIR0-PGPIODIR2):


Determinam se os bits correspondentes nos registros de dados PGPIO especificam um
valor de sada ou um valor de entrada.

Registradores de dados PGPIO (PGPIODAT0-PGPIODAT2):


Armazenam o valor lido ou escrito externamente

Para usar um pino PGPIO como uma sada, os seus bits de habilitacao e direcao nos
registradores correspondentes devem ser definidos como 1. O valor do pino e entao controlado
atraves do seu bit no registro de dados.

Por outro lado, para a utilizacao de um pino PGPIO como uma entrada, o seu bit
correspondente deve ser 0 tanto no registrador de habilitacao quanto no de direcao. O estado
do pino pode, em seguida ser lidos a partir do seu bit no registo de dados.

As tabelas 5 e 6 (abaixo) listam os registradores utilizados para controlar os pinos


GPIO/PGPIO, com seus respectivos campos, e pinos equivalentes.
GPIO 21

Registradores Campos Pinos


IO7DIR, IO6DIR, IO5DIR,
IODIR IO4DIR, IO3DIR, IO2DIR,
GPIO7, GPIO6, GPIO5,
IO1DIR, IO0DIR
GPIO4, GPIO3, GPIO2, Grupo 0
GPIO1, GPIO0
IO7D, IO6D, IO5D, IO4D,
IODATA
IO3D, IO2D, IO1D, IO0D

IO15EN, IO14EN,
IO13EN, IO12EN,
IO11EN, IO10EN, IO9EN,
PGPIOEN0
IO8EN, IO7EN, IO6EN,
IO5EN, IO4EN, IO3EN,
IO2EN, IO1EN, IO0EN

PGPIO15, PGPIO14,
IO15DIR, IO14DIR,
PGPIO13, PGPIO12,
IO13DIR, IO12DIR,
PGPIO11, PGPIO10,
IO11DIR, IO10DIR,
PGPIODIR0 PGPIO9, PGPIO8,
IO9DIR, IO8DIR, IO7DIR, Grupo 1
PGPIO7, PGPIO6,
IO6DIR, IO5DIR, IO4DIR,
PGPIO5, PGPIO4,
IO3DIR, IO2DIR, IO1DIR
PGPIO3, PGPIO2,
PGPIO1, PGPIO0
IO15DAT, IO14DAT,
IO13DAT, IO12DAT,
IO11DAT, IO10DAT,
IO9DAT, IO8DAT,
PGPIODAT0
IO7DAT, IO6DAT,
IO5DAT, IO4DAT,
IO3DAT, IO2DAT,
IO1DAT, IO0DAT
IO31EN, IO30EN, PGPIO31, PGPIO30,
IO29EN, IO28EN, PGPIO29, PGPIO28,
IO27EN, IO26EN, PGPIO27, PGPIO26,
IO25EN, IO24EN, PGPIO25, PGPIO24,
PGPIOEN1 Grupo 2
IO23EN, IO22EN, PGPIO23, PGPIO22,
IO21EN, IO20EN, PGPIO21, PGPIO20,
IO19EN, IO18EN, PGPIO19, PGPIO18,
IO17EN, IO16EN PGPIO17, PGPIO16

Tabela 5: Registradores de Controle do GPIO / PGPIO


GPIO 22

Registradores Campos Pinos


IO31DIR, IO30DIR,
IO29DIR, IO28DIR,
IO27DIR, IO26DIR,
IO25DIR, IO24DIR,
PGPIODIR1
IO23DIR, IO22DIR, PGPIO31, PGPIO30,
IO21DIR, IO20DIR, PGPIO29, PGPIO28,
IO19DIR, IO18DIR, PGPIO27, PGPIO26,
IO17DIR, IO16DIR PGPIO25, PGPIO24,
Grupo 2
PGPIO23, PGPIO22,
IO31DAT, IO30DAT, PGPIO21, PGPIO20,
IO29DAT, IO28DAT, PGPIO19, PGPIO18,
IO27DAT, IO26DAT, PGPIO17, PGPIO16
IO25DAT, IO24DAT,
PGPIODAT1
IO23DAT, IO22DAT,
IO20DAT, IO19DAT,
IO18DAT, IO17DAT,
IO16DAT

IO45EN, IO44EN,
IO43EN, IO42EN,
IO41EN, IO40EN,
PGPIOEN2 IO39EN, IO38EN,
IO37EN, IO36EN,
IO35EN, IO34EN,
IO33EN, IO32EN

IO45DIR, IO44DIR,
PGPIO45, PGPIO44,
IO43DIR, IO42DIR,
PGPIO43, PGPIO42,
IO41DIR, IO40DIR,
PGPIO41, PGPIO40,
PGPIODIR2 IO39DIR, IO38DIR,
PGPIO39, PGPIO38, Grupo 3
IO37DIR, IO36DIR,
PGPIO37, PGPIO36,
IO35DIR, IO34DIR,
PGPIO35, PGPIO34,
IO33DIR, IO32DIR
PGPIO33, PGPIO32

IO45DAT, IO44DAT,
IO43DAT, IO42DAT,
IO41DAT, IO40DAT,
PGPIODAT2 IO39DAT, IO38DAT,
IO37DAT, IO36DAT,
IO35DAT, IO34DAT,
IO33DAT, IO32DAT

Tabela 6: Registradores de Controle de GPIO / PGPIO


GPIO 23

7.3 Estrutura de Configurac


ao

GPIO Config:
Estrutura usada para configurar os pinos GPIO nao paralelos.
Membros:

Uint16 IOE
Uint16 IODIR

Descric
ao:
Voce cria e inicializa essa estrutura e, em seguida, passa o endereco para a funcao
GPIO config(). Voce pode usar valores literais ou as macros GPIO REG RMK para criar os
valores de membro de estrutura.

GPIO ConfigAll:
Estrutura de configuracao para ambos os pinos GPIO paralelos e nao paralelos.
Membros:

Uint16 IOEN
Uint16 IODIR
Uint16 PGPIOEN0
Uint16 PGPIODIR0
Uint16 PGPIOEN1
Uint16 PGPIODIR1
Uint16 PGPIOEN2
Uint16 PGPIODIR2

Descric
ao:
Voce cria e inicializa essa estrutura e, em seguida, passa o endereco para a funcao
GPIO ConfigAll(). Voce pode usar valores literais ou as macros GPIO REG RMK para
criar os valores de membro de estrutura.
GPIO 24

7.4 Fun
coes

void GPIO close(GPIO Handle hGpio):


Libera pinos GPIO previamente reservados para chamada GPIO open().
Argumentos:

hGpio - manipulador do pino GPIO

Retorno
void
Exemplo:
GPIO close ( hGpio ) ;

GPIO Handle GPIO open(Uint32 allocMask, Uint32 flags):


Reserva pinos GPIO para uso exclusivo.
Argumentos:

allocMask - pinos GPIO para reservar. Para a lista de pinos, vide tabela 2.
flags - flags atualmente nao definidos.

Retorno
GPIO Handle - manipulador do pino GPIO
Observaco
es:

Antes de um pino GPIO poder ser usado, ele deve ser reservado para uso pelo
aplicativo. Uma vez reservado, nao pode ser novamente solicitado, ate que fechado por
GPIO close()
Se a funcao falhar, uma constante simbolica da biblioteca suporte do chip, INV (-1) e
retornada. Quando recebe um n umero de canal / porta especfica, a funcao open verifica
flags globais para determinar a sua disponibilidade. Se a porta / canal estiver disponvel,
entao ele retorna um ponteiro para uma estrutura de manipulacao predefinida para esse
pino (GPIO Handle).
GPIO open() pode ser chamado para abrir um ou mais pinos de um mesmo grupo
de cada vez. Chamar o allocMask de pinos de diferentes grupos ira produzir resultados
desconhecidos.
Alem disso, se GPIO open() e chamado para um ou mais pinos em um grupo par-
ticular, outros pinos do mesmo grupo nao podem ser reservados a menos que se faca a
correspondente chamada a GPIO close().

Exemplo:
GPIO Handle hGPIO ;
hGPIO = GPIO open ( GPIO PGPIO PIN1 , 0 ) ;
GPIO 25

void GPIO config(GPIO Handle hGpio, GPIO Config *cfg):


Escreve nos registradores dos pinos nao paralelos usando a estrutura de configuracao
GPIO config.
Argumentos:

hGpio - handle GPIO


cfg - Ponteiro para inicializar uma estrutura de configuracao

Retorno
void
Exemplo:
// E s t r u t u r a de c o n f i g u r a c a o
GPIO Config myConfig = {GPIO PIN1 OUTPUT | GPIO PIN3 OUTPUT}
// A b r i r handle GPIO
GPIO Handle hGpio ;
hGpio = GPIO open ( GPIO GPIO PIN1 | GPIO GPIO PIN3 , 0 ) ;
// A p l i c a r c o n f i g u r a c a o ao handle
GPIO config ( hGpio , \&myConfig ) ;

void GPIO configAll(GPIO ConfigAll &gCfg):


Grava valores tanto para pinos paralelos e registradores de controle GPIO nao paralelos
utilizando a estrutura de configuracao
Argumentos:

gCfg - Estrutura de configuracao

Retorno:
void
Exemplo:
// E s t r u t u r a de c o n f i g u r a c a o
GPIO ConfigAll gCfg = {GPIO PIN1 OUTPUT | GPIO PIN3 OUTPUT ,
0 , 0 , 0 , 0 , 0 , 0};
G P I O c o n f i g A l l (&gCfg ) ;

void GPIO pinDirection(GPIO Handle hGpio, Uint32 pinMask,Uint16 direc-


tion):
Determina se um pino GPIO e de sada ou de entrada.
Argumentos:

hGpio - handle GPIO


pinMask - mascara de selecao de pinos
direction - Mascara usada para definir a direcao dos pinos selecionados em pinMask
GPIO 26

Retorno
void
Exemplo:
/ s e t a o pino pgpio1 como uma e n t r a d a /
GPIO handle hGpio = GPIO open ( GPIO PGPIO PIN1 |
GPIO PGPIO PIN15 ) ;
GPIO pinDirection ( hGPio , GPIO PGPIO PIN1 ,
GPIO PGPIO PIN1 INPUT ) ;

void GPIO pinDisable (GPIO Handle hGpio, Uint32 pinId):


Desativa um pino GPIO.
Argumentos:

hGpio - handle GPIO


pinID - id do pino

Retorno
void
Exemplo:
/ d e s a b i l i t a p ino pgpio1 /
GPIO handle hGpio = GPIO open ( GPIO PGPIO PIN1 |
GPIO PGPIO PIN15 ) ;
GPIO pinDisable ( hGpio , GPIO PGPIO PIN1 ) ;

void GPIO pinEnable(GPIO Handle hGpio, Uint32 pinID):


Ativa um pino.
Argumentos:

hGpio - handle GPIO


pinID - id do pino

Retorno
void
Exemplo:
GPIO pinEnable ( hGpio , GPIO GPIO PIN1 ) ;

int GPIO pinRead (GPIO Handle hGpio, Uint32 pinID):


Le o valor de um pino GPIO.
Argumentos:

hGpio - handle GPIO


pinID - id do pino
GPIO 27

Retorno
ind - Valor lido no pino GPIO (1 ou 0)
Exemplo:
// l e o v a l o r do pino IO1
int v a l = GPIO pinRead ( hGPio , GPIO GPIO PIN1 ) ;

int GPIO pinReadAll (GPIO Handle hGpio, Uint32 pinMask):


Le o valor de um ou mais pinos. A funcao retorna o valor em lugar dos pinos.
Argumentos:
hGpio - handle GPIO
pinMask - mascara dos pinos selecionados
Retorno
ind - Valor lido no pino GPIO (1 ou 0)
Exemplo:
// l e os v a l o r e s dos p i n o s IO0 e IO7
int v a l = GPIO pinRead ( hGPio , GPIO GPIO PIN0 |
GPIO GPIO PIN7 ) ;

void GPIO pinWrite(GPIO Handle hGpio, Uint32 pinMask,Uint16 val):


Grava um valor em um pino GPIO.
Argumentos:
hGpio - handle GPIO
pinMask - mascara dos pinos selecionados
Retorno
ind - Valor (0 ou 1) para escrever nos pinos GPIO selecionados.
Exemplo:
// E s c r e v e 1 nos p i n o s GPIO pi n0 e pi n 5
GPIO pinWrite ( hGpio , GPIO GPIO PIN0 | GPIO GPIO PIN5 , 1 ) ;

void GPIO pinWriteAll (GPIO Handle hGpio, Uint32 pinMask, Uint16 val):
Grava um valor para um ou mais pinos GPIO.
Argumentos:
hGpio - handle GPIO
pinMask - mascara dos pinos selecionados
Retorno
ind - Valor (0 ou 1) para escrever nos pinos GPIO selecionados.
Exemplo:
GPIO 28

// E s c r e v e 1 nos p i n o s GPIO pi n0 e pi n 5
GPIO pinWriteAll ( hGpio , GPIO GPIO PIN0 | GPIO GPIO PIN5 , 0
x0021 ) ;

void GPIO pinReset (GPIO Handle hGpio, Uint32 pinMask):

Redefine pinos GPIO para os valores padrao 0.

Argumentos:
hGpio - handle GPIO
pinMask - mascara dos pinos selecionados
Retorno
ind - Valor (0 ou 1) para escrever nos pinos GPIO selecionados.
Exemplo:
// E s c r e v e 1 nos p i n o s GPIO pi n1 e pi n 3
GPIO pinReset ( hGpio , GPIO GPIO PIN1 | GPIO GPIO PIN3 ) ;

7.5 Macros

A tabela abaixo contem uma lista de macros disponveis para o modulo GPIO. Para
usa-las inclua a clausula include "csl gpio.h".

Macro Sintaxe
Macros para ler/escrever valores nos registradores GPIO
GPIO RGET() Uint16 GPIO RGET(REG)
GPIO RSET() void GPIO RSET(REG, Uint16 regval)
Macros para ler/escrever valores nos campos de registradores GPIO
GPIO FGET() Uint16 GPIO FGET(REG, FIELD)
GPIO FSET() void GPIO FSET(REG, FIELD, Uint16 fieldval)
Macros para criar valores nos registradores e campos GPIO
GPIO REG RMK() Uint16 GPIO REG RMK(fieldval n, ...fieldval 0) /*field n:
MSB field, field 0: LSB field*/
GPIO FMK() Uint16 GPIO FMK(REG, FIELD, fieldval)
Macros para ler um endereco de registrador
GPIO ADDR() Uint16 GPIO ADDR(REG)

Tabela 7: Macros do Modulo GPIO

Notas:

REG inclui os registradores IODIR, IODATA, PGPIODIR, PGPIODAT e PGPIOEN.


GPIO 29

FIELD indica o nome do campo do registrador

regval indica o valor a ser gravado no registrador (REG).


DMA 30

8 DMA

Nesta secao do manual, abordaremos a utilizacao do controlador DMA para o eZdsp


TMS320C5502.

O DMA (Direct Memory Access) tem a finalidade de controlar a transferencia de


dados entre a memoria interna, memoria externa e chips perifericos. O controlador DMA opera
independente da CPU, possui quatro portas padrao:

2 portas para DARAM ( Dual Access RAM)


1 porta para memoria externa
1 porta para perifericos

As transferencias entre as portas ocorrem por meio de seis canais DMA.

Figura 5: Controlador do DMA


DMA 31

Cada porta possui canais, dotados de capacidade de leitura dados de uma porta e de
escrever em outra porta. Alem disso, cada canal tem um buffer FIFO, que permite que a
transferencia de dados seja realizada em dois estagios conhecidos como:

1. Acesso a Leitura (Read access)

2. Acesso a Escrita (Write access)

Figura 6: Canais do DMA

8.1 Configura
c
ao

1. Primeiramente, precisamos fazer a definicao do objeto (DMA HANDLE - vide secao 8.3.1).

2. Em seguida, fazemos a definicao da estrutura de configuracao do canal por onde os dados


serao repassados (CHANNEL CONTEXT - vide secao 8.2).

3. Fazemos entao a abertura do canal por onde os dados serao transmitidos.(DMA open - vide
secao 8.3.2)

4. Escrevemos os valores da estrutura de configuracao nos registradores de controle do DMA


(DMA config - vide secao 8.3.3)

5. Iniciamos o canal DMA a ser utilizado. (DMA start - vide secao 8.3.4)

6. Desabilitamos o canal por onde os dados estao sendo trafegados. (DMA close - vide secao
8.3.8)

Entre o 5 passo e o o 6, a depender da aplicacao, uma serie operacoes podem ser re-
alizadas. Um exemplo simples e a transferencia de de um frame de um DARAM para outro
DARAM, que utiliza macros como DMA FGETH (vide secao 8.3.7) para verificar se a configuracao
dos registradores foi copiada nos registradores de trabalho do DMA e o DMA RSETH (vide secao
8.3.5) que e utilizado para a transferencia do novo conjunto de valores de configuracao dos
registradores do DMA.
DMA 32

8.2 Channel Context

Processo de configuracao do(s) canal(is) a serem utilizados no processo de transferencia


de dados entre modulos, referentes ao passo 2.
Abaixo segue alguns dos registradores utilizados no processo de configuracao da estrutura do
canal:

DMAGCR Registrador de controle Global

DMAGTCR - Registrador de controle Global de time-out

DMACCR - Registrador de controle de canal

DMACICR - Registrador de controle de interrupcao

DMACSDP - Registrador de parametros de fonte e destino

Alguns campos necessarios para a configuracao do registrador DMACCR:

DSTAMODE: Utilizado para determinar onde sera escrito na porta de destino do canal.

SRCAMODE: Utilizado para determinar onde sera lido na porta fonte do canal.

ENDPROG: Bit de fim do programa.

PRIO: Configura a prioridade do canal.

SYNC: Sincroniza o controle de bits.

EN: Habilitar o canal.

AUTOINIT: Auto inicializacao do canal

Exemplo de configuracao do canal:

DMA DMACCR RMK(


DMA DMACCR DSTAMODE POSTINC,
DMA DMACCR SRCAMODE POSTINC,
DMA DMACCR ENDPROG ON,
DMA DMACCR WP DEFAULT,
DMA DMACCR REPEAT OFF,
DMA DMACCR AUTOINIT ON,
DMA DMACCR EN STOP,
DMA DMACCR PRIO HI,
DMA DMACCR FS DISABLE,
DMA DMACCR SYNC NONE
);
DMA 33

8.3 Fun
coes e Macros

Seguem algumas macros e funcoes fornecidas pela biblioteca para a controlador DMA.

8.3.1 DMA Handle

necessario a definicao do objeto DMA Handle antes de alocar os recursos de


E
DMA para um objeto de memoria, pois o objeto pode ser removido da memoria pelo sistema
enquanto o dispositivo esta tentando escrever esse objeto. Isso faria com que a transferencia
de dados falhasse.
No exemplo abaixo definimos myhDMA como o nosso objeto.

DMA Handle myhDma;

8.3.2 DMA open(channel, action)

Funcao utilizada para abrir o canal DMA.

Argumentos:

channel - indica o canal que sera aberto

action - indica a acao a ser realizada sobre esse canal

Exemplo :
myhDMA = DMA open(DMA CHA1, DMA OPEN RESET) ;

Obs.: Uma vez aberto o canal DMA ele so podera ser reaberto depois que a funcao DMA close
tenha sido utilizada.

8.3.3 DMA config(handle, &config)

Funcao utilizada para escrever os valores da estrutura de configuracao nos registradores


de controle do DMA, isto e, as configuracoes realizadas pelo programador sao escritas nos
registradores de trabalho. Essas informacoes serao utilizadas pelo DMA para controlar as
atividades do canal.

Argumentos:

handle - DMA Handle


DMA 34

config - ponteiro para a inicializacao da estrutura de configuracao

Exemplo :
DMA config (myhDma, &myconfig ) ;

8.3.4 DMA start(handle)

Funcao que habilita o canal DMA para iniciar a transferencia de dados.

Argumentos:

handle - DMA Handle

Exemplo :
DMA start (myhDma) ;

8.3.5 DMA RSETH(handle, channel, value

A macro tem a funcao de setar o registrador para o canal associado (no exemplo
abaixo, seria o DMACSSAU) para a escrita do valor (no exemplo abaixo, escreveremos
src2AddrHi) neste registrador.

Argumentos:

handle - DMA Handle

channel - Canal do DMA

value - Valor a ser escrito

Exemplo :
DMA RSETH(myhDma,DMACSSAU, src2AddrHi ) ;

8.3.6 DMA FSETH(handle, register, field, value)

A macro possui quatro parametros associados.

Argumentos:
DMA 35

handle - DMA Handle


register - Registrador a ser operado
field - Campo que sera setado
value - Valor associado ao campo FIELD

Exemplo :
DMA Handle myHandle ;
myHandle = DMA open (DMA CHA0, DMA OPEN RESET) ;
DMA FSETH ( myHandle , DMACCR, AUTOINIT, 1 ) ;

8.3.7 DMA FGETH(handle, register, field)

Macro utilizada para pegar o campo de um registrador.

Argumentos:

handle - DMA Handle


register - Registrador a ser operado
field - Campo que sera setado

Exemplo:
DMA Handle myHandle ;
...
// abra o c a n a l dma
myHandle = DMA open(DMA CHA0, DMA OPEN RESET) ;
...
myVar = DMA FGETH( myHandle , DMACCR, AUTOINIT) ;

8.3.8 DMA close(handle)

Funcao utilizada para desabilitar a transferencia dados de um determinado canal.

Argumentos:

handle - DMA Handle

Exemplo:
DMA close (myhDma) ;
Contribuic
a o dos Integrantes 36

9 Contribuic
ao dos Integrantes

A equipe participou de todo o processo, envolvendo:

Aprendizagem da IDE Code Composer Studio

Elaboracao da estrategia de resolucao do problema apresentado

Concepcao de como abordar o tema

Desenvolvimento do manual da

Denis e Tiago ficaram como responsaveis pelo funcionamento da placa, instalacao da IDE
e uso da mesma para criacao do vdeo demonstrativo produzir o video do exemplo controle
do display.

Andre e Tiago definiram os recursos que seriam usados para comunicacao entre os inte-
grantes, o modelo do manual e o uso do LATEX, atraves do Overleaf, para facilitar a edicao do
projeto. Isso permitiu que os componentes pudessem simultaneamente editar o manual, mesmo
nao estando fisicamente reunidos em um mesmo local.

Todos os integrantes participaram na edicao e escrita do manual do DSP, bem como na


pesquisa de recursos e manuais oficiais da placa.

Em resumo, todos se envolveram no desenvolvimento de maneira a compartilhar os


conhecimentos em momentos de d
uvida e/ou dificuldades encontradas nas etapas do desenvol-
vimento do projeto.
ncias
Refere 37

10 Refer
encias

[1] TLV320AIC3204, Ultra Low Power Stereo Audio Codec, Texas Instruments
http://www.ti.com/lit/ds/symlink/tlv320aic3204.pdf

[2] TMS320VC5502, Fixed-Point Digital Signal Processor, Data Manual, Texas Instruments
http://www.ti.com.cn/cn/lit/ds/symlink/tms320vc5502.pdf

[3] KSZ8851MQL/MLL/SNL Product Brief, Micrel


http://www.micrel.com/_PDF/Ethernet/ksz8851_pb.pdf

[4] TMS320C55x, Chip Support Library, API Reference Guide


http://www.ti.com/lit/ug/spru433j/spru433j.pdf

Anda mungkin juga menyukai