STM32F103RBT6 a RET6: Guia de migração da densidade da flash

STM32F103RCT6 guide cover using a real STMicroelectronics STM32F103 LQFP64 microcontroller photograph

STM32F103RBT6 a RET6: Guia de migração da densidade da flash

O STM32F103RCT6 e os seus equivalentes RBT6 e RET6 partilham o mesmo encapsulamento 64-pinos LQFP e o mesmo núcleo Cortex-M3, precisamente por isso uma atualização da flash nesta família é tratada como substituição direta quando não o é. A compatibilidade dos pinos é mecânica. O tamanho da página de apagamento da flash, SRAM e os pressupostos do próprio bootloader não são garantidos pelo encapsulamento, e o manual de programação do próprio ST documenta diretamente essa diferença.

1. O que muda realmente entre RBT6, RCT6 e RET6?

As três peças são microcontroladores da linha de desempenho STM32F103, baseados no mesmo núcleo Arm Cortex-M3 72 MHz, no mesmo conjunto de periféricos e no mesmo encapsulamento LQFP64, com um corpo de 10 × 10 × 1.4 mm. A letra depois de “F103”, juntamente com o número, codifica o tamanho da flash: RBT6 inclui 128 Kbytes de flash e 20 Kbytes de SRAM, RCT6 inclui 256 Kbytes de flash e 48 Kbytes de SRAM, e RET6 inclui 512 Kbytes de flash e até 64 Kbytes de SRAM. Nada no silício altera o número de pinos, a atribuição dos pinos ou os periféricos principais; apenas muda a quantidade de memória no chip.

Essa combinação, encapsulamento idêntico e mais memória, é o que faz deste um verdadeiro caso de “atualização de capacidade”, e não uma substituição entre fabricantes. Não há necessidade de redesenhar a placa, não há um novo padrão de ilhas nem uma alteração no conetor de depuração SWD ou JTAG. O trabalho restante é inteiramente no firmware: confirmar que nada na compilação, no script do linker ou no controlador da flash partia da geometria do componente menor.

A folha de dados de alta densidade do próprio ST (DS5792, que abrange os componentes 256 a 512 Kbyte) e a folha de dados de densidade média referem ambas a mesma descrição da família de desempenho, e a folha de dados comercial STM32F103x8/B afirma que a família foi concebida para compatibilidade completa pino a pino, de software e de funcionalidades. Essa afirmação diz respeito à relação entre os componentes da família, não substitui a verificação do mapa de memória específico do componente pretendido.

2. A disposição dos pinos é realmente idêntica?

Mecanicamente, sim, para este trio específico. RBT6, RCT6 e RET6 indicam todos uma opção de encapsulamento LQFP 64, de 10 × 10 × 1.4 mm, nas páginas de informações para encomenda de ST, com 51 pinos de E/S de uso geral nessa configuração. Os mesmos números de peça também estão disponíveis noutros encapsulamentos (RBT6 acrescenta, por exemplo, uma opção TFBGA64), pelo que o sufixo do encapsulamento e o código exato de encomenda têm de ser verificados individualmente. A afirmação de “mesmo número de pinos” não equivale a uma correspondência de footprint verificada para a peça específica encomendada e utilizada.

STM32F103RBT6, RCT6 and RET6 LQFP64 pinout showing identical pin assignment with only the flash and SRAM capacity changing between the three densities
Figura 1. Mapa original dos pinos Chip-seek para o encapsulamento LQFP64 partilhado por RBT6, RCT6 e RET6, com base nas tabelas de disposição dos pinos das folhas de dados ST. Apenas a capacidade de memória difere entre os três; os nomes e as posições dos pinos não mudam.
Componente Flash SRAM Classe de densidade LQFP64 disponível
STM32F103RBT6 128 KB 20 KB Medium-density Yes
STM32F103RCT6 256 KB 48 KB High-density Yes
STM32F103RET6 512 KB 64 KB High-density Yes

Antes de tomar uma decisão definitiva sobre redesenhar ou não a placa, consulte a tabela atual de informações do componente na folha de dados referente ao código exato encomendável que está a ser adquirido. O catálogo de ST, como o da maioria dos fabricantes, adiciona ou descontinua periodicamente opções específicas de encapsulamento por número de peça, e é o sufixo do código de encomenda (o “T6” aqui, além de quaisquer letras finais de encapsulamento ou temperatura) que um distribuidor efetivamente utiliza para manter o stock.

3. Porque é que ST chama a estas classes diferentes de “densidade”?

