I am using the UM6 orientation sensor with SPI interface. I would like to know how to verify that a command has executed while using SPI instead of UART. In the manual it says for commands, like SET_ACCEL_REF, that a Command_Complete packet is transmitted over the UART. I am not using the UART, but the SPI, so how do you know when the command is complete?
Other than that, no problems with SPI so far.
I have not been able to find a register to read to do this same function.
To see if the command is complete, you could send a dummy byte (0x00) after sending the command and see if the device has a meaningful response. Unfortunately, I am not familiar with the SPI interface of the UM6, and you might try contacting the manufacturer, CH Robotics, directly.
I have tried, but they have not been responding. Perhaps they are on vacation.
I’m sorry, I would have been the one to respond. I may have overlooked your email.
Unfortunately, the current version of the firmware provides no mechanism for indicating that a command was executed successfully over the SPI bus. I’ll look into the issue. I think that it could be an easy fix for the next firmware revision.
I also had sent a previous email to firstname.lastname@example.org on 7/10 about the spi pull up resistor not working and never got a reply. Perhaps there are email issues. I included a scope trace, and said: I am using the UM6-LT in SPI mode and am having some issues. I have installed a 1K pull-up resistor on the MOSI line.
When running I see that around 50% of the readings of register 5E are reported back as all 0, the rest being valid. I have tried various spi rates, and they make no difference.
Interestingly, when I attach a logic analyzer to the SPI lines, ALL data is reported back correctly, for reasons I do not understand. When I attach a scope I cannot see any difference in the signals with and without the logic analyzer.
In your data sheet you say “may require level shifting hardware or external pull-ups…”. Do you know of any cases where pull-ups did not work? I have tried adding resistance to the pull-up, but this does not work. I have attached a scope trace of the MOSI line during the entire register read sequence. I notice that when the SS line is low, the pull-up does not seem to function as expected (the level is still 3.3v), and adding more pull-up (lower resistor) does not change things other than elevate the 0 state slightly. I am interfacing to an 18F PIC at 5V and 3.3 as a high is marginal for this device and the pull-up does not seem to work.
I would really appreciate suggestions. Without knowing the driver circuit configuration for the UM6, I am really helpless to solve this.
The UM6 SPI pins are actively driven (push/pull) outputs. This appears to be an error in the datasheet. Because the pins are actively driven, an external pull-up will not affect the logic-level of the output. In order to interface with a 5V TTL device whose logic high threshold is too high for the UM6, level-shifting hardware will be required to convert the 3.3V output of the UM6 to 5V.
I’ll have the datasheet changed to correct this oversight.
Rockybooth, do mind sharing your code? I am trying to interface the UM6-Lt with a 3.3v arduino, and I can’t seem to get the establish proper SPI communication between the two devices.