STM32F103RBT6–RET6: руководство по переходу между плотностями флеш-памяти
STM32F103RCT6 и его собратья RBT6 и RET6 используют одинаковый корпусной посадочный шаблон на 64 выводов LQFP и одинаковое ядро Cortex-M3, поэтому обновление флеш-памяти в этом семействе ошибочно воспринимают как замену без доработок. Совместимость выводов касается механики. Размер страницы стирания флеш-памяти, SRAM и собственные допущения загрузчика не гарантируются посадочным шаблоном, а руководство по программированию ST напрямую описывает это различие.
1. Что именно меняется между RBT6, RCT6 и RET6?
Все три компонента — микроконтроллеры линейки производительности STM32F103, построенные на одном ядре Arm Cortex-M3 72 MHz, с одинаковым набором периферии и одинаковым корпусом LQFP64 размером 10 × 10 × 1.4 mm. Буква после «F103» и число кодируют объем флеш-памяти: RBT6 поставляется с 128 Kbyte флеш-памяти и 20 Kbyte SRAM, RCT6 — с 256 Kbyte флеш-памяти и 48 Kbyte SRAM, а RET6 — с 512 Kbyte флеш-памяти и объемом до 64 Kbyte SRAM. Емкость памяти на кристалле — единственное различие: число выводов, их назначение и основные периферийные блоки не меняются.
Именно сочетание одинакового посадочного шаблона и большего объема памяти превращает этот случай в настоящее «увеличение емкости», а не в замену компонента другого производителя. Не требуется переразводка платы, новый посадочный шаблон или изменение отладочного разъема SWD или JTAG. Остается только работа с прошивкой: необходимо убедиться, что сборка, скрипт компоновщика и драйвер флеш-памяти не рассчитаны на геометрию компонента меньшей емкости.
Собственное техническое описание ST для высокой плотности (DS5792, охватывающее компоненты 256–512 Kbyte) и описание для средней плотности ссылаются на одно и то же описание семейства линейки производительности, а коммерческое техническое описание STM32F103x8/B заявляет полную совместимость семейства по выводам, программному обеспечению и функциям. Это утверждение описывает взаимосвязь компонентов семейства, но не заменяет проверку конкретной карты памяти целевого компонента.
2. Действительно ли распиновка идентична?
Механически — да, для этой конкретной тройки компонентов. На страницах с информацией о заказе ST для RBT6, RCT6 и RET6 указан корпус LQFP 64 с вариантом корпуса 10 × 10 × 1.4 mm и 51 универсальными выводами ввода-вывода в этой конфигурации. Те же номера компонентов доступны и в других корпусах (например, RBT6 предлагает вариант TFBGA64), поэтому суффикс корпуса и точный код заказа необходимо проверять для каждого случая отдельно. Утверждение об «одинаковом числе выводов» не означает подтверждённого совпадения посадочного места конкретного заказываемого компонента.
| Компонент | Флеш-память | SRAM | Класс плотности | Варианты LQFP64 |
|---|---|---|---|---|
| STM32F103RBT6 | 128 KB | 20 KB | Medium-density | Yes |
| STM32F103RCT6 | 256 KB | 48 KB | High-density | Yes |
| STM32F103RET6 | 512 KB | 64 KB | High-density | Yes |
Прежде чем принимать решение о переразводке платы в любую сторону, загрузите актуальную таблицу сведений о компоненте из технического описания для точного кода заказа. Каталог ST, как и каталоги большинства производителей, периодически добавляет или исключает определенные варианты корпуса для конкретного номера компонента, а именно суффикс кода заказа («T6» здесь, а также любые последующие буквы корпуса или температурного диапазона) определяет позицию, которую фактически предлагает дистрибьютор.
3. Почему ST относит эти компоненты к разным классам «плотности»?
Справочное руководство ST для STM32F10xxx (RM0008) и руководство по программированию флеш-памяти (PM0075) делят семейство STM32F101/F102/F103 на компоненты низкой плотности (от 16 до 32 Kbyte флеш-памяти), средней плотности (от 64 до 128 Kbyte), высокой плотности (от 256 до 512 Kbyte) и сверхвысокой плотности. RBT6 относится к средней плотности; RCT6 и RET6 — к высокой. Это не маркетинговая характеристика: класс плотности определяет организацию внутреннего массива флеш-памяти, а именно она влияет на прошивку.
В частности, PM0075 указывает, что основной блок флеш-памяти организован как 32 страниц по 1 Kbyte для компонентов низкой плотности, 128 страниц по 1 Kbyte для компонентов средней плотности и 256 страниц по 2 Kbyte для компонентов высокой плотности. Гранулярность стирания — минимальный блок, который контроллер флеш-памяти может стереть за одну операцию, — определяется классом плотности, а не принадлежностью компонента к семейству с совместимыми выводами.
4. Что такое страница стирания флеш-памяти и почему важен ее размер?
Встроенную флеш-память нельзя переписывать по одному байту так, как это может RAM. Чтобы изменить ранее запрограммированные биты с 0 обратно на 1, контроллер флеш-памяти должен стереть целую страницу, и только после этого в нее можно записать новые данные. Поэтому страница является атомарной единицей любой полевой модернизации: будь то запись загрузчиком нового образа приложения, перезапись блока настроек или подготовка новой версии прошивки для обновления по воздуху.
Конструкция на базе RBT6, стирающая флеш-память блоками по 1 Kbyte и хранящая два независимых блока данных на расстоянии 1 Kbyte, поскольку для этого компонента это была безопасная граница стирания, опирается на свойство массива флеш-памяти средней плотности. Перенос той же прошивки на RCT6 без повторной проверки означает, что команда стирания теперь очищает по 2 Kbyte за раз: второй блок данных, который прошивка по-прежнему считает изолированным, оказывается внутри страницы, только что стертой вместе с первым блоком.
Поначалу этот отказ не выглядит проблемой флеш-памяти. Он проявляется в виде незаметного возврата настроек к исходным значениям, повреждения раздела приложения после обновления или образа OTA, который один раз загружается, а затем перестает работать после следующего цикла записи. Поскольку симптом возникает во время эксплуатации, а не при прошивке, легко потратить время на проверку тактирования, питания или прерываний, прежде чем будет проверена настоящая причина — допущение о размере страницы.
5. Где жестко заданный размер страницы нарушает работу загрузчика?
В типичной сборке прошивки есть три места, где кодируется предположение о размере страницы стирания, и все три необходимо проверить при переходе между классами плотности:
- Определения областей флеш-памяти в скрипте компоновщика. Пользовательское разделение загрузчика и приложения часто выравнивает области по границе страницы стирания, используемой при разработке. Если эта граница была выбрана как 1 Kbyte для RBT6, адреса областей по-прежнему допустимы для RCT6, но они больше не выровнены по фактической границе стирания 2 Kbyte этой микросхемы, из-за чего при обновлении частичные страницы могут пересекать области приложения и загрузчика.
- Процедура стирания во флеш-драйвере. И ST, и стандартная библиотека периферии HAL предоставляют функции стирания флеш-памяти, принимающие адрес страницы, но константа размера страницы, используемая для расчёта количества вызовов стирания или определения начала следующей страницы, иногда задаётся локально в коде приложения, а не считывается из собственной организации памяти микросхемы.
- Любая библиотека OTA или библиотека хранения настроек, подключённая извне HAL. Сторонние библиотеки хранения данных во флеш-памяти часто по умолчанию используют настраиваемый размер страницы, который необходимо задавать для каждой целевой микросхемы; если оставить без изменений значение по умолчанию 1 Kbyte, одновременно используя кремниевую микросхему RCT6, это создаёт тот же риск повреждения данных, но без каких-либо признаков на уровне компоновщика.
Практическое решение во всех трёх случаях одинаково: найти в сборке каждую ссылку на размер страницы стирания, убедиться, что он считывается из фактической организации памяти целевой микросхемы (или явно ей соответствует) согласно текущей таблице данных и PM0075, а затем повторно выполнить полный цикл стирания, программирования и проверки на представительном диапазоне адресов, а не только по адресам, использованным при первоначальном запуске.
6. Что меняется помимо флеш-памяти?
SRAM увеличивается в том же направлении, что и объём флеш-памяти, но в относительно большей степени: 20 KB у RBT6 против 48 KB у RCT6 — более чем вдвое, а 64 KB у RET6 — более чем втрое. Проект, в котором RAM было недостаточно на младшей микросхеме, получает существенный запас для более крупных буферов, увеличенной кучи или дополнительных задач RTOS. Проект, в котором объём RAM был точно рассчитан для RBT6 с 20 KB, следует перепроверить: имеют ли смысл все статические выделения фиксированного размера, размеры стеков и символы компоновщика; переход на микросхему с доступным дополнительным объёмом RAM не требует использовать его полностью, но любой код, вычисляющий адреса относительно фиксированного меньшего размера RAM, следует проверить так же, как и предположения о флеш-памяти.
Ядро, тактовая структура, структура GPIO и периферийные интерфейсы связи (I2C, SPI, I2S, USART, USB, CAN) не меняются у этих трёх микросхем. Электрические характеристики, диапазон рабочего напряжения и временные параметры этой периферии определяются конструкцией семейства производительной линии, а не плотностью памяти, поэтому квалификационные испытания на уровне периферии не требуется повторять только из-за увеличения объёма флеш-памяти.
7. Что необходимо проверить перед заменой микросхемы?
Переход на микросхему с большей плотностью памяти в этом семействе безопасен после проверки пяти пунктов по текущей таблице данных конкретной целевой микросхемы и руководству по программированию флеш-памяти, а не на основании одной лишь совместимости выводов.
- Код заказываемого корпуса. Убедитесь, что точный код заказа LQFP64 для целевой плотности является актуальным и доступен у предполагаемого поставщика; варианты корпусов могут различаться в диапазоне плотностей у одного производителя.
- Размер страницы стирания флеш-памяти. Убедитесь, что загрузчик, библиотека OTA или хранилище настроек не предполагают фиксированный размер страницы, и измените эту константу в соответствии с классом плотности целевой микросхемы (1 Kbyte для средней плотности, 2 Kbyte для высокой плотности).
- Выравнивание областей скрипта компоновщика. Повторно проверьте, что области приложения и загрузчика выровнены по новой границе страницы стирания, а не просто находятся по допустимым адресам флеш-памяти.
- Адресация относительно RAM. Проверьте весь код, вычисляющий расположение буферов или пределы стека относительно конкретного размера SRAM, вместо использования символов компоновщика из набора инструментов.
- Полное испытание стирания, программирования и проверки. Выполните полный сценарий обновления, включая имитацию прерванной записи, если приложение поддерживает отказоустойчивые обновления, прежде чем допускать новую микросхему к производству.
Документируйте, на какую именно микросхему (RBT6, RCT6 или RET6) рассчитана данная сборка прошивки, и не выпускайте один двоичный файл для разных классов плотности без явной проверки размера страницы непосредственно во флеш-драйвере.
8. Существуют ли совместимые по выводам альтернативы за пределами семейства ST?
Совместимые с STM32F103 микросхемы от других производителей для альтернативных поставок существуют и обычно продаются с той же схемой расположения выводов LQFP64 для эквивалентных плотностей, по той же логике, что и в предыдущем руководстве по перекрёстным заменам STM32F103C8T6 на этом сайте. Предупреждение здесь такое же: совместимость выводов — это утверждение о механической совместимости корпуса, и сама по себе она не подтверждает идентичность контроллера флеш-памяти, размера страницы стирания или временных параметров программирования флеш-памяти. Перед тем как считать микросхему альтернативного поставщика аналогичной оригинальной ST на уровне прошивки, изучите собственное руководство поставщика по программированию, чтобы проверить размер страницы стирания и конфигурацию циклов доступа к флеш-памяти.
9. Что указать в запросе поставщику?
При поиске микросхемы с большей плотностью запрос с точным обозначением целевой микросхемы позволяет быстрее получить полезный ответ, чем запрос, в котором указан только объём флеш-памяти. Поставщик может подтвердить наличие по полному коду заказа, но простое обозначение «256 KB STM32F103» не указывает корпус, температурный класс или точный суффикс.
Полезные поля: полный номер заказываемой микросхемы (включая суффиксы корпуса и температурного класса), количество на одну сборку и годовой объём, переход с конкретной микросхемы меньшего размера (укажите точный номер исходной микросхемы), а также сведения о том, была ли процедура стирания флеш-памяти в текущей прошивке обновлена для целевого класса плотности. Если важна только целевая плотность и подойдут RCT6 или RET6, укажите это; если требуется конкретный размер RAM, назовите его, а не запрашивайте «самый большой доступный».
Чтобы узнать текущую доступность этого семейства, выполните поиск в списке STM32F103RCT6, в списке STM32F103RBT6 и в списке STM32F103RET6 на сайте chip-seek.com. Эти страницы показывают актуальные результаты каталога, а не заявляют о наличии на складе; подтвердите количество и код даты по коммерческому предложению. Предыдущее руководство по перекрёстным заменам STM32F103C8T6 и руководство STM32F103CBT6 охватывает младшие модели LQFP48 того же семейства для проектов, ещё не перешедших на корпус с 64 выводами. Многострочный запрос на поставку можно отправить через форму BOM и RFQ.
Часто задаваемые вопросы
Можно ли использовать один и тот же двоичный файл прошивки на RBT6 и RCT6 без изменений? Только если прошивка уже считывает параметры флеш-памяти из собственных определений микросхемы, а не жёстко задаёт размер страницы. В большинстве случаев код начальной настройки, написанный для одной целевой микросхемы, задаёт его жёстко, поэтому перед повторным использованием двоичного файла проверьте драйвер флеш-памяти и скрипт компоновщика.
Действительно ли распиновка корпуса LQFP64 идентична для RBT6, RCT6 и RET6? Да, для корпуса LQFP 64, 10 × 10 × 1.4 mm, указанного в актуальной информации о заказе ST каждой микросхемы. Подтвердите конкретный код заказа целевой микросхемы, поскольку доступность корпуса может измениться в течение жизненного цикла изделия.
Что означает различие между микросхемами средней и высокой плотности в терминологии ST? Это класс объёма флеш-памяти, определённый в справочном руководстве ST RM0008: средняя плотность охватывает объём от 64 до 128 Kbyte флеш-памяти, высокая — от 256 до 512 Kbyte. Класс определяет внутреннюю организацию массива флеш-памяти, включая размер страницы стирания.
Требует ли больший объём SRAM каких-либо изменений в прошивке сам по себе? Нет. Неиспользуемый объём RAM не обязательно использовать. Проверка требуется только для кода, вычисляющего адреса или ограничения относительно фиксированного размера RAM меньшей микросхемы вместо использования символов, предоставленных компоновщиком.
Меняются ли ADC, таймеры, периферийные устройства USB и CAN в этих трёх микросхемах? Нет. Набор основных периферийных устройств, электрические характеристики и тактовая схема определяются конструкцией семейства производительной линии и не меняются в этой тройке микросхем при различном объёме памяти.
Что произойдёт, если в серийной прошивке указан неправильный размер страницы стирания? Соседние данные в пределах той же физической страницы стирания могут быть непреднамеренно удалены при стирании одного региона; обычно это проявляется как повреждённые настройки или неудачное обновление, а не как немедленная ошибка программирования.
Источники
- Фотография на обложке: Raimond Spekking, Фотография корпуса STMicroelectronics STM32F107RBT6 LQFP64, CC BY-SA 4.0. Chip-seek обрезал и оформил фотографию на обложке по той же лицензии. На фотографии показано то же семейство корпусов LQFP64; это не фотография конкретно STM32F103RBT6, RCT6 или RET6 и не подтверждение наличия на складе.
- Страница продукта ST STM32F103RB: объём флеш-памяти, SRAM, варианты корпусов и информация о заказе.
- Техническое описание ST STM32F103RC/RD/RE, DS5792: описание семейства производительной линии высокой плотности, объём флеш-памяти и SRAM, информация о корпусе.
- Страница продукта ST STM32F103RE: объём флеш-памяти, подтверждение корпусов SRAM и LQFP64.
- ST PM0075, руководство по программированию микроконтроллеров с флеш-памятью STM32F10xxx: организация модуля флеш-памяти, размер страницы по классу плотности, определения низкой, средней и высокой плотности.
- Техническое описание ST STM32F103x8/B: заявление о совместимости по выводам, программному обеспечению и функциям семейства производительной линии.
Нужна помощь в подборе микросхемы с нужной плотностью?
Укажите исходный номер микросхемы (если переходите с меньшей плотности), целевой объём флеш-памяти и точный суффикс корпуса. До утверждения запроса уточните подтверждённое количество, код партии/дату выпуска и владельца запасов. В этом руководстве не проверяется текущий складской запас; одних результатов каталога недостаточно для подтверждения наличия собственных запасов или совместимости прошивки.
Вместо этого работаете с семейством на 48 выводов? Тогда руководство по перекрёстным соответствиям STM32F103C8T6 охватывает корпус меньшего размера LQFP48.