O manual de referência STM32F10xxx de ST (RM0008) e o manual de programação da flash (PM0075) dividem a família STM32F101/F102/F103 em classes de baixa densidade (16 a 32 Kbytes de flash), densidade média (64 a 128 Kbytes), alta densidade (256 a 512 Kbytes) e densidade XL. RBT6 pertence à densidade média; RCT6 e RET6 pertencem à alta densidade. Isto não é uma designação de marketing: a classe de densidade determina a organização interna da matriz de flash, que é o detalhe que afeta o firmware.

Especificamente, PM0075 afirma que o bloco principal de memória flash está organizado em 32 páginas de 1 Kbyte para dispositivos de baixa densidade, 128 páginas de 1 Kbyte para dispositivos de densidade média e 256 páginas de 2 Kbytes para dispositivos de alta densidade. A granularidade de apagamento, o bloco mais pequeno que o controlador da flash consegue apagar numa operação, está associada à classe de densidade, não à pertença do componente a uma família compatível ao nível dos pinos.

4. O que é uma página de apagamento da flash e porque é que o seu tamanho é importante?

A flash integrada não pode ser reescrita byte a byte da forma que RAM pode. Para alterar bits previamente programados, passando de 0 para 1, o controlador da flash tem de apagar uma página inteira, e só depois podem ser programados novos dados nela. A página é, portanto, a unidade atómica de qualquer atualização em campo, quer se trate de um bootloader a escrever uma nova imagem de aplicação, de um bloco de definições a ser reescrito ou de uma atualização OTA a preparar uma nova versão de firmware.

Flash memory map comparison showing RBT6 organized as 128 pages of 1 Kbyte and RCT6/RET6 organized as larger pages of 2 Kbytes, from the STM32F10xxx flash programming manual
Figura 2. Diagrama original Chip-seek da organização da flash descrita no manual de programação PM0075 de ST: os dispositivos de densidade média utilizam uma página de 1 Kbyte, enquanto os dispositivos de alta densidade utilizam uma página de 2 Kbyte.

Um projeto baseado em RBT6 que apaga a flash em unidades de 1 Kbyte e armazena dois blocos de dados independentes separados por 1 Kbyte, por esse ser um limite de apagamento seguro nesse componente, depende de uma propriedade da matriz de flash de densidade média. Transferir o mesmo firmware para RCT6 sem voltar a verificar este ponto significa que o comando de apagamento passa a limpar 2 Kbytes de cada vez: o segundo bloco de dados, que o firmware continua a considerar isolado, fica dentro da página que acabou de ser apagada juntamente com o primeiro.

Este modo de falha não parece inicialmente um problema da flash. Manifesta-se como definições que são silenciosamente repostas, uma partição da aplicação que fica corrompida após uma atualização ou uma imagem OTA que arranca uma vez e depois falha após o ciclo de escrita seguinte. Como o sintoma surge durante a utilização e não durante a programação, é fácil perder tempo a investigar temporização, alimentação ou interrupções antes de verificar a causa real: uma suposição sobre o tamanho da página.

5. Onde é que um tamanho de página codificado interrompe um bootloader?

Diagram showing three places a firmware build encodes flash erase page size: linker script regions, the flash driver erase routine, and third-party OTA or settings storage libraries
Figura 3. Diagrama Chip-seek original dos três pontos em que uma compilação de firmware típica STM32F103 codifica uma suposição sobre o tamanho da página de apagamento; cada um deve ser revisto quando muda a classe de densidade do componente-alvo.

Há três pontos numa compilação de firmware típica que codificam uma suposição sobre o tamanho da página de apagamento, e os três devem ser revistos ao mudar entre classes de densidade:

  1. As definições da região de memória flash no script do linker. Uma divisão personalizada entre bootloader e aplicação alinha frequentemente as regiões com o limite de página de apagamento usado durante o desenvolvimento. Se esse limite tiver sido definido como 1 Kbyte em RBT6, as regiões continuam a ser endereços válidos em RCT6, mas deixam de estar alinhadas com o limite real de apagamento 2 Kbyte desse componente, o que pode deixar páginas parciais a abranger as regiões da aplicação e do bootloader durante uma atualização.
  2. A rotina de apagamento do controlador de memória flash. Tanto o ST's HAL como a biblioteca periférica padrão disponibilizam funções de apagamento da memória flash que recebem um endereço de página, mas a constante do tamanho da página usada para calcular quantas chamadas de apagamento são necessárias, ou onde começa a página seguinte, é por vezes definida localmente no código da aplicação em vez de ser lida da própria organização de memória do componente.
  3. Qualquer biblioteca de OTA ou de armazenamento de definições incluída a partir de fora do HAL. As bibliotecas de armazenamento em memória flash de terceiros usam frequentemente por predefinição um tamanho de página configurável que tem de ser definido por alvo; deixar silenciosamente um valor predefinido 1 Kbyte enquanto se utiliza silício RCT6 reproduz o mesmo risco de corrupção sem qualquer sintoma ao nível do linker.

