The uM-FPU v3.1 is a floating point math coprocessor for your microcontroller. Send the data via SPI or I2C, and get an accurate result back without loading down your main micro!

**Note:** This unit is virtually identical to the DIP package unit, except it's in a SOIC-18 SMD package!

The uM-FPU V3.1 math coprocessor is a full featured standalone math engine that is capable of crunching even the toughest of mathematical equations without burdening your main microcontroller. The uM-FPU chip can be interfaced to virtually any microcontroller via a SPI interface (3-Wire) or I2C (2-Wire) interface, making it ideal for applications requiring floating point math, including sensor readings, robotic control, GPS, data transformations and other embedded control applications. The uM-FPU V3.1 chip supports 32-bit IEEE 754 compatible floating point and 32-bit integer operations.

Update: The uM-FPU now features Arduino / Freeduino compatible libraries. Make your Freeduino a math genius! |

**uM-FPU V3.1 Key Features**

- New for V3.1:
- Busy/Ready Status on OUT1 pin

- SEROUT / SERIN instructions for serial data transfer & GPS (NMEA) inputs
- WRBLK for transferring 32 bit values from microcontroller to uM-FPU
- RDBLK for transferring 32 bit values from uM-FPU to microcontroller
- MOP instructions (for matrix operations)
- STRBYTE for storing the lower 8 bits of register 0 to string buffer
- STRINC for incrementing the string selection point
- STRDEC for decrementing the string selection point
- RET,cc for conditional return from user-defined functions
- READVAR offers two new values for retrieval
- SETSTATUS
- Auto-Start Function Call for setting chip behavior on reset
- 10 to 20 times faster than uM-FPU V2 for all floating point operations
- Up to 70 times faster for advanced instructions
- 256 byte instruction buffer
- 128 general purpose 32-bit registers for storing floating point or long integer values
- 8 temporary 32-bit registers to support parentheses in calculations
- 2048 bytes Flash memory for user-defined functions
- 1024 bytes EEPROM for data storage or user-defined functions
- Supports 2.7V, 3.3V and 5V supply voltage
- I2C compatible interface up to 400 kHz
- SPI compatible interface up to 15 MHz
- Expanded instruction set, matrix operations, A/D conversion, string handling

**Supported Functions: **

Floating Point Operations

- Set, Add, Subtract, Multiply, Divide, Power
- Sqrt, Log, Log10, Exp, Exp10, Root
- Sin, Cos, Tan, Asin, Acos, Atan, Atan2
- Floor, Ceil, Round, Min, Max, Fraction, Mod
- Negate, Abs, Inverse
- Multiply and Accumulate, Multiply and Subtract from Accumulator
- Unit Conversions
- Read, Write, Compare, Status
**Long Integer Operations** - Set, Add, Subtract, Multiply, Divide, Unsigned Divide
- Negate, Abs, Increment, Decrement
- And, Or, Xor, Not, Shift, Test, Min, Max
- Read 8-bit, 16-bit, and 32-bit
- Read, Write, Compare, Unsigned Compare, Status
**Matrix Operations** - Scalar Add, Subtract, Multiply, Divide, Power
- Element-wise add, Subtract, Multiply, Divide, Power
- Matrix multiply
- Count, Sum, Average, Minimum, Maximum
- Matrix copy
**Fast Fourier Transform Operation** - uses matrix to store FFT data points
- single instruction if all FFT data points fit in matrix
- used iteratively in stages for larger FFT data sets
- inverse transform also supported
**Conversion Functions** - Convert 8-bit and 16-bit integers to floating point
- Convert 8-bit and 16-bit integers to long integer
- Convert long integer to floating point
- Convert floating point to long integer
- Convert floating point to formatted ASCII
- Convert long integer to formatted ASCII
- Convert ASCII to floating point
- Convert ASCII to long integer
- Serin, Serout for serial data communications
**User Defined Functions** - Can be stored in Flash or EEPROM memory
- Conditional execution
- Table lookup
- Reverse table lookup (float and long integer)
- Nth order polynomials
- Ret - for conditional returns
**Analog to Digital Conversion** - Two 12-bit A/D channels
- External input, timer or manual triggers
- Optional scaling and conversion to floating point
- Up to 10,000 samples per second
**String Handling** - Select, insert, append
- Search for characters
- Search for fields (e.g. parsing a GPS NMEA sentence)
- Convert selection to floating point or long integer
**Miscellaneous** - Checksum to calculate checksum for uM-FPU code
- Left & Right for saving/moving registers
- Readvar

**[Documentation]**: uM-FPU v3.1 with the BASIC Stamp (.pdf)**[Documentation]**: uM-FPU v3.1 used with PICAXE (.zip)**[Support Software]**: PICAXE Support Software for the uM FPU v3 (.zip)**[Documentation]**: um-FPU v3.1 with the SX (.pdf)