Sipeed M1W dock and ESP8285

Hi - I noticed in Sipeed M1W datasheet v1.1 on page 3 where Pin Map layout is
There are 4 additional WiFi pins:
WIFI_SPI_CS
WIFI_SPI_CLK
WIFI_SPI_MISO
WIFI_SPI_MOSI

Are they for data buffer transfers or it is interface similar to DM9051 which is SPI to WiFi ?
They told me WiFi on that module works with AT commands but UART transfer is very slow
so I am guessing those pins are used for faster transfers - but how.
Anyone could help me with the information and examples maybe?

Thanks!

M1w 1.1 add extra SPI wire to enable fast spi transfer.
but the program isn’t open, you need implement your self

You mean the firmware image on esp8285 doesn’t have any functionality ready to use with WiFi-SPI ?
In that case it is kind of very inconvenient

the spi interface is reserved for commercial usage, opensource usage is mostly AT command.

Recently I was able to compile and run WiFi communication esp8266 rtos sdk examples on esp8285 .
Now I am thinking what would be the best way of communicating with K210.
I am not sure if all modules have 8285 spi pins exposed but those with spi will have fastest transfers.
So assuming I am sending TCP stream from esp spi and then K210 reads them based on interrupt response. However I don’t know what function would be the best here for receiving the data.
Standalone SDK doesn’t have so many functions as RTOS so I’d go with that.
I appreciate any suggestions. Thanks!

Hi, if you use the standalone C SDK programming for Kendryte you could get up to 2.5Mpbs using UART between Kendryte K210 and ESP8285, right now i´m working with 1.5Mbps and it works fine, the only problem a have is that some times (randomly) the ESP8285 gets frezzed for 5 to 60 seconds waiting for a TCP response send by the server.

I could’t find a higher speed of data transmition between a MaixDock and a Web Server using 2.5Mbps instead of 1.5Mbps, thats why I’m working with 1.5Mbps, I think the problem is the quality and the strength of the WIFI signal sent by the WIFI Router.

The AT command specification for ESP8285 is the same as the ESP8266, beware of that documentation, is not clear and have omisions with the description of errors when sending messages via TCP.

Regards

Hi mchu - question - are you using only AT commands for WiFi?
Have you tried other way of communication? For example SPI transfer with K210 being slave device
By the way Zepan mentioned version 1.1 of m1w that has extra SPI pins connected however I am not sure how to identify that on the chip itself. Is there any marking or info on the board?
Anyway thanks!

Estoy usanso comunicación serial UART y comandos AT, si funciona pero a veces se queda bloqueado, debido a que la comunicación wifi no es estable por naturaleza incluso si estoy a 3 metros del access point, mi solución consiste en que el maix analiza un foto con una red neuronal y notifica su detección via HTTP Post a un servidor web. El error que tengo es basicamente causado por la mala comunicación via WiFi, el servidor recibe los datos, pero la respuesta del servidor no es recibida por el maix, para descartar que el problema es el servidor, reemplace el maix por un raspberrypi y todo funciona perfecto.

Lamentablemente tuve que dejar de usar MaixPy , este equipo es mas pequeño, consume menos energía y es menos costoso que un raspberry pi.

La buena noticia es que Sipeed tiene la version 2 del MaixPy, ya la compré, estoy esperando que llegue a mi casa y validare si funciona.

Otro tema el MaixPy tiene muy mala calidad de cámara, no pude mejorar la cámara, probé con 2 modelos que oficialmente soporta, otro problema que tiene el MaixPy es que no tiene un codificador/decodificador de jpeg en hardware, lo que lo hace muy lento para recibir información desde otro equipo y procesarla, intenté usar el raspberry pi junto con el MaixPy pero la decodificacion del jpeg era tan lenta que finalmente solo podía procesar 7 imagenes por segundo, no pude enviar la data en bruto via SPI tuve que usar UART, no he tenido tiempo para revisar que salió mal con el spi, pero ya no invertiré tiempo en MaixPy V1 , intentaré usar el MiaxPY V2 aunque es más caro parece una muuucho pejor alternativa.

Disculpa por los errores de digitación, escribí el mensaje anterior usando mi SmartPhone, ahora que estoy usando mi Laptop puedo escribir mejor.

Para programar mejor MaixPy para mi se debe usar lengueje C, pues tienes disponible mucho más memoria que usando Python, Yo inicie con Python pero la memoria era demasiado reducida, incluso solo se podía trabajar con imágenes de 320x240, con lenguaje C pude capturar imágenes con 640x480 puntos, las redes neuronales seguían siendo de 320x240, pero tenía más resolución, lamentablemente como escribí en mi mensaje anterior, la calidad de la cámara / sensor no permite obtener imágenes de buena calidad en lugares con poca iluminación, con luz solar o de día funcionaba mejor.

Con lenguaje C pude programar usando los dos núcleos, pero tuve problemas y no se pudo solucionar, de vez en cuando salía una excepción, esto debido a que mi solución ejecutaba una RED neuronal y en parelalo enviaba usando WIFI el resultado del análisis de la red neuronal a un servidor WEB, mi conclusión fue que el puerto UART no puede ser ejecutado desde el 2do nucleo o no funcionaban de manera correcta los semáforos para evitar usar en simultáneo el puerto UART.

Otra cosa que hice fue navegar por todo el código fuentedel intérprete de Python (por suerte seeedstudio lo comparte) de MaixPy para ver como se conectaban al WIFI, como programaban la pantalla, usaban el 2do núcleo y principalmente codificaban y decodificaban JPEG, en este último punto vi con decepción que no existía codificación/decodificación via hardware, era por software, y para acelerar este proceso usaban programación con los 2 nucleos, lo que interfería con mi solución, esto me obligó a modificar la librería JPEG para que solo trabaje con un núcleo.

Después de todo lo escrito creo que tuve una buena experiencia usando MaixPy V1.0 creo que es un buen equipo, pero no se aplica para mis necesidades por la baja resolución y mala calidad de sus cámaras/sonsores, por lo limitado de su memoria RAM, y principalmente por la mala solución de WIFI.

Espero que el MaixPy II al usar otra solución de WIFI sea más estable, cuesta aproximadamente US$29, es más caro que el MaixDock que usé pero aparentemente ha cubierto todas las limitaciones del MaixPy I, así que veremos como funciona este equipo.

UPPS i did’t see that you wrote in english, I used the WIFI interface with AT commands, by the way there are many versions of the AT commands MaixPy uses an old version, i didn’t try to update it, the last one has alot of new features and has timeout control, it could solve the problems a feced, but as I wrote in previous messages, i’m going to test MaixPy II for my next projects.

K210 does not have enough memory to do complex tasks in Python however in C most of advanced things are possible. I wish there was 3 x SPI 100Mhz each but maybe FreeRTOS has some reading from pin functions with DMA buffering. High speed GPIO is supposed to read with 100MHz+ easily.

Yes, that is why i started programming with C, because in Python you only have 512KB of free RAM, with C you have up to 8MB, the problem even working with C is that if you work with 640x480 images, you need to keep the uncompresed version in RAM, the scaled version (320x240) for inference, and finally the JPEG version if you want to transfer it. The biggest problem for me was the bug with WIFI and the poor quality of the camera / sensors.

640x480 resolution depends if you you use 16bit or 24bit. 16bit image is 600kb and 24bit is 900
I would try to send the camera feed directly to TFT with minimum buffering. Same thing with WIFI TCP transfer. I haven’t measured yet max speed on 8285 but on esp32 was able to reach over 10mbps easily
Right now Im trying to setup VSCode with freertos to compile some K210 code