Недавно я купил пару микросхем 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.
Вопросы таковы :
Я также пытался использовать его с собственным демонстратором флэш-загрузчика ST от ST (через Windows 7 на виртуальной машине VirtualBox, его нет на реальном оборудовании, возможно, я проверю это позже), но он продолжает говорить, что это «неопознанный устройство... Пожалуйста, перезагрузите устройство и повторите попытку".
Я использую Arduino Mega 2560 в качестве моста USB<>UART, используя RX0/TX0 для подключения к STM32. Конечно, микросхема AVR Arduino отключается путем подключения ее /RESET к GND. С такой настройкой я могу легко, без каких-либо ошибок загрузить и проверить (с помощью stm32flash и последовательного порта) простую программу для мигания светодиода, и она будет работать. Я также поигрался со встроенными ЦАП и АЦП, они тоже работают нормально (хотя и немного медленнее, чем я ожидал, но это, вероятно, не связано - я только начинаю с микроконтроллеров ST).
Я также наткнулся на эту ветку , в которой может быть ответ на этот вопрос, но я не знаю, объясняет ли это, почему собственный инструмент ST не видит чип.
Идентификатор устройства вашего контроллера следующий:
Device ID : 0x0416 (L1xxx6(8/B))
и я думаю, что ключом является эта часть: L1xxx6(8/B) , этот идентификатор должен быть одинаковым для устройств STM32L152R8 и STM32L152RB .
Если мы посмотрим на таблицу размеров флэш-памяти/ОЗУ ST, то увидим, что STM32L152RB имеет 128K/16K.
Я не уверен, возможно, SPL может назначать значения RB только при чтении этого идентификатора устройства.
Вы можете попробовать установить значения 64K/10K вручную и проверить, можете ли вы запрограммировать MCU.
Я не думаю, что ваши микросхемы поддельные, проверьте текст на них, чтобы убедиться, что это 8 , а не B .
Алексей