uM-FPU V3.1 Floating Point support added for Nano

Micromega has released support routines and documentation for using the uM-FPU V3.1 floating point coprocessor with the BasicATOM Nano.

The uM-FPU V3.1 can be easily added to BasicATOM Nano to provide extensive floating point support. The uM-FPU V3.1 chip supports 32-bit IEEE 754 compatible floating point and 32-bit integer operations. Advanced instructions are provided for fast data transfer, matrix operations, multiply and accumulate, FFT calculations, serial I/O, NMEA sentence parsing and string handling. The chip also provides two 12-bit A/D channels, two digital outputs, an external event counter, Flash and EEPROM storage, and serial I/O up to 115,200 baud. The uM-FPU V3.1 chip is interfaced the the BasicATOM Nano using either I2C or SPI.

The BasicATOM Nano support routines and documentation can be found at:
micromegacorp.com/downloads.html

The FPU can also be used to interface directly to a GPS. It has NMEA sentence parsing which makes it easy to read the GPS data and perform floating point navigational calculations. This frees up the BasicATOM to handle other tasks such as robotic controls etc.

The FPU performs floating point calculations about 30 times faster than the Nano, so when there’s lots of calculations to do, or a limited time to do them, the FPU can add some extra processing power to complement the BasicATOM.

There’s lots of additional documentation and application notes on the Micromega website.

Regards,
Cam Thompson
Micromega Corporation
micromegacorp.com/

So it works by talking over an I2C or SPI interface? Seems like that would slow things down a bit. But it would off-load calcs. A bit like the first 8087 and AMD 3036 (?) coprocesssors, but a serial interface instead of a bus-interface.

Is it based on the PIC32 by chance?

Alan KM6VV

Yes, the interface is SPI or I2C so it can be used with virtually any microcontroller. The transfer time is an issue to be considered, but there’s a 256 byte instruction buffer which allows the transfer time and instruction execution time to overlap. There’s also an ability to store user-defined functions on the FPU. This can greatly increases the execution time since only data needs to be transmitted. In many applications, the microcontroller only transfers integer data to the FPU, with all the floating point calculations are done on the FPU. The FPU has it’s own set of 32-bit registers. There’s an extensive set of floating math functions supported, as well as additional features such as NMEA sentence parsing, matrix ops, FFT ops etc.

It’s a floating point coprocessor, so similar in concept to the 8087/30387, but designed to provide more comprehensive floating point capabilities, which allows it to be less dependent on the bus transfer times, and lowers the overhead on the microcontroller.

It’s based on the dsPIC.

-Cam

OK the dsPIC33 or something like that! Nice concept! Were there prices somewhere on the website, I didn’t have much time to look at everything.

Are the FP instructions ASM instructions, like that of the '87? Maybe we can do IK in the uM-FPU!

Thanks!

Alan KM6VV

I think Sparkfun sells some of them for about $20.
sparkfun.com/commerce/produc … ts_id=8450

There’s ASM instructions for the FPU, but there’s also an IDE that will generate code from standard math formulas. There’s a YouTube video of inverse kinematic using an older LynxMotion Lynx6 robotic arm. It’s on the main page of the Micromega website at:
micromegacorp.com/

There’s also Application Note 44 - Controlling a Lynx6 Robotic Arm that describes the application shown in the video.
micromegacorp.com/appnotes.html

-Cam

Thanks!

I’ll check it out more.

Alan KM6VV