Спецификации чипа STM32 не соответствуют даташиту?

Недавно я купил пару микросхем STM32L152R8T6 в местном магазине электроники. Согласно странице 11 таблицы данных , этот чип должен иметь 10 КБ SRAM и 64 КБ FLASH. Однако, когда я запрашиваю один из этих чипов (который я уже припаял к перфорированной плате вместе с простым транзисторным переключателем уровня UART 3,3 В <> 5 В) с помощью «stm32flash», он отвечает следующим образом:

$ stm32flash -b 115200 /dev/ttyACM0 
stm32flash 0.4

http://stm32flash.googlecode.com/

Interface serial_posix: 115200 8E1
Version      : 0x30
Option 1     : 0x00
Option 2     : 0x00
Device ID    : 0x0416 (L1xxx6(8/B))
- RAM        : 16KiB  (2048b reserved by bootloader)
- Flash      : 128KiB (sector size: 16x256)
- Option RAM : 16b
- System RAM : 4KiB

А скрипт компоновщика из STM32L1xx Standard Peripheral Library v1.3.1 для устройств Medium Density устанавливает размер FLASH в 128K, а размер RAM в 16K.

Вопросы таковы :

  1. Почему размеры памяти не соответствуют описанным в даташите?
  2. У меня какой-то хитрый/поддельный/контрафактный чип?
  3. Какой объем памяти я должен указать в скрипте компоновщика? (это, наверное, немного оффтоп).

Я также пытался использовать его с собственным демонстратором флэш-загрузчика ST от ST (через Windows 7 на виртуальной машине VirtualBox, его нет на реальном оборудовании, возможно, я проверю это позже), но он продолжает говорить, что это «неопознанный устройство... Пожалуйста, перезагрузите устройство и повторите попытку".

Я использую Arduino Mega 2560 в качестве моста USB<>UART, используя RX0/TX0 для подключения к STM32. Конечно, микросхема AVR Arduino отключается путем подключения ее /RESET к GND. С такой настройкой я могу легко, без каких-либо ошибок загрузить и проверить (с помощью stm32flash и последовательного порта) простую программу для мигания светодиода, и она будет работать. Я также поигрался со встроенными ЦАП и АЦП, они тоже работают нормально (хотя и немного медленнее, чем я ожидал, но это, вероятно, не связано - я только начинаю с микроконтроллеров ST).

Я также наткнулся на эту ветку , в которой может быть ответ на этот вопрос, но я не знаю, объясняет ли это, почему собственный инструмент ST не видит чип.

Ответы (1)

Идентификатор устройства вашего контроллера следующий:

   Device ID    : 0x0416 (L1xxx6(8/B))

и я думаю, что ключом является эта часть: L1xxx6(8/B) , этот идентификатор должен быть одинаковым для устройств STM32L152R8 и STM32L152RB .

Если мы посмотрим на таблицу размеров флэш-памяти/ОЗУ ST, то увидим, что STM32L152RB имеет 128K/16K.

введите описание изображения здесь

Я не уверен, возможно, SPL может назначать значения RB только при чтении этого идентификатора устройства.

Вы можете попробовать установить значения 64K/10K вручную и проверить, можете ли вы запрограммировать MCU.

Я не думаю, что ваши микросхемы поддельные, проверьте текст на них, чтобы убедиться, что это 8 , а не B .

Я вижу, я предполагаю, что это так. Я дважды проверил маркировку на своем чипе и уверен, что в нем есть 8 . Я попытался установить 10 КБ ОЗУ в скрипте компоновщика (хотя забыл изменить размер флэш-памяти), и моя программа мигания, похоже, работает нормально. Я предполагаю, что, поскольку объем памяти увеличивается, это изменение не повлияет на эту маленькую программу. Однако по какой-то странной причине я до сих пор никак не могу достучаться до этого чипа с помощью ST Flash Loader Demonstrator (я уже пробовал его с Windows на реальном железе). Хм...