A correção prática nos três casos é a mesma: localizar todas as referências ao tamanho da página de apagamento na compilação, confirmar que este é lido da organização real do componente-alvo (ou explicitamente compatível com ela) na ficha técnica atual e no PM0075, e repetir um ciclo completo de apagamento/programação/verificação num intervalo representativo de endereços, não apenas nos endereços usados durante a colocação em funcionamento original.

6. O que muda além da memória flash?

Bar chart comparing flash and SRAM capacity across STM32F103RBT6, RCT6 and RET6, showing SRAM growing proportionally faster than flash
Figura 4. Gráfico Chip-seek original que compara a capacidade de memória flash e SRAM entre os três componentes, elaborado com base na ficha técnica ST atual de cada componente.

SRAM aumenta na mesma direção que a memória flash, mas por uma proporção relativa maior: 20 KB em RBT6 contra 48 KB em RCT6 é mais do dobro, e 64 KB em RET6 é mais do triplo. Um projeto que estava no limite de RAM no componente menor ganha uma margem significativa para buffers maiores, uma heap maior ou tarefas RTOS adicionais. Um projeto que tenha dimensionado precisamente RAM para RBT6's 20 KB deve verificar novamente se todas as alocações estáticas de tamanho fixo, os tamanhos da pilha e os símbolos do linker continuam a fazer sentido; passar para um componente com mais RAM disponível não obriga a utilizá-lo todo, mas qualquer código que tenha calculado endereços relativamente a um tamanho fixo de RAM menor deve ser revisto da mesma forma que as suposições relativas à memória flash.

O núcleo, a árvore de relógio, a estrutura GPIO e os periféricos de comunicação (I2C, SPI, I2S, USART, USB, CAN) não mudam entre estes três componentes. As especificações elétricas, o intervalo de tensão de funcionamento e a temporização desses periféricos são definidos pelo projeto da família de desempenho, não pela densidade da memória, pelo que a qualificação ao nível dos periféricos não precisa de ser repetida apenas devido à atualização da memória flash.

7. O que deve ser verificado antes de atualizar o componente?

Uma atualização de densidade nesta família é segura depois de verificar cinco itens com base na ficha técnica atual do componente-alvo específico e no manual de programação da memória flash, não os assumindo apenas pela compatibilidade dos pinos.

  1. Código de encapsulamento encomendável. Confirme se o código de encomenda exato LQFP64 da densidade-alvo está atualizado e disponível junto da fonte pretendida; as opções de encapsulamento podem diferir ao longo da gama de densidades de um determinado fabricante.
  2. Tamanho da página de apagamento da memória flash. Confirme se o bootloader, a biblioteca OTA ou o armazenamento de definições assumem um tamanho de página fixo e atualize essa constante para corresponder à classe de densidade do componente-alvo (1 Kbyte para densidade média, 2 Kbyte para densidade alta).
  3. Alinhamento das regiões no script do linker. Verifique novamente se as regiões da aplicação e do bootloader estão alinhadas com o novo limite da página de apagamento, e não apenas com um endereço válido da memória flash.
  4. Endereçamento relativo a RAM. Reveja qualquer código que tenha calculado localizações de buffers ou limites da pilha relativamente a um tamanho específico de SRAM, em vez de utilizar os símbolos do linker da cadeia de ferramentas.
  5. Teste completo de apagamento/programação/verificação. Execute o fluxo completo de atualização, incluindo uma escrita interrompida simulada se a aplicação suportar atualizações à prova de falhas, antes de qualificar o novo componente para produção.

Documente qual o componente específico (RBT6, RCT6 ou RET6) visado por uma determinada compilação de firmware e evite distribuir um único binário para várias classes de densidade sem uma verificação explícita do tamanho da página dentro do próprio controlador de memória flash.

8. Existem alternativas compatíveis ao nível dos pinos fora da família ST?

Existem componentes compatíveis com STM32F103 de segunda fonte de outros fabricantes, geralmente comercializados com a mesma disposição de pinos LQFP64 para densidades equivalentes, seguindo a mesma lógica do guia de referências cruzadas STM32F103C8T6 anteriormente publicado neste site. A precaução é idêntica: a compatibilidade dos pinos é uma afirmação mecânica sobre o encapsulamento e, por si só, não comprova um controlador de memória flash idêntico, um tamanho de página de apagamento idêntico ou uma temporização de programação da memória flash idêntica. Confirme no manual de programação do próprio fabricante o tamanho da página de apagamento e a configuração do ciclo de acesso à memória flash antes de presumir que um componente de segunda fonte se comporta como o original ST ao nível do firmware.

