Autor Tema: NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.  (Leído 312 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3153
    • Pinballsp
NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
« en: 15 de Junio de 2018, 08:15:03 »
 
Ya está el tema en marcha, NXP ha puesto a la venta las placas de evaluación para los RT1020, un microcontrolador con encapsulado LQFP100 y LQFP144, Cortex M7 a 500Mhz.

Lo raro es que las placas de evaluación ya se pueden comprar, yo ya tengo pedida la mía a Mouser, pero el micro aún no está en stock, y tampoco han liberado el Datasheet, ni el Manual de la placa de evaluacion.

De documentación, han soltado fundamentalmente Notas Aplicativas, y el único documento interesante una "Guía de Desarrollo Hardware". Se supone que el día 26 del mes actual ya tendremos el Datasheet y se pondrán comprar los chips y pedir muestras gratuitas a NXP.

La documentación disponible, aquí:
https://www.nxp.com/products/processors-and-microcontrollers/applications-processors/i.mx-applications-processors/i.mx-rt-series/i.mx-rt1020-crossover-processor-with-arm-cortex-m7-core:i.MX-RT1020?tab=Documentation_Tab

La placa de evaluación, vale poco más de 44€ en Mouser, raro también que no hayan puesto una foto del producto: https://www.mouser.es/ProductDetail/771-MIMXRT1020-EVK

De la documentación, le he echado un ojo a este documento para habilitar el arranque desde QSPI, y como generar el objeto, una vez compilado, para cargarlo. El ejemplo que ponen para cargar el programa, a mi no me vale, porque están usando un chip Kinetis que actúa de intermediario, y mi idea es cargarlo desde SD a QSPI.

https://www.nxp.com/docs/en/application-note/AN12108.pdf
 
La única peculiaridad de este micro, con respecto a otros, es que no tiene memoria flash interna. Para el arranque hay que conectar y habilitar una de las tres opciones posibles; tarjeta SD, memoria QSPI o Hyperflash paralelo.

Aprovechando el pedido a Mouser de la placa de evaluación, me he pedido unas memorias QSPI y una Hyperflash. También pedí a los polacos unos reguladores de 1.8 voltios, porque estas memorias, se alimentan ambas a ese voltaje.

Lo único complicado con la Hyperflash es que es encapsulado FBGA, pitch 1mm, en una matriz de 5x5 bolas, no se si esto lo podré hacer con un PCB de 2 capas, lo intentaré. Aparte de la placa de evaluación, en cuanto esté el Datasheet y los chips, mi idea es montar mi propia plaquita con el micro, su cuarzo (creo que es de 24Mhz), tarjetero micro SD, memoria QSPI y puede que la Hyperflash, también un regulador LD1117 de 3.3v para el micro y un MIC5504 para los 1.8v.

Esta es la hyperflash, bastante cara por cierto, si me funciona bien con la QSPI o incluso con el tarjetero SD, prescindiré de la hyperflash.

https://www.mouser.es/ProductDetail/727-S26KL128SDABHI02




En cuanto tenga la placa de evaluación, y el datasheet, mi idea es empezar las pruebas con MCUXpresso. Empezar con lo sencillo, probar el arranque desde las tres opciones posibles, y en cuanto lo tenga más o menos dominado, meterme con el DMA, que es lo que más me interesa. Y finalmente migrar todos mis desarrollos de Kinetis y STM32, al RT1020.

El precio del chip es una ganga, desde 6€ para una unidad, y bastante menos en cantidad.

Lo único en lo que cojea el RT1020 es que no tiene ningún controlador integrado para manejar pantallas TFT, una pena, para eso hay que usar el RT1050, pero ese ya es BGA, o echar mano de los STM32 que si tienen controladores TFT, bien paralelo o MIPI DSI.
« Última modificación: 15 de Junio de 2018, 08:21:46 por planeta9999 »

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3153
    • Pinballsp
Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
« Respuesta #1 en: 17 de Junio de 2018, 05:42:23 »
 
Ya tenemos disponible el SDK del RT1020 para MCUXpresso. Lo he descargado, lo he importado a MCUXpresso y se ve muy bien, entre otras cosas, va bien cargado de fuentes de ejemplo (lo que siempre echo de menos en la mayoría de entornos de desarrollo, muchos fuentes de ejemplo, es como mejor se aprende), desde lo más sencillito para encender un Led, leer unos puladores, sacar variables por la Consola, hasta ejemplos para manejar toda la periferia del microcontrolador.

La semana que viene me entregan la placa de evaluación, y empiezo las pruebas. Interesante ver que tiene un Debug que directamente permite usar el PRINTF para volcar cualquier variable, en tiempo real, a la salida de la Consola del MCUXpresso, para mi mucho mejor que tener que usar el Debug con Breakpoints, en este aspecto viene a ser como Arduino.




A partir de los fuentes de ejemplo del SDK, también veo que la placa usa un cuarzo de 24Mhz, así ya lo voy comprando para hacer mi placa, ya tengo la QSPI y la Hyperflash. He estado viendo varios fuentes más, y se ve todo muy familiar para cualquiera que sepa programar en C/C++ y más habiendo ya trabajado con otros micros NXP, como los Kinetis, no creo que me cueste mucho hacerme con esta maravilla de micro.

Incluso estoy pensando en probar a hacer una plaquita de 4 capas con el RT1050 en BGA, mi única duda es si los condensadores de desacoplo tendrán que ir por la cara de abajo (y el micro en la de arriba), porque eso me complicaría mucho el ensamblaje y soldadura para hacer un producto comercial. En el Teensy 3.6, que instala un Kinetis MK66 en BGA, no se ven componentes por la cara de abajo, me extraña un poco, a menos que las bolas con los pines de alimentación y GND, estén todas en el perímetro del encapsulado.

Uno de los tantos ejemplos que lleva cargado el SDK, uno sencillito, el típico para parpadear un led haciendo uso de una interrupción. En boards.h y boards.c, se define la frecuencia del cuarzo y la frecuencia de reloj, 24Mhz de cuarzo y 500Mhz de reloj para el RT1020.

Código: C++
  1. /*
  2.  * The Clear BSD License
  3.  * Copyright 2017 NXP
  4.  * All rights reserved.
  5.  *
  6.  */
  7.  
  8. #include "board.h"
  9. #include "fsl_gpio.h"
  10.  
  11. #include "pin_mux.h"
  12. #include "system_MIMXRT1052.h"
  13. /*******************************************************************************
  14.  * Definitions
  15.  ******************************************************************************/
  16. #define EXAMPLE_LED_GPIO BOARD_USER_LED_GPIO
  17. #define EXAMPLE_LED_GPIO_PIN BOARD_USER_LED_GPIO_PIN
  18.  
  19.  
  20. /*******************************************************************************
  21.  * Prototypes
  22.  ******************************************************************************/
  23.  
  24. /*******************************************************************************
  25.  * Variables
  26.  ******************************************************************************/
  27. volatile uint32_t g_systickCounter;
  28. /* The PIN status */
  29. volatile bool g_pinSet = false;
  30.  
  31. /*******************************************************************************
  32.  * Code
  33.  ******************************************************************************/
  34. void SysTick_Handler(void)
  35. {
  36.     if (g_systickCounter != 0U)
  37.     {
  38.         g_systickCounter--;
  39.     }
  40. }
  41.  
  42. void SysTick_DelayTicks(uint32_t n)
  43. {
  44.     g_systickCounter = n;
  45.     while(g_systickCounter != 0U)
  46.     {
  47.     }
  48. }
  49.  
  50. /*!
  51.  * @brief Main function
  52.  */
  53. int main(void)
  54. {
  55.     /* Define the init structure for the output LED pin*/
  56.     gpio_pin_config_t led_config = {kGPIO_DigitalOutput, 0, kGPIO_NoIntmode};
  57.  
  58.     /* Board pin init */
  59.     BOARD_InitPins();
  60.     /* Update the core clock */
  61.     SystemCoreClockUpdate();
  62.  
  63.     /* Init output LED GPIO. */
  64.     GPIO_PinInit(EXAMPLE_LED_GPIO, EXAMPLE_LED_GPIO_PIN, &led_config);
  65.  
  66.     /* Set systick reload value to generate 1ms interrupt */
  67.     if(SysTick_Config(SystemCoreClock / 1000U))
  68.     {
  69.         while(1)
  70.         {
  71.         }
  72.     }
  73.  
  74.     while (1)
  75.     {
  76.         /* Delay 1000 ms */
  77.         SysTick_DelayTicks(1000U);
  78.         if (g_pinSet)
  79.         {
  80.             GPIO_PinWrite(EXAMPLE_LED_GPIO, EXAMPLE_LED_GPIO_PIN, 0U);
  81.             g_pinSet = false;
  82.         }
  83.         else
  84.         {
  85.             GPIO_PinWrite(EXAMPLE_LED_GPIO, EXAMPLE_LED_GPIO_PIN, 1U);
  86.             g_pinSet = true;
  87.         }
  88.     }
  89. }
  90.  


« Última modificación: 17 de Junio de 2018, 05:53:51 por planeta9999 »

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3153
    • Pinballsp
Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
« Respuesta #2 en: 18 de Junio de 2018, 08:05:30 »
 
Hoy recibí la placa de evaluación para el RT1020, con un día de antelación. Esta placa instala un LQFP144 a 500Mhz. Parece que no hay Hyperflash, solo QSPI y SDRAM. Supongo que solo podrá arrancar desde SD o QSPI, a diferencia de la placa de evaluación del RT1050 que además añade Hyperflash.

El SDK del RT1020 ya está disponible para MCUXpresso. Lo descargué e instalé, en general bien aunque las Peripheral Tools y la configuración gráfica del Reloj no están disponibles aún. Lleva muchos ejemplos de código fuente y documentación, eso está muy bien, lo que siempre le he pedido a un entorno de desarrollo, fuentes de ejemplo a cascoporro, que es como mejor se aprende en vez de Manuales de Referencia con miles de páginas que no hay quien se las trague.

Con la placa solo dan un cable micro USB, eso es todo, un poco rácanos. No hay ningún software, CD o DVD, solo un documento impreso del Packing List, donde lleva impresa la dirección web nxp.com/MIMXRT1020EVKQSG, para en teoría descargar la Guía de Usuario de la placa, pero esa dirección no funciona. Espero que el día 26 estén disponibles el Datasheet, el Manual de Referencia del micro y el Manual de usuario de la Placa de Evaluación.

La primera impresión es buena, tanto el hardware, como el SDK prometen mucho, ya estoy preparado para migrar todos mis desarrollos de Kinetis y STM32, a esta maravilla que es la serie RT de NXP.

Por cierto, en la última foto, hay un chip de la placa que no consigo identificar, con la referencia que lleva impresa no me sale nada por Google, solo se ve que lo fabrica NXP.

















Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3153
    • Pinballsp
Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
« Respuesta #3 en: 28 de Junio de 2018, 09:51:05 »
 
Ya tenemos el chip en el mercado (el LQFP100 a 500Mhz), por ahora solo en Digikey, yo me pedí 10 unidades hace unos días a 5,37 Euros la unidad, gastos de envío gratuitos para pedidos que superen los 50 euros, como en Mouser. Una auténtica ganga para un Cortex M7 a 500Mhz, me los han entregado hoy por UPS.  Samples gratuitos, por ahora NXP no da.

Para mi sorpresa no me han hecho pagar IVA. Según la web de Digikey, ellos pagan los aranceles de Aduanas, pero el IVA lo tiene que pagar el cliente cuando te lo entrega el repartidor. Mouser funciona parecido, pero el IVA te lo cargan en la tarjeta de crédito.

En cuanto tenga un hueco libre, que es básicamente cuando eche a andar la Pick and Place, me pongo a diseñar el PCB para esta maravilla, algo sencillo con tarjetero micro SD, QSPI de 64 Mb, cuarzo de 24Mhz, algunos leds para tareas de debug y unos conectores IDC para mi aplicación de pantallas led. Pondré en práctica por primera vez lo del "Length Tuning" para rutear la QSPI y el SDIO.

Lo único en lo que flojea el RT1020 es en el SDK para MCUXpresso, todavía no soporta las Peripheral Tools, que es el asistente para configurar toda la periferia, me interesa sobre todo para el DMA y las interrupciones, si no hay que hacerlo todo a mano, o tirar de alguno de los ejemplos de código fuente y ver como está montado.

De las cuatro referencias de RT1020, dos LQFP100 y dos LQFP144, a 400 y 500Mhz, por ahora solo está disponible el LQFP100 a 500Mhz. La placa de evaluación monta un LQFP144 a 500Mhz.







« Última modificación: 28 de Junio de 2018, 10:21:45 por planeta9999 »

Desconectado rusotech

  • PIC10
  • *
  • Mensajes: 1
Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
« Respuesta #4 en: 11 de Agosto de 2018, 14:52:10 »
Hola planeta9999, pudistes armar una placa con el imxrt1021 en LQFP100?

Yo estoy apuntando al LQFP144 para cuando salga.

Soy el diseñador de esta placa:
https://github.com/martinribelotta/imxrt1020-module

La cual ya hemos discutido previamente en el post correspondiente del blog mcuoneclipse.

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3153
    • Pinballsp
Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
« Respuesta #5 en: 11 de Agosto de 2018, 23:06:39 »
Hola planeta9999, pudistes armar una placa con el imxrt1021 en LQFP100?

Yo estoy apuntando al LQFP144 para cuando salga.

Soy el diseñador de esta placa:
https://github.com/martinribelotta/imxrt1020-module

La cual ya hemos discutido previamente en el post correspondiente del blog mcuoneclipse.

Hola Martin.

Estoy preparando el diseño, el esquema ya lo tengo prácticamente completo para el LQFP100, con el conector para programar y hacer Debug por JTAG y un mini USB para cargar la imagen encriptada del firmware con la MFG Tool, aunque tengo dudas sobre donde se conecta la QSPI. En los esquemas de la placa de evaluación con el LQFP144, la SD va conectada al puerto GPIO_SD_B0, que no existe en el LQFP100.

He conectado en mi esquema la tarjeta SD al puerto GPIO_SD_B1. El problema es que si conecto la QSPI tambien a GPIO_SD_B1, el pin  GPIO_SD_B1_06 quedaría compartido entre la SD y la QSPI. En la SD, ese puerto va a la señal SD_CD_SW (creo que es la detección de tarjeta SD), y en la QSPI ese es el pin 3 de datos, sospecho que no funcionaría.

La alternativa es llevarme la QSPI al puerto GPIO_AD_B1, por lo que vi en el Manual de Referencia (FlexSPI 2nd option). Lo pregunté a NXP en su foro y también como una consulta privada, y de poco me sirvió la respuesta, porque prácticamente me remitieron al Manual de Referencia, que yo ya me había visto. 

https://community.nxp.com/message/1038958

Estoy por arriesgarme, pongo la QSPI en GPIO_AD_B1, ruteo y mando a fabricar a JLCPCB. Creo que es lo correcto, considerando todo esto del IOMUX para configurar las funciones alternativas de cada puerto, pero como estoy empezando con el RT1020 no estoy seguro al 100%.






« Última modificación: 12 de Agosto de 2018, 01:07:32 por planeta9999 »

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3153
    • Pinballsp
Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
« Respuesta #6 en: 12 de Agosto de 2018, 02:13:24 »
 
La cosa se complica, porque ahora resulta en que el puerto GPIO_AD_B1 también esta JTAG y SWD. Si ahí se conecta la QSPI, no se podrá hacer Debug, eso seguro, tal vez si se deje programar.

Lo único que se me ocurre para tenerlo todo es poner la QSPI en GPIO_SD_B1, siempre que el pin SD_CD_SW de detección de la SD, en el puerto GPIO_SD_B1_06, sea algo opcional que se pueda desactivar.

Si a cada pin, se le puede configurar individualmente su función alternativa, entonces supongo que se puede conectar GPIO_SD_B1_06 solo para la QSPIk sin que interfiera con la SD. Es lo que tiene cuando empiezas con algo, todo son dudas, y los manulaes como son tan crípticos, no ayudan demasiado, tampoco puedes esperar mucho del soporte oficial de NXP que ante estos pasteles te remiten al Manual de Referencia o al Datasheet, y búscate la vida Serafín.

Consultando el Manual de Referencia, apartado del Mutiplexado de pines, me encuentro que FlexSPI (A), permite elegir entre dos puertos para cada señal. Falta saber si se pueden mezclar o todas tienen que ser del mismo puerto. Tampoco tengo claro que no es lo mismo el Multiplexado de los pines y  la configuración del Boot de arranque.

Salir, saldrá, pero a base de echarle horas a cascoporro, pruebas y prototipos que terminarán en el cubo de la basura, me lo veo venir.



« Última modificación: 12 de Agosto de 2018, 02:43:39 por planeta9999 »

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3153
    • Pinballsp
Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
« Respuesta #7 en: 12 de Agosto de 2018, 04:53:37 »
 
Creo que me voy a arriesgar a poner la QSPI en GPIO_SD_B1. Por lo que voy entendiendo del multiplexado de pines, hay pines que pueden tener varias funciones configurables por el usuario, solo UNA, por lo que en teoría no puede haber un pin compartiendo varias funciones, en este caso entre la SD y la QSPI.

Según la tabla adjunta, el puerto GPIO_SD_B1_06 puede configurarse con 7 funciones alternativas (en el manual pone 8, pero yo cuento 7), la ALT0 sería para que funcionase como el Card Detect de la tarjeta SD, y el ALT1 para que funcione como la linea 3 de Datos de la QSPI, que es lo que me interesa.

De esta manera me quedan libres los pines 0 a 6 del puerto GPIO_AD_B1 para el JTAG o el SWD, ambos para poder programar y hacer Debug. Aunque sigo teniendo dudas de si el modo Boot para la SD exige que GPIO_SD_B1_06 esté asignado a la SD, de ser así tampoco creo que haya problema, puedo configurar el Boot desde QSPI, y el acceso al tarjetero SD solo para modo de trabajo, lectura y almacenamiento de archivos de configuración.

Bueno Martín, si lo lees, ya comentarás que te parece, mi idea es mandar a fabricar el PCB esta próxima semana, recibo la placa una semana despues, y lo monto todo a ver que sale. Para el LQFP144, que para mi sería el ideal, todavía hay que esperar bastantes meses, hasta finales de año, y a mi me interesaría tener en marcha este bicho lo antes posible, para poder migrar mis diseños de Kinetis MK66 a RT1020.

Ya empecé a leer el apartado del DMA en el Manual de Referencia, y con la ayuda de otros textos lo voy entendiendo, quiero empezar probando el DMA por SPI y luego en paralelo de varios puertos GPIO a varios arrays.


« Última modificación: 12 de Agosto de 2018, 05:05:33 por planeta9999 »

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3153
    • Pinballsp
Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
« Respuesta #8 en: 12 de Agosto de 2018, 23:10:47 »
 
Ya empecé a crear mi placa personalizada con el microcontrolador RT1020 en LQFP100 (el único disponible). Finalmente decidí poner la QSPI en el puerto GPIO_SD_B1, dejando el puerto GPIO_AD_B1 libre para JTAG o SWD.

He puesto puentes para configurar todo el sistema de arranque, ya que es una placa experimental para migrar uno de mis productos con Kinetis MK66. En la versión final, los fusibles se programarán internamente para el modo de arranque y todos estos puentes desaparecerán, dejando a su vez más puertos libres. No sé si reemplazar los jumpers con interruptores DIP, en general los jumpers parecen más prácticos en las placas de desarrollo.

También puse un conector USB para probar la carga de firmware encriptado usando la herramienta MFG. Todavía no sé si JTAG puede cargar una imagen de firmware encriptada o solo puede ser por USB/UART utilizando la herramienta MFG. He puesto tanto el conector JTAG como el SWD para probar ambos, y finalmente decidiré cuál prefiero.

Aún me queda bastante por rutear (aunque no es complicado), y creo que tendré que cambiar todos los condensadores de desacoplo, por unos de tamaño 0603, ahora son 0805, me parecen demasiado grandes y dejan poco espacio para el ruteo. Me  sorprende la cantidad de condensadores de desacoplo que necesita este microcontrolador, acostumbrado a poner, en los  STM32 o Kinetis, uno de 100nF por cada pin positivo, en el RT1020 hay montones, algunos en paralelo de varios valores.

Sigo los consejos de la "Guía de desarrollo de hardware" de NXP. Me llama la atención el comentario sobre el ajuste de la longitud de las pistas en el tarjetero SD, " For the SD module interfaces: o Match the data, clock, and CMD trace lengths (length delta depends on the bus rates). "

Creo que para la próxima semana puedo tener el diseño listo para enviarlo a JLCPCB, y en unos días tengo la placa para ensamblarlo aquí, y empiezo con las pruebas.







« Última modificación: 12 de Agosto de 2018, 23:12:53 por planeta9999 »

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3153
    • Pinballsp
Re:NXP RT1020, LQFP100/144, Cortex M7, 500Mhz, ya disponible.
« Respuesta #9 en: 13 de Agosto de 2018, 11:40:18 »
 
PCB terminado y enviado a JLCPCB. En una semana espero recibirla y empiezo el ensamblaje y pruebas. Finalmente he puesto todos los condensadores de desacoplo de tamaño 0603, y el cuarzo SMD de 5x3mm. También he puesto interruptores DIL, en vez de los jumpers, supongo que si se eligen de calidad no darán problemas, porque me experiencia con este tipo de interruptores de los chinos, fue bastante mala, fallaban muchisimo.