universidade federal do cearÁ centro de …‰ robÉrio xavier dos santos... · seus datasheets...
TRANSCRIPT
i
UNIVERSIDADE FEDERAL DO CEARÁ
CENTRO DE TECNOLOGIA
DEPARTAMENTO DE ENGENHARIA ELÉTRICA
COMPARATIVO ENTRE OS DSP’S TMS320F2812 E
TMS320F28335
JOSÉ ROBÉRIO XAVIER DOS SANTOS JÚNIOR
Fortaleza
Junho de 2011
ii
JOSÉ ROBÉRIO XAVIER DOS SANTOS JÚNIOR
COMPARATIVO ENTRE OS DSP’S TMS320F2812 E
TMS320F28335
Trabalho Final de Curso submetida à Univer-
sidade Federal do Ceará como parte dos requi-
sitos para obtenção do grau de Graduado em
Engenharia Elétrica.
Orientador: Prof. Me. Eber de Castro Diniz
Fortaleza
Junho de 2011
iv
“Quando menos se espera,
o que seria já era. O que seria de nós,
se não fosse a ilusão que nos trouxe até aqui.”
(Humberto Gessinger)
v
A Deus,
Aos meus pais, Robério e Simone,
Ao meus irmãos, André, Igor e Márcia,
A minha avó, Raimunda,
A todos meus amigos e familiares.
vi
AGRADECIMENTOS
Primeiramente a Deus por ter me guiado, por todos esses anos e nos que virão.
Ao Professor Me. Eber de Castro Diniz, pela sua orientação no começo dessa pesqui-
sa, pela grande amizade e paciência.
Ao Professor Me. Antonio Barbosa de Souza Junior, pela amizade e enorme apoio di-
recionado a mim.
Ao Professor Dr. Luiz Henrique Silva Colado Barreto, pela confiança que depositou a
mim a fim de participar em projetos de Iniciação Científica.
Aos professores do departamento Fernando Antunes, José Carlos, Otacílio Mota, Lau-
rinda Reis, Ricardo Thé, Paulo Praça, André Lima, Adson Bezerra, Sergio Daher, José Al-
meida, Carlos Gustavo, Ruth Leão.
Ao Eng. e amigo Dalton Honório, grande colega de pesquisa, que me ajudou muito
nessa pesquisa, obrigado pelo grande apoio, companheirismo, pela extensa paciência, pela
amizade e dedicação que teve para mim no decorrer dessa pesquisa.
Aos meus colegas de pesquisa, Jéssica e André Empresus, por todas as vezes que os
perturbei, sempre estavam presentes a me ajudar, chegando muitas vezes a parar o que esta-
vam fazendo para me auxiliar.
A meu Pai Robério, minha mãe Simone, meu irmão André, que aturaram todos esses
anos acordados, esperando eu chegar em casa, pela madrugada, da faculdade.
A toda minha família que apoiou minha caminhada, sempre perguntando quando eu i-
ria ser o engenheiro da família, ansiosos pelo fim da graduação.
A minha namorada, por entender essa vida louca que tive neste semestre e pela com-
preensão que teve ao longo do semestre. Peço desculpas pelos momentos de ausência, mas tal
esforço foi necessário.
Aos colegas de laboratório que me ajudaram durante o período da minha graduação,
Wilton Jhonnes, Filipe Féfis, Higor, Marcelo, Célio Rogério, Lincoln, Alexandre Valério, Le-
andro, Kathiane, Zairton Segundo, Felipe (vulgo fófis), Wiglla, Wellington Assunção, Felipe
Monteiro, Ícaro, Onivaldo Segundo, Sérgio Falcão, Thiago Meneses, Tiago e Kleymilson.
Aos meus amigos de infância Ítalo, Daniel, Lucas (amigo), Lucas (primo), Rodrigo
Viana, Giovani, Josimar, Charles.
A todos aqueles que duvidaram que esse trabalho seria concluído.
vii
Santos Júnior, J. R. X. “comparativo entre os DSP’s TMS320F2812 e
TMS320F28335”, Universidade Federal do Ceará – UFC, 2011, 63p.
Abordou-se neste trabalho um estudo sobre DSP’s, onde focou-se especificamente em
DSP’s especialmente desenvolvidos para executar um controle digital para acionamentos de
motores. Dentre as várias famílias de DSP’s existentes no mercado que possuem essa função,
escolheram-se duas referências, TMS320F2812 e o TMS320F28335. Foi feito um estudo pri-
meiramente individual sobre cada um dessas referencias, começando com uma abordagem
geral, sobre seus componentes internos. Depois foi feito um comparativo onde utilizou-se
seus datasheets como base para uma comparação sobre seus periféricos e um código com a
mesma função, em ambas as referências, para comparar o desempenho desses DSP’s e assim
concluir qual o melhor DSP.
Palavras-Chave: DSP, TMS320F2812, comparativo entre DSP’s, TMS320F28335.
viii
Santos Júnior, J. R. X. “Comparison between the DSP’s TMS320F2812 and
TMS320F28335”, Universidade Federal do Ceará – UFC, 2011, 63p.
This paper discusses a study on DSP's, which focused specifically on DSP's specially
designed to carry a digital control for motor drives. Among the various families of DSP's on
the market that have this function, we choose to ram two references, TMS320F2812 and
TMS320F28335. A study was made first-individual mind about each of these references,
starting with a general approach on its internal components. After a comparison was made
where we used their datasheets as the basis for a comparison on your peripherals and a code
with the same function in both references to compare the performance of DSP's and thus con-
clude that the best DSP.
Keywords: DSP, TMS320F2812, comparison between two DSP’s, TMS320F28335.
ix
SUMÁRIO
LISTA DE FIGURAS ............................................................................................................................... XII
LISTA DE TABELAS ............................................................................................................................ XIII
LISTA DE SIGLAS ................................................................................................................................ XIV
INTRODUÇÃO ........................................................................................................................................... 1
CAPÍTULO 2 2
DIGITAL SIGNAL PROCESSOR .............................................................................................................. 2
2.1 - INTRODUÇÃO ................................................................................................................................... 2
2.2 - VISÃO GERAL DE UM DSP .............................................................................................................. 3
2.3 - TRATAMENTO DO SINAL ............................................................................................................... 4
2.4 - APLICAÇÕES ..................................................................................................................................... 6
2.5 - CONCLUSÃO ..................................................................................................................................... 8
CAPÍTULO 3 9
FAMÍLIA C2000 ......................................................................................................................................... 9
3.1 - INTRODUÇÃO ................................................................................................................................... 9
3.2 - FAMÍLIA C2000 .................................................................................................................................. 9
3.2.1 - MICROCONTROLADORES PICCOLO ™: ................................................................................. 10
3.2.2 - MICROCONTROLADORES DELFINO ™: ................................................................................. 11
3.3 - FERRAMENTAS DO SOFTWARE ................................................................................................... 12
3.3.1 - BIBLIOTECA IQMATH ................................................................................................................. 12
3.3.2 - CONTROLE DIGITAL DE MOTORES ........................................................................................ 12
3.3.3 - CONTROLSUITE ............................................................................................................................ 13
3.4 - CONCLUSÃO ................................................................................................................................... 14
CAPÍTULO 4 15
DSP TMS320F2812 ................................................................................................................................... 15
4.1 - INTRODUÇÃO ................................................................................................................................. 15
4.2 - CPU .................................................................................................................................................... 15
4.3 - BARRAMENTO DE MEMÓRIA ...................................................................................................... 16
4.4 - BARRAMENTO DE PERIFÉRICOS ................................................................................................ 16
4.5 - JTAG EM TEMPO REAL .................................................................................................................. 16
4.6 - INTERFACE EXTERNA................................................................................................................... 17
4.7 - FLASH ............................................................................................................................................... 17
4.8 - ROM ................................................................................................................................................... 17
4.9 - M0, M1, SARAMS ............................................................................................................................. 17
4.10 - L0, L1, H0 SARAMS ........................................................................................................................ 17
4.11 - BOOT ROM ..................................................................................................................................... 18
x
4.12 - SEGURANÇA ................................................................................................................................. 18
4.13 - BLOCO PIE ..................................................................................................................................... 18
4.14 - INTERRUPÇÕES EXTERNAS ....................................................................................................... 19
4.15 - OSCILADOR E PLL ........................................................................................................................ 19
4.16 - WATCHDOG................................................................................................................................... 19
4.17 - CLOCK DOS PERIFÉRICOS .......................................................................................................... 19
4.18 - MODOS DE OPERAÇÃO ............................................................................................................... 19
4.19 - DIAGRAMA DE PERIFÉRICOS .................................................................................................... 20
4.19.1 - DIAGRAMA ZERO ..................................................................................................................... 20
4.19.2 - DIAGRMA UM ............................................................................................................................ 20
4.19.3 - DIAGRAMA DOIS ...................................................................................................................... 20
4.20 - PINOS DE ENTRADA E SAÍDA (GPIO)........................................................................................ 21
4.21 - TIMERS 0, 1 E 2 ................................................................................................................................ 21
4.22 - PERIFÉRICOS DE CONTROLE ..................................................................................................... 21
4.23 - PERIFÉRICOS RESPONSÁVEIS PELA COMUNICAÇÃO SERIAL ........................................... 22
4.24 - CONCLUSÃO ................................................................................................................................. 23
CAPÍTULO 5 24
DSP TMS320F28335 ................................................................................................................................. 24
5.1 - INTRODUÇÃO ................................................................................................................................. 24
5.2 - CPU .................................................................................................................................................... 25
5.3 - BARRAMENTO DE PERIFÉRICOS ................................................................................................ 25
5.4 - INTERFACE EXTERNA................................................................................................................... 25
5.5 - FLASH ............................................................................................................................................... 25
5.6 - L0, L1, L2, L4, L5, L6, L7 E SARAMS ............................................................................................... 25
5.7 - BOOT ROM ....................................................................................................................................... 26
5.8 - SEGURANÇA ................................................................................................................................... 27
5.9 - BLOCO PIE ....................................................................................................................................... 27
5.10 - INTERRUPÇÕES EXTERNAS ....................................................................................................... 28
5.11 - DIAGRAMA DE PERIFÉRICOS .................................................................................................... 28
5.11.1 - DIAGRAMA ZERO: .................................................................................................................... 28
5.11.2 - DIAGRAMA UM: ........................................................................................................................ 28
5.11.3 - DIAGRAMA DOIS: ..................................................................................................................... 28
5.11.4 - DIAGRAMA TRÊS: ..................................................................................................................... 29
5.12 - PERIFÉRICOS DE CONTROLE ..................................................................................................... 29
5.13 - PERIFÉRICOS RESPONSÁVEIS PELA COMUNICAÇÃO SERIAL ........................................... 29
5.14 - CONCLUSÃO ................................................................................................................................. 30
CAPÍTULO 6 31
COMPARATIVO ...................................................................................................................................... 31
xi
6.1 - INTRODUÇÃO ................................................................................................................................. 31
6.2 - CÓDIGO ............................................................................................................................................ 31
6.2.1 - BIT RXFIFST .................................................................................................................................. 31
6.2.2 - HABILITANDO O BLOCO PIE .................................................................................................... 32
6.2.3 - CONTADOR DO TIMER ............................................................................................................... 32
6.2.4 - HABILITANDO O SOC ................................................................................................................ 33
6.2.5 - SELECIONANDO O PERÍODO DO TIMER ................................................................................ 34
6.3 - GERANDO SVPWM (2812 E 28335) ................................................................................................ 34
6.4 - EVENT MANAGER (2812) .................................................................................................................... 38
6.5 - EQEP .................................................................................................................................................. 38
6.6 - PERIFÉRICOS ................................................................................................................................... 39
6.7 - CONVERSOR ANALÓGICO-DIGITAL ...................................................................................................... 40
6.8 - CONCLUSÃO ................................................................................................................................... 44
CONCLUSÕES.......................................................................................................................................... 46
REFERÊNCIAS BIBLIOGRÁFICAS ....................................................................................................... 47
xii
LISTA DE FIGURAS
Figura 1 - Exemplo de um sinal analógico. ................................................................................ 2
Figura 2 - Exemplo de um sinal analógico, convertido para sinal digital. ................................. 3
Figura 3-Esquemático em diagrama de blocos de um DSP........................................................ 4
Figura 4 - Exemplo de um sinal com o filtro averaging filter. ................................................... 5
Figura 5 - Esquemático do tratamento de um sinal analógico do sistema. ................................. 7
Figura 6 - Gráfico que mostra a evolução dos microprocessadores Delfino e Piccolo ............ 11
Figura 7 - Kit de desenvolvimento 2812 .................................................................................. 15
Figura 8 - Esquemático em diagrama de blocos do módulo do AD. ........................................ 21
Figura 9 - Kit de desenvolvimento DSP 28335. ....................................................................... 24
Figura 10 - Diretório para o arquivo HVACI_Sensorless. ....................................................... 36
Figura 11 - Erros da compilação do projeto. ............................................................................ 37
Figura 12 - Planta utilizada para os testes dos DSP's ............................................................... 41
Figura 13 - Leitura da posição do motor com o osciloscópio .................................................. 42
Figura 14 - Leitura da posição do motor com o osciloscópio com o 2812 ligado na planta .... 42
Figura 15(a) - Leitura da posição do motor (b) Leitura da posição do motor em radianos,
utilizando o CCS V3.3 .................................................................................................... 43
Figura 16(a) – Outro exemplo de uma leitura da posição do motor (b) Leitura da posição do
motor em radianos, utilizando o CCS V3.3 .................................................................... 43
Figura 17(a) Leitura da posição do motor (b) Leitura da posição do motor em radianos,
utilizando o CCS V3.3 .................................................................................................... 44
Figura 18(a) Outro exemplo de uma leitura da posição do motor (b) Leitura da posição do
motor em radianos, utilizando o CCS V3.3 .................................................................... 44
xiii
LISTA DE TABELAS
Tabela 1 - Seleção dos modos de Boot para o 2812 ....................................................... 18
Tabela 2 - Seleção do modo Boot para o 28335 ............................................................. 26
Tabela 3 - Análise geral entre os DSP's .......................................................................... 40
xiv
LISTA DE SIGLAS
SIGLA SIGNIFICADO
ADC Analog-Digital Converter
API Application Programming Interface
BIOS Basic Input/Output System
BLDC BrushLess Direct Current
CD Compact Disc
CLA Control Law Accelerator
DMA Direct Memory Access
DMC Digital Motor Control
DSP Digital Signal Processor
DVD Digital Versatile Disc
eCAN Enhanced Controller Area Network
eCAP Enhanced CApture Peripheral
ECLS Emulation Code Security Logic
ePWM Enhanced Pulse With Modulation
eQEP Enhanced Quadrature Encoder Pulse
EV Event Manager
FIFO First Imput First Output
FPU Float-Point Unit
GPIO General Purpose Input/Output
HRPWM High Resolution PWM
I2C Inter-Intergrated Circuit
IDE Integrated Development Environment
JTAG Joint Test Action Group
McBSP Multichannel Buffered Serial Port
MCS Module Code Secutiry
MFLOPS FLoating point OPerations per Second
OTP One Time Programable
PAC Capture Inputs
xv
PID Proportional Integral and Derivative
PIE Peripherical Interrupt Enable
PLL Phase-Locked Loop
PM Motor Permanent Magnet Motor
PWM Pulse With Modulation
QEP Quadrature Enconder Pulse
RAM Random Access Memory
ROM Read Only Memory
SARAM Single Access RAM
SCI Serial Comunication Interface
SOC Start of Conversion
SPI Serial Peripherical Interface
SYS Control System
UART Universal Asynchronous Receiver/Transmitter
1
INTRODUÇÃO
Um processador de sinais digitais é uma das mais poderosas tecnologias que deverá
moldar a ciência e a engenharia no século XXI. Mudanças revolucionárias já foram feitas em
em vários campos de pesquisa, como comunicação, imagens médicas, radares e sonares,
reprodução de música de alta qualidade, como alguns exemplos. Cada uma dessas áreas tem
desenvolvido uma tecnologia própria, com seus algoritmos, lógicas e técnicas especializadas.
Assim, fica inviável para uma pessoa só dominar toda a essa tecnologia em DSP que tem sido
desenvolvido. [19]
Assim, considerando a área de pesquisas academicas, tem-se que estudo e aplicações
com DSP’s são feitas em uma grande variedade de áreas: física, geologia, engenharia
biológica, oceanografia, engenharia mecânica e elétrica, por exemplo, com o objetivo de
apresentar técnicas práticas. [19]
Para um estudo aprofundado em DSP, é preciso duas coisas: aprendizagem de conceitos
gerais que se aplicam ao campo da área da pesquisa e a aprendizagem de técnicas
especializadas para a sua área de interesse particular.
Considerando uma área de pesquisa focada em controle digital de motores, é necessário
um bom conhecimento sobre DSP’s e do que eles são capazes. É necessário conhecer bem
seus periféricos para saber se o DSP em questão é recomendável para tal aplicação.
Para evitar dúvidas na escolha de qual DSP utilizar, será mostrado uma família de
DSP’s que fora desenvolvida especialmente para esse tipo de aplicação. Serão mostrados
características dessa família e suas séries, alguns aplicativos e bibliotecas bastante utilizadas
pelos usuários que possuem os DSP’s dessa família.
A partir disso, haverá um destaque referente a dois DSP’s, ambos dessa família. Será
comentado características desses DSP’s. A partir dessas características, será realizado um
comparativo entre eles, onde será abordado mudanças entre seus periféricos, vantagens e
desvantagens de um, em relação a outro, e será comentado algumas mudanças entre seus
registradores e na implementação de algoritmos.
2
CAPÍTULO 2
DIGITAL SIGNAL PROCESSOR
2.1 - INTRODUÇÃO
Perdeu-se muito tempo tentando criar computadores analógicos para lidar com
extensos cálculos em sistemas contínuos, mas os computadores analógicos mostraram-se
inflexíveis, lentos e difíceis de execultar esse tipo de tarefas. Em particular, era difícil
implementar algoritmos nesses computadores. Utilizava-se computadores lentos para
trabalhar com plantas que possuíam sistemas digitais, porém sistemas digitais não trabalham
com ondas contínuas, sendo assim uma das grandes limitações de épocas antigas. A partir
dessa dificuldade, foram feitos computadores digitais onde algoritmos complexos poderiam
ser codificados com relativa facilidade. Isso significava que dados de uma determinada
pesquisa deveriam ser trabalhados no formato digital. [15]
Em 1960, a digitalização dos dados foi muitas vezes uma tarefa manual. Até o final da
década de 1980, a quantidade de dados foi lido em computadores digitais provenientes de
sistemas de fita de papel. No entanto, cada vez mais os computadores estavam sendo
aproveitados directamente para os circuitos que poderia produzir uma saída digital quando
recebíam uma entrada analógica. Tornou-se possível fazer um sinal analógico, mostrado na
figura 1, a seguir, ser transformado num sinal digital: [15]
Figura 1 - Exemplo de um sinal analógico.
Esse processo de conversão se deve a um tipo especial de conversor, chamado conver-
sor analógico-digital, onde ele recebe um digital analógico qualquer, como por exemplo, o da
figura 1, acima, e converte para um sinal digital, similar ao sinal analógico, com a vantagem
3
de que pode ser lido por um computador digital. Passando o sinal da figura 1 para o computa-
dor, através de um conversor AD, tem-se o seguinte sinal digital mostrado na figura 2, abaixo:
Figura 2 - Exemplo de um sinal analógico, convertido para sinal digital.
Uma vez no computador, o processo pode ser revertido, jogando-o para fora através do
conversor DA, que pega um sinal digital e o converte para um sinal analógico, similar.
Nenhum computador digital pode perfeitamente reproduzir o sinal original, pois cada amostra
é um número único que representa o sinal em alguns pequenos intervalos. Técnicas modernas
permitem que essa amostra digital possa ser tão boa que não é possível, por exemplo, ver
diferença de conteúdo em um CD ou DVD, mas há essa diferença. Os sistemas digitais têm
erros como qualquer outro sistema. Minimizar esses erros para torná-los imperceptíveis é o
que deve ser feito. [15]
2.2 - VISÃO GERAL DE UM DSP
DSP é uma ferramenta composta por um microcontrolador, que possui uma arquitetura
mais robusta que um microcontrolador comum. Foi designado exclusivamente para trabalhar
especializadamente com vários tipos de sinais. É um dispositivo programável, onde cada em-
presa que, diga-se, desenvolve o seu próprio DSP, também desenvolve o ambiente de desen-
volvimento de trabalho para aquela especificação do DSP, também chamado de IDE, onde
nesse ambiente ocorre toda a programação e a gravação de algoritmos para o DSP. [13]
Um DSP não é apenas um microcontrolador robusto e rápido em um uma placa. Utili-
zou-se o termo DSP para uma placa onde está este microcontrolador e também um conjunto
de ferramentas que auxiliam esse microcontrolador. Esse conjunto de ferramentas são os peri-
féricos, os registradores, as unidades aritméticas lógicas e as memórias. [18]
Abaixo, na figura 3, tem-se uma representação simples em diagramas de blocos de um
DSP. Basicamente, há alguns blocos comuns entre todos os DSP’s, como por exemplo, o blo-
4
co que recebe os dados analógicos do sistema, os blocos de tratamento desses sinais e blocos
que retornam os sinais ao sistema, o bloco responsável pelo Timer do sistema e os pinos de
entrada e saída. [17]
Figura 3-Esquemático em diagrama de blocos de um DSP.
2.3 - TRATAMENTO DO SINAL
Uma vez que o sinal está no sistema digital, pode-se processá-lo de várias formas. Este
é o ponto onde utilizam-se algoritmos para o tratamento do sinal, ou seja, essa é a parte
complicada do processo. No entanto, se a forma de tratamento é considerada simples, a parte
complicada fica somente para os desenvolvedores dessa tecnologia. Se a forma de tratamento
é especial, diferente e complexa, o usuário precisa saber se esse processo é possível ser feito.
[15]
Considere um simples algoritmo para trabalhar no domínio digital. Um dos filtros
mais simples conhecidos é chamado pelo termo técnico em inglês, denominado averaging
filter. Usando esse filtro digital no sinal da figura 2, acima, pode-se suavizar o sinal e torná-lo
menos ruidoso. Assim, após converte-lo novamente para um sinal analógico, obtem-se o
seguinte sinal, como mostrado na figura 4, abaixo: [15]
5
Figura 4 - Exemplo de um sinal com o filtro averaging filter.
Esse filtro não deixa perfeitamente sem ruídos, mas melhora a qualidade do sinal e
assim pode ser suficiente para o que quere-se fazer. Filtros digitais mais complexos podem ser
construídos a partir de uma média ponderada de amostras, mas ainda há outro problema
complexo, o tempo. [15]
Pensa-se muito sobre o tempo que gasta-se para fazer algoritmos e cálculos. As vezes,
fica-se frustrado pela lentidão do processador ou quanto tempo leva para uma planilha de
cálculos atualizar, mas a menos que consiga-se trabalhar no nível do microcontrolador com
uma linguagem de programação de alto nível, os rápidos ciclos de tempo de execução de
rotinas dos microcontroladores, tem muito pouco significado. No entanto, quando se trabalha
com DSP, o tempo de processamento torna-se importante. Considere que tem-se que fazer
uma média das últimas três amostras digitais coletadas, juntas, e assim a saída dessa
comparação fosse um sinal no mesmo tempo das amostra, então: [15]
Cada nova amostra deve ser armazenada.
A nova amostra tem que participar de uma média com as duas últimas amostras.
O resultado deve ir para a saída do sistema digital, ou seja, para o conversor DA.
Tudo isso tem que acontecer antes da próxima amostra ser recebida e armazenada. Isto
defini-se processamento de sinal em tempo real. Estando-se trabalhando a uma taxa de 10.000
amostras por segundo, então tem-se um milésimo de segundo para completar o ciclo. Este é o
tempo de ciclo de qualquer microcontrolador, mas este tempo pode não ser suficiente, caso
queira-se usar algoritmos mais complexos. [15]
Processamento em blocos recebe um grande número de amostras, por exemplo 1024,
em um ciclo e processa-os, enquanto os próximos 1024 estão sendo coletados. Alguns
algoritmos, como a Transformada Rápida de Fourier, como exemplo, só podem funcionar
6
nesse modo, mas mesmo esse tempo pode não ser suficiente para cálculos muito complexos.
[15]
Qual o motivo para querer-se fazer uma transformada de Fourier? Simplesmente
porque é possível aplicar algoritmos no domínio da frequência que não pode-se aplicar no
domínio do tempo. Algumas funções destacam-se no domínio da frequência. Porém, o ruído
pode aparecer como um elemento aleatório a algum ponto no domínio da frequência.
Claramente, se o sinal que quer ser processado for simples, é fácil achar uma maneira de
eliminar a maior parte do ruído. No entanto, raramente é simples, pois a maioria dos sinais
variam ao longo do tempo. [15]
Avanços na velocidade dos microcontroladores dos DSP’s e microprocessadores, em
geral, abrem novas possibilidades para novos algoritmos, mas sempre estará limitado pelas
exigências de tempo e tamanho. Desenvolvendo algoritmos complexos, fica fácil quando tem-
se de espaço para armazenar os dados e o tempo necessário para os cálculos, mas quando um
microcontrolador DSP tem que fazer algo em tempo real, existem sérias limitações sobre o
“que” e o “quanto” que pode ser feito. [15]
A sofisticação dos DSP permite reconhecer um sinal com ruídos, por suas
características. Pode-se fazer o tratamento da maior parte do ruído, melhorando a relação
sinal-ruído, para assim, torná-lo mais compreensível. Ainda mais, pode-se adaptar como o
sinal e o ruído sofrerão mudanças ao longo do tempo. Nenhum algoritmo é perfeito, mas em
comparação com algoritmos de 20 anos atrás, o nível de melhora na redução do ruído pode ser
considarado fenomenal. [15]
2.4 - APLICAÇÕES
Tem-se que alguns algoritmos de processamento de sinais digitais requerem uma
grande quantidade de cálculos e fórmulas matemáticas, que devem ser executadas de forma
rápida e precisa. Esses sinais são constantemente convertidos de seu estado analógico para um
estado digital, trabalhados na sua forma digital e depois novamente convertido para seu estado
analógico, como mostra a figura 5, abaixo. Um sinal digital nada mais é que uma representa-
ção numérica, como uma seqüência de bits, de um sinal analógico [18]:
7
Figura 5 - Esquemático do tratamento de um sinal analógico do sistema.
Tem-se que um microprocessador comum possui um AD interno e consegue realizar
essa operação com sucesso, mas seu uso é restrito, não sendo utilizado internamente em dis-
positivos portáteis, como um celular. Essa é uma das vantagens do DSP em relação a esse mi-
croprocessador comum, além de fornecer uma solução de baixo custo, com melhor
desempenho. [19]
A função de um DSP é exatamente otimizar o processamento de sinais digitais. Mas o
DSP não foi feito para fazer somente o tratamento de sinais digitais. Abaixo tem-se algumas
características e funções próprias de DSP’s: [19]
Compressão e descompressão de sinais;
Filtros digitais;
Equipamentos Eletrônicos;
Assim, com todas essas funções, ocorreu que o DSP começou a ser utilizado em várias
áreas diferentes: [19]
Programa Espacial: Utilizado em tratamento de fotografias, compressão de dados, aná-
lise de sensores inteligentes;
Medicina: Diagnósticos e tratamentos de imagens, análise de eletrocardiogramas, ar-
mazenamento de imagens médicas;
Comércio: compressão de som e imagem, efeitos especiais em filmes, vídeo conferên-
cias;
Telecomunicações: compressão de voz e dados, redução de eco, tratamento de sinais
multiplexados e desenvolvimento de filtros para aplicações nessa área;
Militar: Pesquisa com sensores, radares, segurança em comunicações;
Indústria: Busca por óleo e tipos especiais de minérios, controle e monitoramento de
processos e máquinas, desenvolvimento de ferramentas;
Ciência: análise e gravação de terremotos, aquisição de dados, análise espectral, simu-
lação e modelagem. [19]
8
Dentre tantas aplicações em diferentes áreas, focaremos numa aplicação na indústria,
na aplicação em acionamento digital de máquinas, onde será falado sobre uma família de
DSP’s que foi desenvolvida especialmente para este tipo de aplicação. A partir do próximo
capítulo, serão abordadas as características da família C2000, uma linha de DSP’s para acio-
nar máquinas.
2.5 - CONCLUSÃO
Pode-se dizer que o desenvolvimento dos DSP’s começou quando houve uma deman-
da para trabalhar com sinais digitais, pois não foi possível melhorar os sistemas de épocas an-
tigas utilizando apenas sinais analógicos. Para trabalhar da melhor forma com esses sinais fo-
ram desenvolvidos os primeiros DSP’s.
O DSP é uma das melhores ferramentas para trabalhar com sinais digitais, devido a
várias formas que ele apresenta para tratamento de sinais, como filtros e poder utilizar algo-
ritmos no domínio da freqüência, compressão e descompressão desses sinais. Devido essa li-
berdade de trabalhar com esses sinais, o DSP é utilizado nas mais diversas áreas de pesquisa.
9
CAPÍTULO 3
FAMÍLIA C2000
3.1 - INTRODUÇÃO
Esse capítulo abordará uma família de DSP’s, denominada de família C2000, desen-
volvida especialmente para acionamentos de máquinas. Uma ferramenta equipada com vários
periféricos, guias, documentos que abordam assuntos gerais sobre essa família, datasheets,
exemplos de aplicações, dentre outros documentos, permitindo assim os mais variados tipos
de controle para acionamentos de máquinas. Esse capítulo descreverá os periféricos internos
dessa ferramenta, o motivo pelo qual ela foi desenvolvida, quem utiliza e quem a desenvolve,
algumas ferramentas auxiliares e algumas vantagens dela. [7]
3.2 - FAMÍLIA C2000
Essa é uma família de microprocessadores de 32 bits que foram desenvolvidos para
execução de um controle em tempo real. Ele possui um núcleo que permite realizar vários al-
goritmos complexos de controle, simultaneamente, para as mais variadas aplicações. Possuem
uma grande variedade de periféricos, denominados, ADC, um conversor analógico-digital,
Unidade Central de Processamento, interface externa, GPIO, que são os pinos para entrada e
saída, SPI, periférico utilizado para comunicação serial, UART, I2C, eCAN, McBSP, tornan-
do-os a solução ideal quando se trata de controle e automação. [9]
Esses processadores foram desenvolvidos para aplicações cujo acionamento tem de ser
algo que necessite de um alto desempenho, que haja um tipo de controle de difícil
implementação, rápido e eficaz. Exemplos de Aplicações desse tipo são os acionamentos de
máquinas. Portanto, há uma procura significativa por algum tipo de controle digital para
motores, os chamados DMC’s. Será dado uma ênfase nesse tipo de aplicação, mais a frente,
neste capítulo. [9]
Esse tipo de processador faz parte de um kit de desenvolvimento, próprio para
executar algum controle que visa acionar, de alguma forma, um motor. Dentro desse kit, há
muitas ferramentas prontas que ajudam a desenvolver, com mais facilidade, esse tipo de
controle digital, como vários tipos diferentes de drivers, APIs, utilitários e bibliotecas para
10
controle digital de motores. Também vem documentos prontos que exemplificam aplicações
diferentes dos periféricos, dicas e estratégias de desenvolvimento para poder utilizar esse kit,
mesmo que o usuário não tenha nenhuma experiência nesse tipo de aplicação. [9]
Acionar um motor, a partir de um controle digital, tem sido algo bastante desafiador,
desde as primeiras formas de acionamentos. Embora as técnicas de controle digital e da alta
performance de microcontroladores, tenham tornado a vida muito mais fácil para os
engenheiros, fatores como modelos de motores não-lineares, projetos que envolvem várias
malhas de controle, algoritmos complexos, dependências de parâmetros como algumas
constantes internas do motor e temperatura do ambiente, estruturas complexas de softwares,
dentre outros fatores, retardam o desenvolvimento de novas formas de acionamentos. [9]
Existe uma empresa especializada nesse tipo de hardware, chamada Texas Instruments
Incorporeted. Seus pesquisadores entendem e estudam os desafios desse tipo de acionamento
e buscam facilitar esse tipo de controle, fornecendo materiais e ferramentas que aceleram
significativamente o desenvolvimento desse tipo de aplicação, além de soluções de problemas
de sistemas de controle de motores. [9]
Essas ferramentas permitem que os desenvolvedores determinem rapidamente os
recursos de processamento necessários para implementar um controle digital para
acionamento de motores. A partir desta base, eles são capazes de formular algoritmos
avançados com grande capacidade de processamento para uma maior precisão, melhor
desempenho e maior eficiência. Desta forma, os desenvolvedores podem arquitetar sistemas
otimizados especificamente para restrições a diversas aplicações e necessidades. [9]
A seguir, será citado as duas principais ferramentas desenvolvidos pelos pesquisadores
que são utilizadas para acionamento de máquinas.
3.2.1 - MICROCONTROLADORES PICCOLO ™:
A série TMS320F2802x/F2803x, também chamada família Piccolo, é considerada
uma solução para técnicas de controle em tempo real. Esses dispositivos apresentam até 128
KB de memória flash em conjunto com uma série de funções integrados, que são um
conversor analógico-digital, PWM de alta resolução, osciladores de alta precisão,
comparadores analógico, dentre outras funções. Há também um pacote opcional de ponto
flutuante com CLA, Lei de Controle Acelerado – o CLA executa o algoritmo de controle
junto as tarefas do código com acesso independente aos periféricos de feedback e feedforward
– que fornece um caminho paralelo ao loop de controle, sem sobrecarregar o processador
11
principal. Dessa forma, a família Piccolo é a melhor combinação de desempenho com baixo
custo (somente o microcontrolador, do kit DSP, pode chegar a custar até um dólar). [10]
3.2.2 - MICROCONTROLADORES DELFINO ™:
O microcontrolador Delfino, apresenta um bom desempenho e suporte para ponto
flutuante, quando comparado as famílias desenvolvidas pela TI. OS DSP’s F2833x operam
em até 150 MHz com 300 MFLOPS, ou operações de ponto-flutuante por segundo.
Apresentam um aumento de desempenho de 50%, em média, enquanto estão em operação no
clock de 150 MHz. Construído no padrão da arquitetura de um C28x™, sendo seu software
compatível 100% com todos os MCUs atuais, ou seja, MCUs de série com referência inicial
F28xx. [10]
O novo C2834x Delfino quebra ainda mais os limites, oferecendo 600 MFLOPS de
desempenho. A plataforma C2834x permite redução de até 52% no tamanho de códigos, e
70% de redução no tempo de acesso à memória em relação aos MCUs C2000 atuais. Além
disso, o PWM de alta resolução oferece uma resolução de 65 ps. Com essa maior velocidade,
tem-se uma maior inteligência e eficiência em aplicações de controle em tempo real. [10]
Abaixo tem-se a figura 7 que mostra a evolução desse microprocessadores:
Figura 6 - Gráfico que mostra a evolução dos microprocessadores Delfino e Piccolo
12
3.3 - FERRAMENTAS DO SOFTWARE
3.3.1 - BIBLIOTECA IQMATH
Para algoritmos de controle em tempo real, utilizados industrialmente, são necessários
uma grande precisão e uma execução de alta velocidade. Utilizando a linguagem C para
desenvolver um código de controle, são utilizados algumas bibliotecas para calcular funções
matemáticas, tais como funções trigonométricas, cálculos que envolvem divisão, dentre
outros, no entanto, esta abordagem não pode resultar em uma melhor eficiência do código.
Assim, a TI fornece uma biblioteca otimizada e funções matemáticas de alta precisão, sob a
forma da biblioteca IQMath. Utilizando rotinas matemática pelas bibliotecas matemáticas do
IQ, tem-se que o usuário, ao fazer uso destas bibliotecas, pode alcançar velocidades de
execução consideravelmente maior do que o código equivalente, escrito em linguagem C
padrão ANSI. As rotinas incluídos na biblioteca IQMath podem ser classificadas como: [9]
Aritmética (adição, subtração, divisão, multiplicação);
Funções trigonométricas (seno, cosseno tangente);
Diversos (saturação, valor absoluto).
IQmath usa as instruções presentes nos DSP’s de referencia inicial C28x, sendo a
maneira mais eficiente para utilizar as várias funções matemáticas. Resumidamente, os
benefícios e contribuições da Biblioteca IQMath para os processadores da família C2000
podem ser resumidas como segue:
Migração de flutuante para fixo: Todas as funções disponíveis na versão de ponto
flutuante da biblioteca estão disponíveis na versão de ponto fixo e vice-versa, daí, a migração
de fixo para flutuante torna-se muito fácil.
Função otimizada: Esta função permite um rápido controle de execução de múltiplas
rotinas. Mais rápido que se fosse usado rotinas padrão ANSI-C.
3.3.2 - CONTROLE DIGITAL DE MOTORES
A biblioteca de controle digital de motores, é composto de funções C (ou macros),
desenvolvidos para usuários de microprocessadores da família C2000. Os módulos de
biblioteca DMC abrangem quase todas as funções matemáticas que são essenciais para o
13
controle do acionamento de motores. Estes módulos são representados como blocos
modulares e podem ser classificados como: [9]
Módulo de transformações: transformada de Clark, transformada de Park, Cálculo da
tensão de fase, Observador por modo deslizante, Estimador de Fluxo Direto, Estimadoras e
Calculadoras de velocidade, Calculadoras e Estimadoras de posição.
Geradores de sinais e módulos de controle: PID, Gerador de Gatilhos, controlador de
V/f, Gerador de Degrau, Contador Hexadecimal, Controladores de low-rate, baixa taxa,
geradores de rampa, Geradores de Pulsos em Espaço Vetorial.
Drivers para Periféricos: PWM para várias topologias e técnicas, Drivers para
conversores analógico-digitais, Driver para sensores de efeito Hall, dentre outros Drivers.
Módulo de depuração em tempo-real: Módulo para monitoramento das variáveis de
controle.
Na biblioteca de DMC, cada módulo é documentado separadamente com o código
fonte. Todos os módulos DMC permitem aos usuários criar rapidamente, ou personalizar os
seus próprios sistemas. Essa biblioteca também oferece suporte a três tipos de motores, motor
de indução, motores BLDC, motor de corrente contínua sem escova, e motores PM, mas não
está limitado a somente estes motores. [9]
Os módulos da biblioteca DMC, implementados pelo IQmath, são usados para
construir tanto sistema com algum tipo de sensor, como em sistemas do tipo sensorless. Uma
versão anterior da biblioteca DMC, chamada legacy, foi liberada para as plataformas F281x e
F280x. A partir do ano de 2010, as bibliotecas foram revisadas, para um uso ainda mais
otimizado, para as plataformas F2803x (Piccolo) e F2833x (Delfino), que são as famílias
utilizadas pelo software ControlSUITE™. Nesse software tem-se uma biblioteca que contém
aplicativos para esse controle, chamada math_blocks. Há duas versões do math_blocks no
ControlSUITE, a versão v1.1, que suporta todos os três tipos de motores e é válida apenas
para processadores de ponto fixo, e a versão v2.0, que suporta tanto pontos fixos (sistema
suado em todos os tipos de motores) como também suporta sistemas em pontos flutuantes
(sistema usado em motores de indução e PM). [9]
3.3.3 - CONTROLSUITE
O controlSUITE ™, desenvolvido para microcontroladores da família C2000 é um
software que possui um conjunto de ferramentas destinadas a minimizar o tempo de desen-
volvimento de projetos, pois possui várias bibliotecas, drivers, datasheets e demonstrações de
14
como utilizar os periféricos, especificamente para várias aplicações em acionamento de má-
quinas. [17]
Seu conteúdo pode ser dividido em três subpastas:
Kits de desenvolvimento: pasta que contem várias aplicações específicas para um
determinado tipo de motor, aplicações em outros dispositivos e aplicações em
conversores;
Suporte aos dispositivos da família C2000: apresenta cabeçalhos básicos para iniciar
um projeto, qual seja o seu DSP;
Bibliotecas: Apresenta cabeçalhos avançados, para aplicações em controle, para
algoritmos matemáticos, para algum periférico de algum DSP da família C2000.
Nos próximos capítulos, será detalhado dois DSP’s dessa família, um será o
TMS320F2812 e o outro será o TMS320F28335. Enquanto o primeiro é um DSP que segue
de ligação entre um Delfino e um Piccolo, o segundo é um DSP da marca Delfino.
3.4 - CONCLUSÃO
Viu-se neste capítulo as principais funções dos DSP’s da família C2000, descrições de
duas de suas séries mais utilizadas, diferenças e características de cada série, alguns softwares
que se destacam nas aplicações dessa família e como é feito o controle para o acionamento de
motores com seus recursos.
A família C2000 é mais requisitada para o controle de motores, devido as bibliotecas e
ferramentas desenvolvidas para ela. Essas bibliotecas possuem vastas aplicações e formas de
controle digital para motores. Devido o fato de que atualmente ainda há o desenvolvimento de
novas formas de controle, essa família de DSP’s continua como sendo a mais buscada para
fazer controles digitais em motores.
15
CAPÍTULO 4
DSP TMS320F2812
4.1 - INTRODUÇÃO
Esse capítulo abordará características gerais do DSP TMS320F2812, da família
Piccolo, que inclui um visão geral das características de todos os seus periféricos. Ao longo
do texto, para facilitar este estudo, a referência TMS320F2812 será abreviadas como 2812.
[11]
Escolheu-se o DSP 2812 porque ele é um dos primeiros DSP’s adquiridos pelo Depar-
tamento de Engenharia Elétrica da UFC, devido o fato dele possuir suporte para fins de acio-
nar uma máquina de indução trifásica. Assim, será abordado, individualmente, cada um dos
periféricos que compõe esse DSP, onde será mostrado o porquê de terem escolhido esse DSP.
[11]
Abaixo, na figura 7, tem-se a seguinte foto desse DSP:
Figura 7 - Kit de desenvolvimento 2812
4.2 - CPU
O C28x demonstrou ser eficiente na linguagem C, permitindo desenvolver não só o
seu software de controle do sistema, mas também permite o desenvolvimento de algoritmos
matemáticos, sendo assim eficiente em tarefas matemáticas, e em tarefas de controle de
16
sistema, que normalmente são controladas por meio de dispositivos microcontroladores,
sendo capaz de responder a eventos externos e assíncronos num curto espaço de tempo. O
C28x tem um pipeline, uma técnica que consiste em dividir o processador em vários estágios
distintos, de 8 níveis de profundidade. Isso permite execuções a velocidades elevadas sem
precisar recorrer a ajuda de memórias de alta velocidade. [4] [18]
4.3 - BARRAMENTO DE MEMÓRIA
Vários barramentos são usados para mover dados entre as memórias, periféricos e a
CPU. A arquitetura de barramento de memória do C28x contém um barramento de leitura do
programa, um barramento de leitura de dados e um barramento de gravação de dados, onde os
três barramentos são compostos por 32 linhas de endereço e 32 linhas de dados cada. [4]
4.4 - BARRAMENTO DE PERIFÉRICOS
O 2812 adota um padrão de barramentos de periféricos para poder interligar
periféricos entre eles. Esse barramento ramifica-se em vários outros barramentos,
transformando-se em um único barramento que consiste em 16 linhas de endereço e 16 linhas
de dados e sinais de controle associados. [4]
4.5 - JTAG EM TEMPO REAL
JTAG é uma interface para testes em programação e testes em circuitos digitais. O
2812 apresentam suporte em tempo real para operações onde o conteúdo da memória,
periféricos, e registros locais podem ser modificados, enquanto o processador está rodando e
executando o código. Esses DSP’s implementam o modo em tempo real na própria CPU,
sendo assim esta uma característica única dele. [4]
17
4.6 - INTERFACE EXTERNA
Esse tipo de interface é composto por 19 linhas de endereço, 16 linhas de dados e 3
linhas do tipo chip-select. Essas linhas são divididas em 5 zonas externas, nomeadas zonas 0,
1, 2, 6 e 7. Cada zona pode ser programada com diferentes números de estados de espera. [4]
4.7 - FLASH
O 2812 contém 128K x 16 de memória flash embutido e uma única seção 1K x 16 de
memória OTP, caracterizada apenas por permitir uma única gravação. É possível apagar,
programar e validar um setor da memória flash, deixando outros setores intactos. No entanto,
não é possível a utilização de um setor da memória flash para executar algoritmos que apagam
setores da mesma memória. [4]
4.8 - ROM
ROM é caracterizada por um tipo de memória exclusivamente utilizada para leitura. O
2812 contém 128K x 16 de memória ROM. [4]
4.9 - M0, M1, SARAMS
SARAM é caracterizada por uma parte da memória com acesso único. O 2812 possui
dois blocos de memória de acesso único, cada uma de tamanho 1K x 16, que são os blocos
M0 e M1. [4]
4.10 - L0, L1, H0 SARAMS
O 2812 possui um espaço de 16K x 16 de memória RAM de acesso único, dividido em
três blocos (4K, 4K e 8K), que são respectivamente, L0, L1 e H0. Cada bloco pode ser
acessado de forma independente. [4]
18
4.11 - BOOT ROM
O Boot ROM é um software de boot, carregado na ROM. O programa é executado
após o DSP resetar, redefinindo-o e verificando vários pinos GPIO para determinar qual modo
de inicialização eles devem operar. A tabela 1 abaixo mostra como “chamar” os vários modos
de Boot: [4]
Tabela 1 - Seleção dos modos de Boot para o 2812
BOOT MODE SELECTED GPIOF4
(SCITXDA)
GPIOF12
(MDXA)
GPIOF3
(SPISTEA)
GPIOF2
(SPICLK)
Jump para Flash/ROM 1 X X X
Boot pelo SPI carregado via serial
externa EEPROM
0 1 X X
Boot pelo SCI carregado via SCI-A 0 0 1 1
Jump para H0 ou SARAM 0 0 1 0
Jump para OTP 0 0 0 1
Boot carregado via GPIO Port B 0 0 0 0
4.12 - SEGURANÇA
Apresenta suporte de segurança para proteger o firmware, que consiste de um conjunto
de instruções operacionais programadas diretamente no DSP. O recurso de segurança consiste
de uma senha de 128 bits. Esse módulo de segurança (MCS) é usado para proteger as
memórias flash, ROM, OTP, L0/L1 e os blocos SARAM. [4]
4.13 - BLOCO PIE
O bloco PIE fornece um conjunto de interrupções. Ele pode suportar até 96
interrupções dos periféricos, onde são agrupadas em blocos de oito e cada grupo é alinhado
em uma seção de 12 linhas de interrupção (INT1 para INT12). Cada interrupção pode ser
ativada ou desativada no bloco PIE. [4]
19
4.14 - INTERRUPÇÕES EXTERNAS
Apresenta três interrupções externas, que são XINT1, XINT2 e XINT13. Cada uma
das interrupções podem ser selecionadas a partir de uma borda de subida ou de descida, e
também exercem função de habilitar e desabilitar (menos o XNMI). As interrupções possuem
um contador de 16 bits, que é zerado quando uma interrupção é detectada. [4]
4.15 - OSCILADOR E PLL
O 2812 pode ser sincronizados por um oscilador externo ou por um cristal ligado ao
circuito oscilador. Os ciclos de PLL’s podem ser alterados em tempo real, no próprio
software. [4]
4.16 - WATCHDOG
O 2812 possui suporte a esse timer. Deve-se definir regularmente o contador “cão de
guarda”, dentro de um tempo determinado, caso contrário, será gerado um reset ao
processador. Esse timer pode ser desativado se necessário. [4]
4.17 - CLOCK DOS PERIFÉRICOS
Os clocks de cada periférico podem ser ativados ou desativados para reduzir o
consumo de energia quando um periférico não estiver em uso, permitindo um aumento da
velocidade de processamento das operações. [4]
4.18 - MODOS DE OPERAÇÃO
Esse DSP apresenta três modos de operações, listados abaixo: [4]
Dormindo (IDLE): Coloca a CPU em modo de baixa potência. Clocks de alguns
periféricos podem ser desativados e os periféricos que devem funcionar são deixados ligados
durante essa operação. Há uma interrupção que ativa o processador para sair deste modo.
Espera (standby): Desliga os clocks da CPU e dos periféricos, deixando o oscilador e o
PLL funcionando. Uma interrupção externa, ativa a CPU e os periféricos.
20
Parado (halt): Desliga o oscilador interno. Este modo basicamente desliga o
microcontrolador e coloca-o no modo de menor consumo possível de energia. Apenas uma
redefinição ou XNMI pode ativá-lo e tirá-lo desse modo.
4.19 - DIAGRAMA DE PERIFÉRICOS
Os periféricos desse microcontrolador estão dispostos em 3 diagramas, mostrados
abaixo: [4]
4.19.1 - DIAGRAMA ZERO
XINTF: Registradores de configuração da Interface Externa
PIE: Interrupções PIE, habilitam e controlam os registradores do vetor PIE;
Flash: Registradores de controle da Flash, programação, limpeza e verificação;
Timers: Registradores dos Timers 0, 1, 2;
CSM: Registradores do Módulo de segurança.
4.19.2 - DIAGRMA UM
eCAN: Registradores de controle.
4.19.3 - DIAGRAMA DOIS
SYS: Registradores de Controle do Sistema;
GPIO: Registradores de controle e configuração dos pinos de GPIO;
EV: Registradores de controle do Event Manager;
McBSP: Registradores de controle do McBSP;
SCI: Registradores de controle da Comunicação Serial;
SPI: Registradores de controle da Interface Serial;
ADC: Registradores dos 12 Bits do AD.
21
4.20 - PINOS DE ENTRADA E SAÍDA (GPIO)
A maioria dos sinais dos periféricos são multiplexados para serem sinais de entrada e
saída. Assim, é possível programar cada pino como sendo ou de entrada ou de saída. [4]
4.21 - TIMERS 0, 1 E 2
Os Timers 0, 1 e 2 são temporizadores de 32 bits. O Timer 2 é reservados para a BIOS,
e está ligado ao [INT14] da CPU. Se a BIOS do DSP não está sendo usada, o Timer 2 está
disponível para uso geral. O Timer 1 é para uso geral e pode ser ligado ao INT13 da CPU. O
Timer 0 é também para uso geral e está ligado ao bloco de PIE. [4]
4.22 - PERIFÉRICOS DE CONTROLE
O 2812 utiliza os seguintes periféricos para controle embarcado e para comunicação:
EV: Inclui temporizadores de uso geral, unidades de comparações para PWMs,
circuitos nomeados como entradas de captura (PAC)
ADC: O módulo ADC é composto por 16 canais, divididos em dois módulos, módulos
A e B. Abaixo, na figura 8, tem-se a representação em diagrama desse módulo: [10]
Figura 8 - Esquemático em diagrama de blocos do módulo do AD.
22
Dentre as suas funções e características básicas, tem-se:
Núcleo composto por doze bits;
Amostragem simultânea ou modos de amostragens sequênciais;
Tempo mínimo para conversão;
Dezesseis canais de entrada;
Possibilidade de usar dois módulos de oito canais isolados ou usar os dezesseis canais
cascateados.
Possui dezesseis registradores de resultados para armazenar os valores da conversão;
Há várias formas diferentes de dar início a conversão de alguma seqüência do sistema;
A sequência dos sinais pode ser operada, durante uma conversão, de duas formas, de-
nominadas por START/STOP.
Vale ressaltar que para obter uma melhor precisão de leitura dos sinais de sistema, nos
canais do AD, não se devem colocar sinais em canais próximos. Isso se deve ao fato de que
esses sinais, quando próximos, geram ruídos entre si, dificultando a leitura desses sinais pelo
AD. [13]
4.23 - PERIFÉRICOS RESPONSÁVEIS PELA COMUNICAÇÃO SERIAL
O 2812 suporta os seguintes periféricos de comunicação serial: [11]
eCAN: Suporta 32 mailboxes, possui tempo de carimbo para mensagens.
McBSP: Esse é o periférico responsável pela comunicação entre o DSP o computador
podendo transmitir 8, 16 ou 32 bits serialmente. Possui uma Comunicação Full-duplex, ou
seja, é um tipo de comunicação onde o transmissor e o receptor podem transmitir e receber
dados, não simultaneamente, e bidirecionalmente, opções que habilitam ou bloqueiam trans-
missões em cada canal, possibilidade de transmitir oito bits de um dado, podendo escolher se
envia primeiro os mais significativos ou os menos significativos
SPI: É um dispositivo serial de alta velocidade, que permiti o fluxo de bits para dentro
e para fora do dispositivo em um taxa de transferência de bits programável. Normalmente, o
SPI é usado para comunicação entre o controlador do DSP e sistemas ou plantas externas, ou
ente outro processador. As aplicações típicas externas incluem comunicação com drivers de
vídeo, e ADCs. Comunicação entre DSP’s é feita operando em modo mestre-escravo.
23
LM: A interface de comunicação serial é uma porta serial, normalmente conhecido
como UART.
Assim, viu-se os periféricos presentes no DSP 2812, bem como suas características.
No próximo capítulo será visto as características de outro DSP, dessa vez referente a família
Delfino, cuja referencia será 28335.
4.24 - CONCLUSÃO
Viu-se nesse capítulo o microcontrolador e os vários periféricos presentes em um DSP
de referência 2812, bem como seus modos de operação, suas funções e finalidades. Devido os
seus periféricos, e mais especificamente ao EV, este DSP já foi um dos mais requisitados no
mercado.
O 2812 é uma ferramenta própria para o desenvolvimento de algoritmos e softwares
de controle, possui vários periféricos que servem de apoio ao microcontrolador, sendo assim
possível combinar funções de periféricos diferentes para criar algoritmos que execultam as
mais variadas técnicas de controle, logo, é eficiente nas tarefas de controle de sistema,
evitando o uso de um segundo processador.
24
CAPÍTULO 5
DSP TMS320F28335
5.1 - INTRODUÇÃO
Esse capítulo abordará características gerais do DSP da família Delfino, cuja
referência é 28335, características particulares de DSPs dessa família, seus periféricos, suas
utilidades e finalidades, para assim fazer um comparativos entre DSP’s dessa família com a
família Piccolo. [5]
Escolheu-se esse DSP devido ao fato dele possuir o módulo eQEP dentre os seus
periféricos, um módulo que o 2812 não possuia, sendo assim um opção de controle a mais
para a aplicação em acionamento de máquina de indução.
Alguns periféricos do 28335 nao serão citados neste capítulo devido o fato de que eles
são completamente semelhantes aos periféricos de mesmo nome do 2812.
Abaixo, na figura 9, tem-se uma foto desse DSP:
Figura 9 - Kit de desenvolvimento DSP 28335.
25
5.2 - CPU
O DSP F28335 faz parte da C2000. Possui a mesma arquitetura de 32 bits, com ponto
fixo, assim como os controladores da TI, mas ele possui algo diferente dos demais
controladores, possui uma unidade de ponto flutuante (FPU), sendo uma outra vantagem
desse DSP em relação os outros da família C2000. [5]
5.3 - BARRAMENTO DE PERIFÉRICOS
Apresenta o mesmo barramento de periféricos que o 2812, com uma leve diferença,
ele apresenta uma terceira versão para o controle desse barramento, que é acessando o DMA,
podendo esse acesso ser de 16 ou de 32 bits. [5]
5.4 - INTERFACE EXTERNA
Para esse DSP, a interface é composta por 20 linhas de endereço, 32 linhas de dados, e
três linhas do tipo chip-select. A linhas de chip-select são mapeados para três zonas
exteriores, zonas 0, 6 e 7. [5]
5.5 - FLASH
Contém o dobro de memória, em relação o DSP 2812, com 256K x 16 de memória fla-
sh embutido, dividido em oito seções de 32K x 16. Esse DSP também apresenta também 1K x
16 de memória OTP. O usuário pode apagar, programar e validar um setor da memória flash,
deixando outros setores intactos, como ocorre no 2812. [5]
5.6 - L0, L1, L2, L4, L5, L6, L7 E SARAMS
O 28335 apresenta 32K x 16 e memória para acesso único a RAM, dividido em 8 blo-
cos, respectivamente L0 até L7, com 4K de tamanho para cada bloco. Cada bloco pode ser
acesasdo de forma independente. [5]
26
5.7 - BOOT ROM
Assim como no 2812, O Boot ROM é um software de boot, carregado na ROM. Os
vários modos de boot podem ser vistos na tabela 2, abaixo: [5]
Tabela 2 - Seleção do modo Boot para o 28335
MODO GPIO87/
XA15
GPIO86/
XA14
GPIO85/
XA13
GPIO85/
XA12
MODO
F 1 1 1 1 Jump para memória Flash
E 1 1 1 0 SCI-A boot
D 1 1 0 1 SPI-A boot
C 1 1 0 0 I2C-A boot
B 1 0 1 1 eCAN-A boot
A 1 0 1 0 McBSP-A boot
9 1 0 0 1 Jump para XINTF x16
8 1 0 0 0 Jump para XINTF x32
7 0 1 1 1 Jump para OTP
6 0 1 1 0 Boot paralelo para GPIO I/O
5 0 1 0 1 Boot paralelo para XINTF
4 0 1 0 0 Jump para SARAM
3 0 0 1 1 Modo Boot para subseção de checagem
2 0 0 1 0 Subseção para memória Flash, sem a cali-
bração do AD
1 0 0 0 1 Subseção para SARAM, sem a calibração
do AD
0 0 0 0 0 Subseção para SCI, sem a calibração do
AD
Ignorando a função de calibração do AD em uma aplicação, o AD trabalhará fora de
suas especificações. [5]
27
5.8 - SEGURANÇA
Os microcontroladores apresentam altos níveis de segurança para proteger o firmware
do próprio DSP. Há um módulo de segurança, com uma senha, composto de 128 bits
(codificados em 16 estados de espera), que o usuário programa na flash. Ele é usado para
proteger os blocos de memória flash, OTP, SARAM, L0/L1/L2/L3. Esse recurso de segurança
impede que usuários sem autorização examinem o conteúdo das memória através da porta
JTAG ou que execute algum código a partir de memórias externas ou tente carregar algum
software de inicialização que exponha o conteúdo da memória. Para permitir o acesso aos
blocos de segurança, o usuário deve escrever o valor da senha de 128 bits corretamente. [5]
Além desse recurso de segurança, houve a implementação de um código de segurança
lógica (ECSL) que foi implementada para prevenir que usuários não autorizados ultrapassem
a senha de segurança, do módulo descrito acima. Qualquer acesso ao código ou aos dados na
flash, no OTP, ou nos blocos L0, L1, L2, L3, indesejável, resultará na interrupção da conexão
de emulação. Para permitir a emulação do ECLS, enquanto mantém Módulo de Segurança
funcionando, o usuário deve escrever o valor da chave de registro (register key) de 64 bits.
Esse valor é comparado a um valor armazenado dentro do memória flash. [5]
Inicialmente, quando se debuga um microcontrolador com as senhas programadas na
memória flash, escritas corretamente, ou seja, em segurança, o emulador demora algum tempo
para tomar o controle da CPU. Durante esse tempo, a CPU vai começar a rodar e pode
acontecer da CPU executar alguma instrução que permitirá o acesso a uma área ECSL
protegida. Se isso acontecer, o ECSL irá travar e causar um corte na conexão do emulador.
Duas soluções para este problema stão listadas abaixo: [5]
Usar o modo de emulação Wait-in-Reset, que realizará um reset no dispositivo até que
o emulador assuma o controle. O emulador tem suporte desse modo para esta opção.
Usar o "Subseção para verificar o modo de inicialização" presente nas opções de boot.
Isso vai gerar um loop e pesquisar continuamente como estão configurados os pinos do modo
de seleção.
5.9 - BLOCO PIE
Para o DSP 28335, é possível utilizar 58 das 96 interrupções disponíveis. Ademais a-
presenta total semelhança ao bloco PIE referente do DSP 2812. [5]
28
5.10 - INTERRUPÇÕES EXTERNAS
Esse microcontrolador suporta oito interrupções externas mascarados (XINT1-XINT7,
XNMI). Cada interrupção pode ser selecionada por borda de subida, ou por borda de descida,
ou por ambas, podendo habilitar ou desabilitar (Incluindo as XNMI). XINT1, XINT2 e XNMI
possuem um contador de 16 bits, que é resetado para zero quando uma borda de interrupção é
detectada. Este contador pode ser usado para dar mais precisão ao tempo de sinal da
interrupção. Diferente do 2812, não há pinos para interrupções externas. [5]
5.11 - DIAGRAMA DE PERIFÉRICOS
Os periféricos desse microcontrolador estão dispostos em três diagramas, mostrados
abaixo: [5]
5.11.1 - DIAGRAMA ZERO:
PIE: Interrupções PIE, habilitam e controlam os registradores do vetor PIE
Flash: Registradores de Waitstate da Flash
XINTF: Registradores da Interface externa
DMA: Registradores DMA
Timers: Registradores dos Timers 0, 1, 2
CSM: Registradores do Módulo de segurança
ADC: Registradores do AD
5.11.2 - DIAGRAMA UM:
GPIO: Registradores de controle e configuração dos pinos de GPIO
ePWM: Registradores do modulo de geração de pulsos com modulação
eCAP: Registradores do modulo de Captura
eQEP: Registradores do modulo do pulso em quadratura
eCAN: Registradores de controle
5.11.3 - DIAGRAMA DOIS:
SYS: Registradores de Controle do Sistema
29
SCI: Registradores de controle da Comunicação Serial
SPI: Registradores de controle da Interface Serial
ADC: Registradores de controle, de Status, e de resultados do AD
I2C: Registradores do Módulo dos circuitos integrados
XINT: Registradores de interrupção externa
5.11.4 - DIAGRAMA TRÊS:
McBSP: Registradores de controle do McBSP
5.12 - PERIFÉRICOS DE CONTROLE
O 28335 utiliza os seguintes periféricos, que são usados para controle embarcado e
para comunicação: [5]
ePWM: Apresenta um gerador de pulsos com modulação. Alguns pinos de PWM
apresentam suporte a configurações HRPWM.
eCAP: Um canal de captura de eventos externos, que podem ser valor da velocidade
de rotação da máquina, medidas de período e duty-cicles de trens de pulso, dentre outros e-
ventos. Este periférico pode ser configurado para gerar um sinal de PWM auxiliar.
eQEP: É um periférico que utilize um contador de posição de 32 bits, com suporte a
medidas em baixa velocidade utilizando unidades de captura e apresenta suporte a medidas
em alta velocidade utilizando um timer de 32 bits. Este periférico tem um timer para detectar
erros lógicos nas entradas para identificar transições simultâneas de bordas em sinais do tipo
QEP.
ADC: O bloco AD de 12 bits possui 16 canais e contem duas unidades sample-and-
hold para conversões simultâneas.
5.13 - PERIFÉRICOS RESPONSÁVEIS PELA COMUNICAÇÃO SERIAL
Abaixo será dado uma breve explanação sobre os periféricos utilizados para comunica-
ção serial, bem como suas características: [5]
eCAN: Suporta 32 mailboxes, possui tempo de carimbo para mensagens.
30
McBSP: Apresenta aplicações em modens e dispositivos de alta qualidade de áudio.
Os registradores de transmissão e de recepção são suportados pelo DMA para reduzir signifi-
cantemente o overhead, caracterizado por processamento ou armazenamento em excesso, para
este periférico. Cada módulo McBSP pode ser configurado em um SPI.
SPI: Permite o fluxo de bits serialmente, sendo utilizado para comunicação entre o mi-
crocontrolador e periféricos externos ou outros processadores. Aplicações típicas incluem pi-
nos de entrada e saída ou expansões do próprio periférico através do microcontrolador como
um registrador de deslocamento, drivers de displays, e AD’s. Comunicação entre vários dis-
positivos, do tipo mestre-escravo, são oferecidos pelo SPI. No DSP 28335, o SPI contém 16
espaços de transmissão e recepção do tipo FIFO, para reduzir serviços de interrupções do tipo
overhead.
SCI: A interface de comunicação serial é uma porta assíncrona, geralmente conhecida
como UART. O SCI contém 16 espaços de transmissão e recepção do tipo FIFO, para reduzir
serviços de interrupções do tipo overhead.
I2C: O módulo de circuitos integrados possui uma interface entre o microcontrolador e
outros dispositivos. Componentes externos anexados a esse barramento serial podem transmi-
tir e receber até dados de oito bits de/para o microcontrolador, através do modulo I2C. No
DSP 28335, o módulo I2C contém 16 espaços de transmissão e recepção do tipo FIFO, para
reduzir serviços de interrupções do tipo overhead. [13]
5.14 - CONCLUSÃO
Este capítulo abordou as características gerais do 28335, que são os seus periféricos e
o seu microcontrolador, onde em alguns trechos houve certa comparação entre os seus perifé-
ricos e com os periféricos do DSP do capítulo anterior, o 2812.
Alguns periféricos do 28335 não foram devidamente comentados devido ao fato que
sua descrição é idêntica a descrita no 2812, são eles o barramento de memória, a função
JTAG em tempo real, as memória M0, M1 e SARAM, oscilador, PLL, Watchdog, Clock dos
periféricos e modos de operação, pinos de entrada e saída e os timers.
Devido o fato de ter uma maior quantidade de periféricos, foram criados novos
arquivos de cabeçalho e bibliotecas, para as novas aplicações e formas de controle que
poderão ser implementadas por esse DSP. Algumas dessas novas bilbiotecas podem ser
achadas nos diretórios do software ControlSuite.
31
CAPÍTULO 6
COMPARATIVO
6.1 - INTRODUÇÃO
Descreveu-se como são internamente, os periféricos de cada DSP em destaque. Mas
tem-se a intenção de mostrar como eles funcionam na prática, utilizando algum algoritmo
para testá-los e ver o rendimento e a partir disso fazer um comparativo. Assim, pegou-se um
código e testou este em cada um dos DSP’s em estudo. Porém, há diferenças entre os DSP’s
que não permitem que o código de um deles seja compilado no outro. São mudanças de
registradores, nomenclaturas e novos endereços dos mesmos. Assim, para esse comparativo,
houve uma adaptação de um código do 2812 para o 28335 de forma que ambos os códigos
realizassem a mesma função, em DSP’s diferentes.
6.2 - CÓDIGO
Foi-se desenvolvido um código que gerava seis SVPWM's que variava de duty-cicle
conforme os sinais que o AD recebia, sinais de posição e corrente, de uma planta em estudo.
Essa planta utiliza o DSP 2812 e tenta-se adaptá-la para o DSP 28335. Pra tal variação, há
certas modificações que devem ser feitas, como alteração nos nomes de registradores, busca
por funções do 28335 que se assemelhem mais a funções do 2812, que não existem mais no
28335, e a forma que o SVPWM deve ser gerado, pois enquanto o DSP 2812 apresentava o
EV para tal objetivo, o 28335 não apresenta mais o EV como periférico, dificultando seu
estudo para a geração dos SVPWM. Dentre as modificações feitas no código, tem-se as
seguintes:
6.2.1 - BIT RXFIFST
Enquanto no 2812, tem-se um registrador de nome SCIFFRX cujo bits 12~8 possuem
nome RXFIFST4-0, cuja linha de código pode ser mostrada abaixo:
32
//-------------------------------------------------------------------------------------------------------------//
// SciaRegs.SCIFIFRX.bit.RXFIFST!=1; // Habilita o bloco PIE //
//-------------------------------------------------------------------------------------------------------------//
No 28335, ele segue uma diferença mínima, onde retira-se a letra I, ficando assim:
//------------------------------------------------------------------------------------------------------------//
// SciaRegs.SCIFIFRX.bit.RXFFST!=1; // Habilita o bloco PIE //
//------------------------------------------------------------------------------------------------------------//
6.2.2 - HABILITANDO O BLOCO PIE
A forma em que seriam habilitadas as interrupções do bloco PIE mudou. No 2812
utilizou-se a seguinte linha:
//------------------------------------------------------------------------------------------------------------//
// PieCtrlRegs.PIECRTL.bit.ENPIE = 1; // Habilita o bloco PIE //
//------------------------------------------------------------------------------------------------------------//
No 28335, existe um cabeçalho nomeado DSP2833x_PieCtrl.c, que possui uma
função embarcada, EnableInterrupts, que quando é chamada, executa essa linha escrita acima.
6.2.3 - CONTADOR DO TIMER
Os timers presentes no registrador EV do 2812 sofreram alterações na nomenclatura e
no endereço alocado. No 28335 ele fica na CPU do DSP. Assim, tem-se a seguinte linha no
2812:
//------------------------------------------------------------------------------------------------------------//
// EvaRegs.TxCNT=0x0000 //contador referente ao timer. //
//------------------------------------------------------------------------------------------------------------//
Onde x=0, 1 ou 2. Essa linha é substituído pela linha no 28335, que segue abaixo:
33
//-----------------------------------------------------------------------------------------------------------//
// CpuTimerxRegs.TIM.ALL=0x0000 //contador referente ao timer. //
//-----------------------------------------------------------------------------------------------------------//
6.2.4 - HABILITANDO O SOC
Tem-se que o a forma de habilitar a sequência de conversão dos sinais que vão pro AD
também mudou de nomenclatura. Enquanto que para o 2812 ele seguia a seguinte forma:
//-----------------------------------------------------------------------------------------------------------//
// AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1 = 1; // Habilita EVASOC pra começar SEQ1 //
//-----------------------------------------------------------------------------------------------------------//
Tem-se que no 28335, a forma de habilitar fica da seguinte forma: [19]
//-----------------------------------------------------------------------------------------------------------//
// AdcRegs.ADCTRL2.bit.EPWM_SOCA_SEQ1 = 1; //
//-----------------------------------------------------------------------------------------------------------//
Em alguns casos, opta-se por não utilizar os dois recursos de conversão que o AD
fornece. Enquanto no 2812 havia dois registradores de eventos, EVA e EVB, no 28335 tem-se
dois registradores de conversão, SOCA e SOCB. Há formas de utilizar os dois em conjunto,
mas, em geral, utiliza-se apenas um dos registradores, até como uma forma de segurança, para
garantir que um não prejudique o desempenho do outro. Assim, tem-se que a forma de
desabilitar um desses registradores no 2812 seguia a forma abaixo:
//----------------------------------------------------------------------------------------------------------//
//AdcRegs.ADCTRL2.bit.EVB_SOC_SEQ=0; //
//---------------------------------------------------------------------------------------------------------//
34
Enquanto que no 28335 ele segue a seguinte forma: [19]
//-----------------------------------------------------------------------------------------------------------//
// AdcRegs.ADCTRL2.bit.EPWM_SOCB_SEQ = 0 //
//-----------------------------------------------------------------------------------------------------------//
6.2.5 - SELECIONANDO O PERÍODO DO TIMER
Outra mudança em relação ao timer foi a forma de selecionar o seu período. Enquanto
no 2812 ele seguia a linha abaixo:
//-----------------------------------------------------------------------------------------------------------//
// EvaRegs.TxPR = 1000 //
//----------------------------------------------------------------------------------------------------------//
Onde x=0, 1 ou 2. No 28335 ele segue a seguinte linha:
//-----------------------------------------------------------------------------------------------------------//
// CpuTimerxRegs.TPR.all = 1000; //
//-----------------------------------------------------------------------------------------------------------//
6.3 - GERANDO SVPWM (2812 E 28335)
Uma grande mudança realizada para os microcontroladores da família Delfino, foi a
remoção do registrador EV. Nesse registrador encontrava-se a maioria das funções mais
usadas em algoritmos de controle de acionamento de máquinas. Uma dessas funções era o
gerador de SVPWM.
Utilizando o 2812, a geração de SVPWM pode ser considerada simples, pois basta
uma simples configuração de registradores para obter-se esse tipo de saída. Abaixo, listou-se
os passos para tal aplicação: [7]
Configura-se o registrador ACTRx para definir qual a direção de rotação do SVPWM e
a polaridade de comparação dos pinos de saída;
Configura-se o registrador COMCONx para habilitar operações de comparação e
habilitar o modo de saída SVPWM;
35
Coloca-se o Timer 1 em modo de contagem contínua para iniciar a operação.
Necessita-se determinar a tensão que será aplicada na fase dos motores no plano
dq0, para assim executar as seguintes ações para cada período de PWM:
Determinam-se os dois vetores adjacente, ;
Determinam-se os parâmetros ;
Configura-se o registrador ACTRx[14-12] com o correspondente chaveamento de e
coloca-se o valor binário 1 no registrador ACTRx[16], ou registrador ACTRx[14-12] com o
correspondente chaveamento de e coloca-se o valor binário 0 no registrador
ACTRx[16];
Colocam-se os valores de no registrador CMPR1 e no registrador CMPR2.
Para os registradores acima, o valor de x pode ser A ou B.
Utilizando o 28335, tem-se que não há um módulo de SVPWM, necessitando da
criação de uma biblioteca, ou módulo, para gerar o mesmo. Assim, com base em pesquisas
feitas no fórum da TI, nos arquivos do software ControlSuite, descobriu-se que é possível
criar uma biblioteca, ou módulo, que gere SVPWM. Depois de instalado o software
ControlSuite, seguindo o diretório, é possível encontrar exemplos de como fazer o
acionamento de motores, sejam eles de indução (pastas HVACI), sejam eles do tipo ímã
permanente (pastas HVPM), sejam eles do tipo CC sem escovas (pastas BLDC).
Para tal aplicação é necessário alguns cabeçalhos especiais. Considerando uma
aplicação de acionamento de uma máquina de indução com controle de campo orientado, os
cabeçalhos encontram-se nas várias pastas do software ControlSuite, que são as pastas de
drivers e as pastas de libs. Assim, utiliza-se o arquivo HVACI_Sensorless.c, como pode-se
observar na figura 10, mostrada abaixo:
36
Figura 10 - Diretório para o arquivo HVACI_Sensorless.
Esse é o arquivo principal do nosso projeto para gerar um módulo de SVPWM.
Utilizou-se o software CCS v3.3, que é um compilador desenvolvido para os DSPs da
família C2000. Ele serve para desenvolver os algoritmos que realizarão o controle de motores.
Ele compila o algoritmo desenvolvido, grava no DSP e inicializa esse algoritmo direto do
DSP.
Então, iniciou-se um projeto e na pasta desse projeto, adicionou-se os vários
arquivos.h e arquivos.c encontrados nas pastas do software ControlSuite, para ter acesso a
todas as funções e bibliotecas já desenvolvidas pela TI.
Com o projeto totalmente pronto, compilou-se o mesmo e obtiveram-se os seguintes
problemas, como mostrado na figura 11, mostrada a seguir:
37
Figura 11 - Erros da compilação do projeto.
O erro da figura acima indica que há símbolos indefinidos, que para a visão do
compilador, indica que o Linker, estrutura que liga o arquivo.obj, que é o arquivo que vai para
o DSP, com o projeto do algoritmo, não está habilitado a reconhecer essas variáveis.
Uma das soluções para esse erro seria adicionar o respectivo arquivo.h que contém
essas variáveis que estão indefinidas. Porém já fora adicionado todos os possíveis arquivos.h
que existem para o compilador CCSv3.3 e o erro ainda persiste. [7]
Outra solução seria alterar o Linker com um que habilite esses símbolos. Porém, para
tal alteração, ou adicionasse os arquivos.lib ao projeto através do caminho, Project>add files
to Project>commons>lib e adicionasse as bibliotecas necessárias para o linking, ou então
utiliza-se o caminho Project>Build Options>Linker>Libraries e coloca-se o nome da
biblioteca que queira que seja o Linker. Mais uma vez, alterou-se o nome das bibliotecas
existentes nas pastas do software ControlSuite, persistindo o erro.
Assim, como última saída indicada pelos desenvolvedores da TI, seria que modificasse
o compilador para o CCS v4, onde é um software pago que custe algo em torno de 500
dólares, sendo uma alternativa totalmente inviável. [18]
Quando os erros do processo mostrado acima foram relatados para os desenvolvedores
da TI, eles não souberam responder os motivos desses erros estarem acontecendo, como se
não soubessem fazer essa implementação. Mas ainda há contato com eles, pelo menos por
duas vezes por semana, para saber de alguma provável novidade. Uma das coisas que mais
surpreendeu foi o fato de não haver um tópico sobre SVPWM no 28335 no fórum da TI. Foi-
se então aberto um tópico, para então iniciar uma discussão sobre esse tema.
38
6.4 - EVENT MANAGER (2812)
O periférico Event Manager oferece uma variedade de funções e características que
são úteis em aplicações de controle de movimento e acionamento de motores. Esse registrador
apresenta timers, comparadores para PWM, módulos de captura, módulo de SOC do AD,
registradores de controle, interrupções e flags. Ele é dividido em dois outros módulos, EVA e
EVB, que são periféricos idênticos. [7]
É um registrador que possui as funções mais utilizadas em várias aplicações, sendo
considerado um dos registradores mais utilizado no DSP 2812.
Uma grande perda sofrida pelo 28335 foi a retirada desse registrador. Praticamente
houve uma realocação dos módulos desse registrador. Alguns mudaram de nome, como o
módulo de comparação, outros mudaram somente de endereço, como os timers, enquanto ou-
tros praticamente deixaram de existir, como o módulo SVPWM.
6.5 - EQEP
O periférico de pulsos em eixo quadratura é usado em conjunto com um transdutor
linear ou um encoder incremental para estimar a posição, direção e velocidade de uma
máquina rotativa para uso em um sistema de controle de posição. [6]
Esse periférico possui dois pinos de entrada, que correspondem respectivamente aos
modos de clock de quadratura e ao modo de contagem de direção, denominados de
QEPA/XCLK e QEPB/XDIR: [6]
Modo de clock de quadratura: Os codificadores eQEP fornecem dois sinais de onda
quadrada (A e B) defasados 90 graus elétricos, utilizados para determinar o sentido de rotação
do eixo do motor e número de pulsosem eixo quadratura da posição do motor para obter as
informações da sua posição relativa. O decodificador de quadratura usa essas duas entradas
para gerar clock de quadratura e sinais de direção. [6]
Modo de contagem de direção: nesse modo, a direção e os sinais de clock são
fornecidos diretamente pela fonte externa. Alguns encoders de posição tem esse tipo de saída
ao invés da saída de quadratura. O pino QEPA provê a entrada dos sinais de clock e o pino
QEPB provê a entrada de direção. [6]
Esse periférico é uma das vantagens do 28335 sobre o 2812, pois o 2812 não possui
suporte a esse periférico, de forma que para verificar a posição do motor no 2812 é necessário
algum sensor acoplado no eixo do motor, para identificar a posição do eixo do motor.
39
Com o 28335, utilizando o eQEP com um encoder acoplado no eixo do motor, tem-se
a possibilidade de ter uma maior precisão no cálculo da posição do motor, sendo uma alterna-
tiva para aplicação em manter o eixo fixado em uma determinada posição.
6.6 - PERIFÉRICOS
Além da análise nas mudanças dos registradores e no código de cada DSP, é
necessário fazer uma análise interna sobre esses dois DSP’s, comparando teoricamente a
diferença de desempenho dos seus periféricos. Assim, irão ser citadas as diferenças dentre
esses DSP’s, listadas abaixo:
Tem-se que ambos os DSP em estudo apresentam suporte a variáveis de ponto fixo,
mas o 28335 apresenta uma unidade de ponto flutuante, deixando algoritmos que utilizam
variáveis do tipo float mais rápidos;
No barramento de periféricos, tem-se que o 28335 apresenta um terceiro modo de
controle para esse barramento, sendo esse acesso via DMA;
Na interface externa, tem-se que o 28335 apresenta mais linhas de endereço e dados
que o 2812;
O 28335 tem o dobro de memória flash, o dobro de memória RAM que o 2812 e não
possui memória ROM;
O 28335 tem dezesseis modos de BOOT enquanto que o 2812 possui apenas sete;
O 28335 apresenta um modo de segurança a mais, que é o ECLS, que possui uma
senha de 64 bits;
O 28335 tem oito interrupções externas mascaradas, enquanto que o 2812 apresenta
apenas três;
Os diagramas de periféricos foram totalmente remodelados:
o Os registradores dos principais periféricos foram separados dos registrados de
controle e módulo dos mes periféricos;
o O AD e o DMA foram integrados ao diagrama zero;
o O diagrama um agora possui GPIO, ePWM, eCAP, eQEP juntos ao eCAN;
o O diagrama dois não possui mais o EV e McBSP, mas entraram o I2C e o
XINT;
o Agora se tem um diagrama três com o McBSP.
40
O 28335 possui o periférico eQEP a mais;
O 28335 não possui mais o periférico LM, responsável pela comunicação serial, mas
foi-se implementado o SCI e o I2C
Assim, considerando a análise de algoritmos, análise de suas características, análise de
registradores e análise dos periféricos, pode-se destacar as seguintes características, na tabela
3 abaixo:
Tabela 3 - Análise geral entre os DSP's
28335 2812
Ponto Flutuante Ponto Fixo
Memória Flash=256k x 16 Memória Flash=128k x 16
Memória RAM=32k x 16 Memória RAM=16k x 16
Não possui Memória ROM Possui Memória ROM
Possui o Registrador eQEP Não possui o registrador eQEP
Não possui Módulo SVPWM Possui Módulo SVPWM
6.7 - CONVERSOR ANALÓGICO-DIGITAL
Esse periférico foi testado, por ambas as referências para verificar o desempenho e se
há alguma alteração nos esquemáticos desse periférico de ambas as referências.
Os testes foram feitos na planta mostrada na figura 12, abaixo, encontrada no laborató-
rio GPAR, Grupo de Pesquisa em Automação e Robótica, do DEE, Departamento de Enge-
nharia Elétrica, da UFC:
41
Figura 12 - Planta utilizada para os testes dos DSP's
O teste consiste em fazer a leitura da posição do motor utilizando o AD dos DSP’s.
O funcionamento de leitura da posição do motor ocorre utilizando a seguinte lógica.
Há um potenciômetro acoplado no eixo do motor, onde em um giro do potenciômetro ocorre a
total variação de resistência do mesmo. Ou seja, em uma volta de 360º do eixo do motor, o
potenciômetro varia em toda a sua resistência. Assim, a partir uma leitura do valor da resis-
tência do potenciômetro, é possível saber qual a posição do eixo do motor.
Sabendo que a tensão máximo que o pino do AD suporta é de 3.3 V, alimenta-se os
terminais do potenciômetro com 3.3V, ocasionando assim uma leitura de 0 V para quando a
posição do eixo do motor for de 0º e 3.3 V para quando a posição do eixo do motor for de
360º. Assim, essa leitura de tensão vai ser lida pelo AD e será mostrada na IDE do AD o valor
em radianos da posição do eixo do motor, onde esse valor varia de 0 até .
Fazendo uma leitura qualquer da posição do motor com o osciloscópio, obtem-se a lei-
tura mostrada pela figura 13, mostrada abaixo:
42
Figura 13 - Leitura da posição do motor com o osciloscópio
Nota-se que, considerando uma leitura de 1 V por divisão, a leitura esta dentro da fai-
xa dos 3.3 V e não consegue-se fazer leitura de medidas devido o tempo de amostragem ser
muito alto.
Quando liga-se o 2812 na planta, a mesma leitura fica da seguinte forma, representada
pela figura 14, abaixo:
Figura 14 - Leitura da posição do motor com o osciloscópio com o 2812 ligado na planta
43
Isso deve-se ao fato de que o AD dos DSP’s possuem um filtro para diminuir o ruído
de leituras. Para descobrir como calcular esse filtro, deve-se pegar o esquemático interno do
AD para saber qual componente deve-se colocar na sua entrada para reduzir ruídos.
Essa planta já possuía esse filtro para o 2812.
Assim, obteve-se os seguintes resultados, mostrados nas figuras 15 e 16, abaixo:
Figura 15(a) - Leitura da posição do motor (b) Leitura da posição do motor em radianos, utilizando o CCS V3.3
Figura 16(a) – Outro exemplo de uma leitura da posição do motor (b) Leitura da posição do motor em radianos,
utilizando o CCS V3.3
Nota-se a precisão da leitura da posição pelo AD. Uma precisão de 6 casas decimais.
Utilizando-se o 28335, foi necessário fazer correções no código do 2812, pois apresen-
tava diferenças em alguns registradores. Assim, ligando o 28335 na planta, obteve-se os se-
guinte resultados, representados pela figuras 17 e 18, mostradas abaixo:
44
Figura 17(a) Leitura da posição do motor (b) Leitura da posição do motor em radianos, utilizando o CCS V3.3
Figura 18(a) Outro exemplo de uma leitura da posição do motor (b) Leitura da posição do motor em radianos,
utilizando o CCS V3.3
Nota-se que como a planta não possuía o filtro de entrada para o AD, a leitura pelo os-
ciloscópio apresentou bastante ruído, ocasionando uma leitura sem precisão do AD.
Verificando o circuito interno de cada AD em [4] e [5] observa-se que ambos os cir-
cuitos são iguais, teoricamente ambos os circuitos de filtros presentes na planta deveriam fun-
cionar para os dois DSP’s.
6.8 - CONCLUSÃO
Houve uma mudança nos registradores na comparação deles no 2812 em relação ao
28335. Em alguns casos mudou-se apenas o nome, bastando renomear o nome dos
registradores para que o compilador deixasse de acusar erro. Em outros casos foi-se
necessário a busca de um registrador que executasse a função semelhante no 28335 de um
registrador do 2812.
A mudança mais significativa, em relação a algoritmos foi a retirado do módulo
45
SVPWM. Mesmo com insistência na tentativa de implementar um algoritmo desenvolvido
pela TI para essa aplicação, não conseguiu-se implementá-lo.
Tem-se que o 28335 pode ser dito superior ao 2812, pois possui um desempenho
melhor para códigos que possuem varáveis iniciadas na forma de ponto flutuante, possui mais
capacidade de armazenamento, tem mais linha de endereços e dados na interface externa,
apresenta mais do que o dobro de modos de Boot que o 2812, é mais seguro, apesar de ter
perdido o registrador EV do 2812, junto ao módulo que gerava SVPWM, ganhou os
periféricos eQEP e o eCAP.
O circuito de filtro do AD dos dois DSP’s é diferente, pois apresentaram leituras
diferentes da posição do motor, onde quando para o DSP 2812 a planta em estudo já possuía o
circuito de filtro obtendo-se uma leitura precisa da posição do eixo do motor, enquanto que o
28335 fez uma leitura com ruídos da posição do motor, obtendo uma leitura que não era
precisa.
Para resolver o problema do ruído no AD do 28335 será preciso melhorar o código
para tentar reduzir o ruído lido pelo AD.
46
CONCLUSÕES
DSP é uma ferramenta que pode ser utilizada para as mais variadas aplicações em dis-
tintas áreas de pesquisa devido a sua principal função, que é o tratamento de sinais digitais.
A família C2000 é a família de DSP’s mais buscada, no mercado, quando o assunto é
controle digital de motores, devido a extensa quantidade de aplication notes, guias e tutoriais,
ferramentas de software, exemplos desenvolvidos, PDF’s escritos e diversidade de aplicações.
Ambos os DSP’s em estudo possuem vantagens e desvantagens entre si. O 2812 pos-
sui certa facilidade na implementação dos seus algoritmos, pois possui um bloco de registra-
dores alocados no mesmo registrador, que é o EV, diferente do 28335, onde a escrita de seus
algoritmos apresenta uma certa dificuldade devido seus principais registradores e módulos
estarem todos separados. Mas essa divisão acabou deixando esses módulos mais organizados.
O 2812 apresenta suporte ao módulo SVPWM, sendo uma vantagem perante o 28335. O
28335 não apresenta esse módulo devido o fato da demanda de usuários que utilizam esse
módulo ter decrescido nos últimos anos, forçando os desenvolvedores da TI a tirá-lo da linha
de desenvolvimento de novos DSP’s, para implementar com mais novos periféricos. Mas o
28335 apresenta novos módulos, como o eQEP e o eCAP, além de módulos para comunica-
ção serial, como o SCI e o I2C, sendo uma vantagem em relação ao 2812.
Em relação ao desempenho em algoritmos de ambos os DSPs, o 28335 é superior, pois
possui mais velocidade em algoritmos com variáveis definidas a ponto flutuante, possui nas
memórias RAM e flash, o dobro de armazenamento possível, apresenta uma lista de arqui-
vos.h e arquivos.c (cabeçalhos) maior, apresentando mais bibliotecas e arquivos de suporte.
Sendo assim, possui muito mais aplicações que o 2812, portanto, o 28335 é melhor para o
controle de acionamento de máquinas que o 2812.
47
REFERÊNCIAS BIBLIOGRÁFICAS
[1] ADC_281x.pdf, Texas Instruments. Disponível em
http://focus.ti.com/lit/ug/spru060d/spru060d.pdf
[2] C2000 Real-Time Microcontroller.pdf, Texas Instruments, 2010
[3] C2833x/C2823x C/C++ Header Files and Peripherals Examples Quick Start.pdf, Tex-
as Instruments, 2009. Disponível em
http://read.pudn.com/downloads104/sourcecode/embed/428058/v101/doc/DSP2833x_
HeaderFiles_Quickstart_Readme.pdf
[4] Data_Manual_281x.pdf, Texas Instruments. Disponível em
http://focus.ti.com/lit/ds/symlink/tms320f2812.pdf
[5] Data_Manual_2833x.pdf, Texas Instruments. Disponível em
http://focus.ti.com/lit/ds/sprs439i/sprs439i.pdf
[6] Enhanced Quadrature Encoder Pulse (eQEP) Module.pdf, Texas Instruments. Dispo-
nível em http://focus.ti.com/lit/ug/sprug05a/sprug05a.pdf.
[7] Event Manager Reference Guide.pdf, Texas Instruments. Disponível em
http://focus.ti.com/lit/ug/spru065e/spru065e.pdf
[8] http://msdn.microsoft.com/pt-br/library/aa833876%28v=vs.90%29.aspx. Acesso em
19 mai. 2011.
[9] http://processors.wiki.ti.com/index.php/C28x_Compiler_Error_and_Warning_Messag
es - Acesso em 19 mai. 2011.
[10] http://processors.wiki.ti.com/index.php/Category:C2000 - Acesso em 19 mai. 2011.
[11] http://processors.wiki.ti.com/index.php/ControlSUITE_for_C2000 - Acesso em 19
mai. 2011.
[12] http://processors.wiki.ti.com/index.php/TMS320C2000_Motor_Control_Primer - A-
cesso em 19 mai. 2011.
[13] http://www.cbpf.br/~rastuto/, Acesso em 19 mai. 2011.
[14] http://www.hardware.com.br/termos/pipeline - Acesso em 19 mai. 2011.
[15] http://www.sgcworld.com/dspintrotechnote.html - Acesso em 19 mai. 2011.
[16] https://estore.ti.com/Software-Development-Tools-C33.aspx - Acesso em 19 mai.
2011.
[17] Liptak, Béla G. (2006). Instrument Engineers' Handbook: Process control and optimi-
zation. 2. CRC Press.pp. 11–12.
48
[18] NUNES, R. A. A., ALBUQUERQUE M. P., ALBUQUERQUE M. P., Introdução a
processadores e sinais digitais, 2006, 17f. Também pode ser visitado pelo link
http://www.cbpf.br/~rastuto/pdf/NT-CBPF001-2006.pdf
[19] SMITH, S. W., The Scientistand Engineer’s Guide to DIGITAL SIGNAL
PROCESSING, 1997-1999, 664f. – California Technical Publishing.