¿Las especificaciones del chip STM32 no coinciden con la hoja de datos?

Recientemente compré un par de chips STM32L152R8T6 en una tienda local de electrónica. Según la página 11 de la hoja de datos , se supone que este chip tiene 10K de SRAM y 64K de FLASH. Sin embargo, cuando consulto uno de esos chips (que ya he soldado en una placa perforada, junto con un simple transistor UART 3.3v<>5v level shifter) con 'stm32flash', responde con esto:

$ 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

Y la secuencia de comandos del enlazador de STM32L1xx Standard Peripheral Library v1.3.1, para dispositivos de densidad media, establece el tamaño de FLASH en 128K y el tamaño de RAM en 16K.

Las preguntas son :

  1. ¿Por qué los tamaños de memoria no coinciden con los descritos en la hoja de datos?
  2. ¿Tengo algún chip dudoso/falso/falsificado?
  3. ¿Qué tamaño de memoria debo indicar en el script del enlazador? (que uno es probablemente un poco fuera de tema).

También traté de usarlo con el propio Flash Loader Demonstrator de ST (a través de Windows 7 en VirtualBox VM, no lo tengo en el hardware real, tal vez lo pruebe más tarde), pero sigue diciendo que es un "No reconocido dispositivo... Reinicie su dispositivo y vuelva a intentarlo".

Uso un Arduino Mega 2560 como puente USB<>UART, usando RX0/TX0 para conectarme a STM32. Por supuesto, el chip AVR de Arduino se desactiva conectando su /RESET a GND. Con tal configuración, puedo fácilmente, sin ningún error en el camino, cargar y verificar (con stm32flash y un puerto serie) un programa simple para hacer parpadear un LED, y funcionará. También he jugado con DAC y ADC integrados, también parecen funcionar bien (aunque un poco más lento de lo que esperaba, pero eso probablemente no esté relacionado, solo estoy comenzando con ST micros).

También me topé con este hilo que podría tener una respuesta a esta pregunta, pero no sé si explica por qué la propia herramienta de ST no puede ver el chip.

Respuestas (1)

El ID de dispositivo de su controlador es el siguiente:

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

y creo que la clave es esta parte: L1xxx6(8/B) , este ID debe ser el mismo para los dispositivos STM32L152R8 y STM32L152RB .

Si echamos un vistazo a la tabla de tamaños de flash/RAM de ST, el STM32L152RB tiene 128K/16K.

ingrese la descripción de la imagen aquí

No estoy seguro, tal vez el SPL solo pueda asignar los valores RB cuando se lee esta ID de dispositivo.

Puede probar y configurar los valores de 64K/10K manualmente, y verificar si puede programar la MCU.

No creo que sus circuitos integrados sean falsos, verifique el texto en ellos para asegurarse de que sea un 8 y no una B.

Ya veo, supongo que ese es el caso entonces. Revisé dos veces la marca en mi chip y seguro, tiene 8 . Intenté configurar 10K de RAM en el script del enlazador (sin embargo, olvidé cambiar el tamaño del flash), y mi programa intermitente parece funcionar bien. Supongo que, dado que el tamaño de la memoria aumenta, este pequeño programa no se verá afectado por ese cambio. Sin embargo, por alguna extraña razón, todavía no puedo alcanzar este chip con ST Flash Loader Demonstrator (ya lo probé con Windows en hardware real). Mmm...