9. O que deve constar do pedido de fornecimento?

Ao procurar uma atualização de densidade, um pedido que indique o componente-alvo exato obtém uma resposta útil mais rapidamente do que um pedido que indique apenas uma capacidade de memória flash. Um fornecedor pode confirmar a disponibilidade com base no código completo de encomenda, mas um simples "256 KB STM32F103" não especifica o encapsulamento, a classe de temperatura nem o sufixo exato.

Os campos úteis são o número completo do componente encomendável (incluindo o encapsulamento e o sufixo de temperatura), a quantidade por produção com o volume anual, se o projeto está a passar de um componente menor específico (indique o número exato do componente de origem) e se a rotina atual de apagamento da memória flash do firmware já foi atualizada para a classe de densidade-alvo. Quando apenas a densidade-alvo importa e RCT6 ou RET6 serviriam, indique-o; quando for necessário um tamanho específico de RAM, indique-o em vez de pedir "o maior disponível".

Para consultar a disponibilidade atual desta família, pesquise a listagem STM32F103RCT6, a listagem STM32F103RBT6 e a listagem STM32F103RET6 em chip-seek.com. Estas páginas apresentam resultados de catálogo em tempo real, não uma garantia de stock; confirme a quantidade e o código de data na cotação. O anterior guia de referências cruzadas STM32F103C8T6 e guia STM32F103CBT6 abrange os membros LQFP48 mais pequenos da mesma família para projetos que ainda não adotaram o encapsulamento de 64 pinos. Pode ser enviado um pedido de aprovisionamento com várias linhas através do formulário BOM e RFQ.

Perguntas frequentes

Posso utilizar o mesmo binário de firmware em RBT6 e RCT6 sem alterações? Apenas se o firmware já ler a geometria da memória flash a partir das definições do próprio componente, em vez de codificar diretamente um tamanho de página. A maioria do código de inicialização desenvolvido para um único destino define-o diretamente, por isso reveja o controlador da flash e o script do linker antes de reutilizar o binário.

O encapsulamento LQFP64 é realmente idêntico em RBT6, RCT6 e RET6? Sim, para o encapsulamento LQFP 64, de 10 × 10 × 1.4 mm, indicado nas informações atuais de encomenda ST de cada componente. Confirme o código específico encomendável do componente-alvo, uma vez que a disponibilidade do encapsulamento pode mudar ao longo do ciclo de vida de um produto.

Qual é a diferença entre densidade média e alta densidade na terminologia de ST? É uma classe de capacidade de memória flash definida no manual de referência ST RM0008: a densidade média abrange 64 a 128 Kbytes de flash, enquanto a alta densidade abrange 256 a 512 Kbytes. A classe determina a organização interna da matriz flash, incluindo o tamanho da página de apagamento.

Mais SRAM exige, por si só, alterações no firmware? Não. A capacidade RAM não utilizada não tem de ser utilizada. A revisão só é necessária para código que calcule endereços ou limites relativamente ao tamanho fixo RAM do componente mais pequeno, em vez de utilizar os símbolos fornecidos pelo linker.

Os periféricos ADC, temporizadores, USB e CAN mudam entre estes três componentes? Não. O conjunto de periféricos principal, as especificações elétricas e a árvore de relógio são definidos pelo design da família de linhas de desempenho e não mudam com a densidade da memória neste trio.

O que acontece se o tamanho da página de apagamento estiver errado no firmware de produção? Os dados adjacentes dentro da mesma página física de apagamento podem ser limpos involuntariamente quando uma região é apagada, o que normalmente se manifesta como definições corrompidas ou uma atualização falhada, e não como um erro imediato de programação.

Fontes

Precisa de ajuda para obter a densidade correta?

Envie o número de peça de origem (se estiver a migrar de uma densidade mais baixa), o tamanho de flash pretendido e o sufixo exato do encapsulamento. Solicite a confirmação da quantidade, do código de lote/data e da titularidade do inventário antes da aprovação. Este guia não verificou o stock atual; os resultados do catálogo, por si só, não comprovam inventário próprio nem compatibilidade do firmware.

Pesquisar inventário em tempo realEnviar um RFQ

Está a trabalhar com a família de 48 pinos? O guia de correspondência cruzada STM32F103C8T6 abrange o encapsulamento LQFP48 mais pequeno.

Check stock by part number

Turn this insight into a sourcing decision.

Need pricing or a drop-in alternative? Submit a BOM / RFQ or talk to our team.