The 'Biggest Baddist' I/O board for Messageport - so far

Support for Arduino in combination with Air Manager and Air Player

Moderators: russ, Ralph

Post Reply
Message
Author
User avatar
jph
Posts: 2846
Joined: Fri Apr 10, 2020 12:50 pm
Location: Somewhere over the rainbow..

The 'Biggest Baddist' I/O board for Messageport - so far

#1 Post by jph »

Well, this one was mentioned in another post but after testing it fully deserves it's own thread here. It is a BEAST.
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 :shock: 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
IMG_20220720_133506168.jpg
The board
NUCLEOF746ZG_AM.jpg
The 'arduino' style Zio connector (You can also use the side connectors and add headers for access to ALL mcu pins)
Zio Pinout.jpg
.
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
if you then add this line to the beginning of your sketch then the Serial port in siMessagePort will now use Serial3 so no need to change the file each time, any other board, without the #define will use the normal serial port in messageport. Any board with an mBed enabled STLink will use Serial3.
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
Joe. CISSP, MSc.

User avatar
brodhaq
Posts: 152
Joined: Wed Jun 29, 2016 4:13 pm

Re: The 'Biggest Baddist' I/O board for Messageport - so far

#2 Post by brodhaq »

That is a cool board indeed! Will it work with AirManager like a normal arduino, without the use of MessagePort? Like hw_button_add etc.

Thanks!
Pavel
Pavel Brodský
Prague, Czech Republic

User avatar
jph
Posts: 2846
Joined: Fri Apr 10, 2020 12:50 pm
Location: Somewhere over the rainbow..

Re: The 'Biggest Baddist' I/O board for Messageport - so far

#3 Post by jph »

Hi Pavel,
Not at the moment. Each board used in Air Manager is individually programmed. It has to be specifically for that board. At some point in the future the guys may well decide to expand the range of support and move onto newer, cheaper and better products. The chip shortage and FAB issues have pushed the prices of the basic arduino products to silly levels and also we are seeing rapidly diminishing availability. The ST micro boards are the best supported boards in the industry. We will just have to wait and see how things progress and how availability of current staples like the mega continue. The older and smaller boards are already at capacity so at some point to add more features then certain boards will fail to be updated and become legacy, that was always going to happen but the chip fab issues have brought it forwards probaby 3 to 4 years. The days of a cheap mega are history. Even the Chinese clones are ridiculous prices and a shortage of 32u16 procesors mean that virtually any mega you buy will have a ch34x usb serial with its ascociated enum issues, not really a big problem, just annoying to hell. I simply refuse to buy them.
Joe
Joe. CISSP, MSc.

Post Reply