Just arrived and in testing. The ST Micro, STM32F746ZG NUCLEO 144 dev board.
This beast has a 144 pin MCU offering 99 I/O pins !. It costs 22 dollars - yes - 22 dollars - less than half the price of a 16 MHz Mega which has 256k flash and 8K ram.... At 216 MHz operation this is 200MHz FASTER than the mega It also has 1MB Flash and 320K of SRAM. It even has QSPI if you wanted to add more - as much as you could cope with ... not that you are ever likely to.
YES ! - Messageport works out of the box (with a small tweak to the src files for MP as the Serial link via the built in ST link is on Serial3())
ALL the libraries I have tried work fine., hell, it even includes an arduino shield header !.
It is fully programmable in the Arduino IDE by adding the core ST board support from ST Micro.
There are 99 I/O on board and 81 of them are available on the black headers that look like an Arduino socket with double rows. You can use 'normal' arduino naming conventions like A0, or D2, or D66, or you can use the actual port/pin name like PA7, PC14 etcetc, it's up to you. You can mix and match. You have 10 Analog (12bit) and 71 Digital I/O most with multiple function options (All the pin function options you would ever want imho). You program it just as you would any Arduino for 95% of the time.
I have tested the following so far and all work perfectly. Messageport (obviously) . Hardware SPI, Hardware I2C, (So ANY device that uses SPI or I2C will work), SDCard, Servo, Accelstepper (THE best Arduino lib for steppers by far - no contest), All the LED / LCD display drivers, The Main ADAFRUIT Graphic lib for OLED and TFTs. MCUfriend Shield drivers. Ethernet libs, the works. It just works.
It is a real rocket-ship and has STACKS of I/Os and Memory. Sorry to enthuse so much, but this is a total game changer.
Some data and links.
https://eu.mouser.com/ProductDetail/511-NUCLEO-F746ZG
https://www.st.com/en/evaluation-tools/ ... &id=DB3171
Board details
https://www.st.com/resource/en/user_man ... ronics.pdf
Size compared to UNO The board The 'arduino' style Zio connector (You can also use the side connectors and add headers for access to ALL mcu pins) .
to save messing around with Serial port changes in the src files then simply edit the
si_message_port_driver.cpp file in the messageport lib src directory as below to check for what family of boards is in use and then by adding just a single define to your sketch the correct serial port will be automatically selected and used by messageport
Change to
Code: Select all
#include "si_message_port_driver.h"
#include "Arduino.h"
#ifdef STM32_NUCLEO_BOARD // if using Nucleo board then STlink VCP is Serial3 // JPH
// simply add the line #define STM32_NUCLEO_BOARD to the beginning of your arduino sketch to use the alternate port
void si_message_port_driver_init() {
Serial3.begin(115200);
}
void si_message_port_driver_sync(struct SiCircularData* input_buffer, struct SiCircularData* output_buffer) {
uint8_t byte;
if ( (Serial3.availableForWrite() > 0) && (si_circular_poll(output_buffer, 0, &byte) == SI_OK) ) {
Serial3.write(byte);
}
while ( (Serial3.available() > 0) && (si_circular_data_free(input_buffer) > 0) ) {
si_circular_push(input_buffer, Serial3.read());
}
}
#else // Use the standard / original Serial port
void si_message_port_driver_init() {
Serial.begin(115200);
}
void si_message_port_driver_sync(struct SiCircularData* input_buffer, struct SiCircularData* output_buffer) {
uint8_t byte;
if ( (Serial.availableForWrite() > 0) && (si_circular_poll(output_buffer, 0, &byte) == SI_OK) ) {
Serial.write(byte);
}
while ( (Serial.available() > 0) && (si_circular_data_free(input_buffer) > 0) ) {
si_circular_push(input_buffer, Serial.read());
}
}
#endif
I could automate it based on the board name but this covers the family of boards with mBed that will work on Serial3 so its fine and it works.
Code: Select all
#define STM32_NUCLEO_BOARD
Awesome piece of kit, a couple more ordered.
And don't forget, it has FULL 10/100 Ethernet on board --- AND - USB Host / Client or OTG - and 216Mhz operation, 1MB flash and 320k SRAM and still only 22 dollars.
The board is 3.3V operation with fully 5V tolerant pins.
Freeking amazing. The best yet, by far.
Joe