Índice:

Exemplo de programação MTP Arduino: 5 etapas
Exemplo de programação MTP Arduino: 5 etapas

Vídeo: Exemplo de programação MTP Arduino: 5 etapas

Vídeo: Exemplo de programação MTP Arduino: 5 etapas
Vídeo: Curso de Arduino - Como Programar ARDUINO UNO PARTINDO DO ZERO? Eletrônica Fácil - Aula 1 2024, Julho
Anonim
Exemplo de programação MTP Arduino
Exemplo de programação MTP Arduino

Neste Instructable, mostramos como usar o esboço de programação SLG46824 / 6 Arduino para programar um dispositivo Dialog SLG46824 / 6 GreenPAK ™ Multiple-Time Programmable (MTP).

A maioria dos dispositivos GreenPAK são One-Time Programmable (OTP), o que significa que uma vez que seu banco de memória não volátil (NVM) é gravado, ele não pode ser sobrescrito. GreenPAKs com o recurso MTP, como o SLG46824 e o SLG46826, têm um tipo diferente de banco de memória NVM que pode ser programado mais de uma vez.

Nós escrevemos um esboço do Arduino que permite ao usuário programar um MTP GreenPAK com alguns comandos simples do monitor serial. Neste Instructable, usamos um SLG46826 como nosso GreenPAK com MTP.

Fornecemos código de amostra para o Arduino Uno usando uma plataforma de código aberto baseada em C / C ++. Os designers devem extrapolar as técnicas usadas no código do Arduino para sua plataforma específica.

Para obter informações específicas sobre especificações de sinal I2C, endereçamento I2C e espaços de memória, consulte o GreenPAK In-System Programming Guide fornecido na página do produto SLG46826. Este Instructable fornece uma implementação simples deste guia de programação.

Abaixo descrevemos as etapas necessárias para entender como o chip GreenPAK foi programado. No entanto, se você deseja apenas obter o resultado da programação, baixe o software GreenPAK para visualizar o arquivo de design GreenPAK já concluído. Conecte o GreenPAK Development Kit ao seu computador e acesse o programa para criar o IC personalizado.

Etapa 1: conexões Arduino-GreenPAK

Conexões Arduino-GreenPAK
Conexões Arduino-GreenPAK
Conexões Arduino-GreenPAK
Conexões Arduino-GreenPAK

Para programar o NVM de nosso SLG46826 GreenPAK com nosso esboço do Arduino, primeiro precisaremos conectar quatro pinos do Arduino Uno ao nosso GreenPAK. Você pode conectar esses pinos diretamente ao Adaptador de Soquete GreenPAK ou a uma placa breakout com o GreenPAK soldado.

Observe que os resistores pull up I2C externos não são mostrados na Figura 1. Conecte um resistor pull up de 4,7 kΩ de SCL e SDA à saída de 3,3 V do Arduino.

Etapa 2: Exportar dados GreenPAK NVM de um arquivo de projeto GreenPAK

Exportando dados GreenPAK NVM de um arquivo de projeto GreenPAK
Exportando dados GreenPAK NVM de um arquivo de projeto GreenPAK
Exportando dados GreenPAK NVM de um arquivo de projeto GreenPAK
Exportando dados GreenPAK NVM de um arquivo de projeto GreenPAK
Exportando dados GreenPAK NVM de um arquivo de projeto GreenPAK
Exportando dados GreenPAK NVM de um arquivo de projeto GreenPAK

Vamos montar um design GreenPAK muito simples para ilustrar como exportar os dados NVM. O design abaixo é um deslocador de nível simples onde os pinos azuis à esquerda são amarrados ao VDD (3,3v), enquanto os pinos amarelos à direita são amarrados ao VDD2 (1,8v).

Para exportar as informações deste projeto, você precisa selecionar Arquivo → Exportar → Exportar NVM, conforme mostrado na Figura 3.

Em seguida, você precisará selecionar Intel HEX Files (*.hex) como o tipo de arquivo e salvá-lo.

Agora, você precisará abrir o arquivo.hex com um editor de texto (como o Notepad ++). Para saber mais sobre o formato e a sintaxe do arquivo HEX da Intel, verifique a página da Wikipedia. Para esta aplicação, estamos interessados apenas na parte de dados do arquivo, conforme mostrado na Figura 5.

Destaque e copie os 256 bytes de dados de configuração NVM localizados no arquivo HEX. Cada linha que estamos copiando tem 32 caracteres, o que corresponde a 16 bytes.

Cole as informações na seção nvmString destacada do esboço do Arduino, conforme mostrado na Figura 6. Se você estiver usando um microcontrolador não Arduino, poderá escrever uma função para analisar o nvmData salvo no arquivo GreenPAK. GP6. (Se você abrir um arquivo GreenPAK com um editor de texto, verá que armazenamos as informações do projeto em um formato XML facilmente acessível.)

Para definir os dados EEPROM para seu projeto GreenPAK, selecione o bloco EEPROM no painel de componentes, abra seu painel de propriedades e clique em "Definir dados".

Agora você pode editar cada byte na EEPROM individualmente com nossa interface GUI.

