IMU-3000 and Hello World!

Firstly this is a new blog, so, hello world. There, now that's out of the way!

Onto the purpose of this post! I've recently got one of InvenSense's evaluation boards working and I'm told this is usually quite frustrating - and that I should document how I got it to work.

The board in question is an IMU-3000EVB evaluation board (featuring their IMU-3000 3-axis gyroscope and a KXTF9 accelerometer) which presents an I2C interface. Conveniently the board was given to me with an interface device "ARM-EVB" (or "ARM Reference Board"). This acts as a USB->I2C interface, allowing their demonstration software to talk to the IMU-3000.

For the hardware setup: use a USB Mini-B connector from your host computer to the ARM Reference Board, and this board connects to the IMU-3000EVB board via a 20-pin right angled connector. Done!

The software is trickier. QUICK NOTE: If you have Lego Mindstorms installed on your machine, there's a very good chance that you simply CAN NOT use this device. Lego Mindstorms and InvenSense have the same 'style' of device in their products, and it means Windows cannot tell them apart - and Lego gets priority when you connect the USB device, meaning the InvenSense software simply cannot connect to it. Uninstalling the Lego Mindstorms software may help, but the machine I was working on would not let me do that for some reason.
  1. Download their software from here (if this link dies, navigate to their homepage and then their product page - scroll down until you reach the "Triple Axis (X/Y/Z) MEMS Gyroscope" section. The whole page is formed like a table of data, and one of the columns is marked "Software". Even though the Software entry for the IMU-3000 is blank ("N/A"), it is in fact the same software as the MPU-3050, so you can download that one instead!)
  2. Unzip/extract the file you've downloaded and run it. There are two installers provided, one ends in "x64" or similar, this is the one you use on a 64 bit machine, the other if you are on a 32 bit machine. You will be guided through Your Average Installer (TM), nothing unusual here.
  3. When the installation is complete, you may find that running the program will result in an error that MSVCP100D.DLL is missing! I believe this is because the developers compiled it with Visual Studio 2010 in Debug mode instead of Release mode. The version of the software they distribute is a debug build, so computers don't have the required .DLLs unless they are development computers. If InvenSense ever read this, the solution is to re-compile the software in "Release" mode :)
  4. You now need MSVCP100D.DLL from somewhere. I used this website. The site looked a little suspicious to me, but I was using an unimportant computer and in a hurry - your mileage may vary. If you don't want to risk it, have a look for alternate sources for this file.
  5. When you've downloaded msvcp100d.dll from somewhere, copy msvcp100d.dll and paste it into the res/bin folder of where you installed their software. By default, the path is:
    C:/Program Files/InvenSense/PC Demo UI Lite v4.1.3 MPU3050/res/bin
    Paste the file in there and the installation is complete!
  6. Plug in your device. For me, on a Windows 7 Starter Edition machine, Windows Update launches and tries to find the appropriate drivers for the device online. Let it do its magic, it may take a while. Do not be alarmed if, as it did for me, Windows Update claims to have find the correct drivers and names them as something to do with GPS. Ignore it, the technology connecting it to the computer is seemingly rebranded hardware/firmware/vendor IDs that means Windows gets the name wrong, but the functionality is correct.
  7. You are, I believe, done! Running their software from the start menu (Listed under InvenSense) will launch a program that initially presents a sword/rapier looking object that moves as you move the device! Huzzah!
Relevant datasheets you may find useful (all found on their products page listed next to the IMU-3000, if these links become broken in the future):
Interesting note:
The ARM reference board acts, generally, as a USB->I2C interface. However, what's interesting to note is that it actually appears to the host computer as a USB->TTL converter, meaning it is usable with serial port libraries. Unfortunately, it appears the USB->TTL conversion is done by the ARM itself, and not within a specialised USB cable (such as those by FTDI), and you cannot therefore 'patch in' and talk directly to it as a USART peripheral embedded in a larger system. I suppose that would be superfluous given its I2C interface, already. Still, interesting!

I hope this helps somebody!

Popular posts from this blog

Virtualised Build & Test Environments for Embedded Software