sexta-feira, 18 de outubro de 2013

Iniciando com o EFM32 AN0009 com modificações PARTE 1

Resolvi traduzir e adaptar as Applications notes da Energy Micro, começando das mais básicas e futuramente indo para as mais completas.
A an que eu escolhi é a AN009 Iniciando com o EFM32, pode ser encontrada no Simplicity Studio clicando com o botão em application notes, não pretendo traduzir ela ao pé da letra mas sim as partes mais importantes e modificar outras para melhor entendimento, também vou dividí-la em partes para não demorar muito para postar e não ficar 4 horas digitando.
Lembrando  que a Biblioteca CMSIS é padrão dos Processadores ARM.

1 Operações com Registros

Este  capítulo se resumirá a programação básica em C para os devices EFM32, usando os defines e as bibliotecas fornecidas pelas CMSIS e emlib que são as bibliotecas de software.


1.1 Endereços

Os dispotivos EFM32 contém muitos diferentes tipos de periféricos (CMU, RTC, ADCn...). Alguns periféricos no EFM32 exixte apenas como uma única instância, como a Unidade de Gerenciamento de Clock (CMU Clock Management Unit). Outros periféricos como Timers (Timern) exixtem em grande números de instâncias e o nome vem seguido de um número (n) denotando o número da instância com que estamos trabalhando. Normalmente, duas instâncias de um periférico são idênticas, mas são alocadas em regiões diferentes do mapa de memória.  Entretanto, alguns periféricos tem  uma função diferente para cada uma das suas instâncias. Ex. USART0 pode ter uma interface IrDA, enquanto USART1 não pode. Estas diferenças são explicadas no datasheet e no manual de refeência do device (dispositivo mas prefiro usar device). As instâncias dos periféricos tem uma região do endereçamento da memória dedicado apenas para elas que contém registros que podem ser acessados por operações de read/write (leitura/escrita). As instâncias de periféricos e regiões da memória são encontradas nos datasheets dos devices. O endereço inicial de uma instância periférica é chamada de base address (endereço de base).
O manual da série do device contém uma descrição completa dos registros dentro de cada periférico. O endereço para cada registro é dado como um offset (desdobramento, deslocamento) do endereço de base para a instância periférica.
Exemplo do endereço do registro calculado pela base mais offsset:
AddressRegistro = BaseInstância_Periférica + OffsetPeriférico

1.2 Decrição dos Registros

Os devices EFM32 usam um barramento de 32bits para o acesso de read/write dos seus periféricos, e cada registro em um periferico contem 32 bits, numerados de 0 a 31. Bits não usados são marcados como reservados e não podem ser modificados. Os bits usados pelos periféricos podem ser bits únicos (ex. bit DIFF) ou agrupados em um tipo de grupo de bits chamado bitfield (ex. bitfield REFRSEK). Cada bitfield é descrito com os seguintes atributos:
- Posisão do Bit (Bit Position)
- Nome
- Valor de Reset
-Tipo de Acesso (Access type)

- Descrição


Figura Exemplo de Descrição de Registro

1.3 Tipos de Acessos

Cada registro tem um tipo de acesso definido para todos os campos de bits dentro deste registro. Os tipos de acesso descrevem a reação ao ler/escrever operações para o Bitfield. Os diferentes tipos de acesso encontrados para os registros no EFM32 são encontrados na tabela abaixo.


Continua ...

Nenhum comentário:

Postar um comentário