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 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.
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.
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.
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