Uma vez que seus dados EEPROM são configurados, você pode exportá-los para um arquivo HEX usando o mesmo método descrito anteriormente para exportar os dados NVM. Insira esses 256 bytes de dados EEPROM na seção eepromString do esboço do Arduino.

Para cada design personalizado, é importante verificar as configurações de proteção na guia “Segurança” das configurações do projeto. Esta guia configura os bits de proteção para os registros de configuração da matriz, o NVM e o EEPROM. Sob certas configurações, o upload da sequência NVM pode travar o SLG46824 / 6 em sua configuração atual e remover a funcionalidade MTP do chip.

Etapa 3: usar o Arduino Sketch

Use o Arduino Sketch
Use o Arduino Sketch

Carregue o esboço para o seu Arduino e abra o monitor serial com uma taxa de 115200 baud. Agora você pode usar os prompts do MENU do esboço para executar vários comandos:

● Ler - lê os dados NVM do dispositivo ou dados EEPROM usando o endereço de escravo especificado

● Apagar - apaga os dados NVM do dispositivo ou os dados EEPROM usando o endereço de escravo especificado

● Gravar - Apaga e grava os dados NVM do dispositivo ou dados EEPROM usando o endereço de escravo especificado. Este comando grava os dados salvos nas matrizes nvmString ou eepromString.

● Ping - retorna uma lista de endereços de dispositivos escravos que estão conectados ao barramento I2C

Os resultados desses comandos serão impressos no console do monitor serial.

Etapa 4: dicas e práticas recomendadas de programação

Ao longo do suporte ao SLG46824 / 6, documentamos algumas dicas de programação para ajudar a evitar armadilhas comuns associadas ao apagamento e gravação no espaço de endereço NVM. As subseções a seguir descrevem esse tópico com mais detalhes.

1. Execução de gravações precisas de páginas NVM de 16 bytes:

Ao gravar dados no NVM SLG46824 / 6, existem três técnicas para evitar:

● A página escreve com menos de 16 bytes

● A página escreve com mais de 16 bytes

● A página escreve que não começa no primeiro registro dentro de uma página (IE: 0x10, 0x20, etc.)

Se qualquer uma das técnicas acima for usada, a interface MTP irá desconsiderar a gravação I2C para evitar carregar o NVM com informações incorretas. Recomendamos realizar uma leitura I2C do espaço de endereço NVM após a gravação para verificar a transferência correta de dados.

2. Transferência de dados NVM para os registros de configuração de matriz

Quando o NVM é gravado, os registros de configuração da matriz não são recarregados automaticamente com os dados NVM recém-gravados. A transferência deve ser iniciada manualmente desligando e ligando o PAK VDD ou gerando um soft reset usando I2C. Ao definir o registro no endereço 0xC8, o dispositivo reativa a sequência Power-On Reset (POR) e recarrega os dados do registro do NVM nos registros.

3. Redefinindo o endereço I2C após um apagamento de NVM:

Quando o NVM é apagado, o endereço NVM contendo o endereço escravo I2C será definido para 0000. Após o apagamento, o chip manterá seu endereço escravo atual dentro dos registros de configuração até que o dispositivo seja redefinido conforme descrito acima. Uma vez que o chip tenha sido reinicializado, o endereço do escravo I2C deve ser definido no endereço 0xCA dentro dos registros de configuração cada vez que o GreenPAK é desligado e religado ou reinicializado. Isso deve ser feito até que a nova página de endereço do escravo I2C tenha sido gravada no NVM.

Etapa 5: Discussão da Errata

Discussão de errata
Discussão de errata

Ao gravar no “Page Erase Byte” (Endereço: 0xE3), o SLG46824 / 6 produz um ACK não compatível com I2C após a parte “Dados” do comando I2C. Este comportamento pode ser interpretado como um NACK dependendo da implementação do mestre I2C.

Para acomodar esse comportamento, modificamos o programador Arduino comentando o código mostrado na Figura 11. Esta seção do código verifica se há um ACK I2C no final de cada comando I2C na função eraseChip (). Esta função é usada para apagar as páginas NVM e EEPROM. Uma vez que esta seção de código está localizada em um loop For, o "return -1;" linha faz com que o MCU saia prematuramente da função.

Apesar da presença de um NACK, as funções de apagamento de NVM e EEPROM serão executadas corretamente. Para obter uma explicação detalhada deste comportamento, consulte "Problema 2: Comportamento ACK não compatível com I2C para o NVM e EEPROM Page Erase Byte" no documento de errata SLG46824 / 6 (Revisão XC) no site da Dialog.

Conclusão

Neste Instructable, descrevemos o processo de uso do programador Arduino fornecido para fazer upload de strings NVM e EEPROM personalizadas para um GreenPAK IC. O código no Arduino Sketch é comentado minuciosamente, mas se você tiver alguma dúvida sobre o sketch, entre em contato com um de nossos engenheiros de aplicação de campo ou poste sua pergunta em nosso fórum. Para obter informações mais detalhadas sobre os registros e procedimentos de programação MTP, consulte o Guia de Programação In-System da Dialog.

Recomendado: