This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

BOOSTXL-SENSORS: BOOSTXL-SENSORS + C2000 F28379D launchpad

Part Number: BOOSTXL-SENSORS


Hi, i am running the BOOSTXL-SENSORS pack with the Delfino F28379D launchpad, and i am controlling it with Simulink. I am able to succesfully read values from gyroscope and accelerometer (using these examples https://it.mathworks.com/help/supportpkg/texasinstrumentsc2000/examples/using-the-i2c-bus-to-access-sensors.html), but i can not figure out how to use the magnetometer (BMM150). The issue is that i can not understand which register i need to write in order to set it up to normal mode; I have tried looking for some dedicated libraries (in order to see what registers i need to write) on CCS but i can not find them.

Can anyone help?

  • When you say you don't know which register you need to write, do you mean which register on the BMM150? I'm not familiar with this magnetometer (this forum is specifically for C2000 support) and we don't have any examples specifically for the BOOSTXL-SENSORS+C2000, but have you tried looking at some of the example code for other devices to get some idea of the proper registers and write sequence?

    http://software-dl.ti.com/msp430/msp430_public_sw/mcu/msp430/BOOSTXL-SENSORS/latest/index_FDS.html

    Whitney

  • Hi Whitney, thank you for your reply. Yes, I am trying to communicate with the BMM150 present on the BOOSTXL, which is connected to the C2000 board via I2C communication. I have already seen the material on the link you sent me, but nothing seems to work for me. Looking at the specific documentation of the BMM150, if i have understood correctly the I2C default slave address is 0x10; then i need to switch the device from suspend mode (set when you power on) to sleep mode writing '1' on 0x4B register; then switch it from sleep to normal mode wirting '00' on 0x4C register and finally read some measurements from registers 0x42, 0x43... 0x47.

    I have tried to follow this path, but nothing seems to work

    Thank you,

    Riccardo

  • Can you get more specific about where things are going wrong? For example, are you able to look at the I2C signals with a logic analyzer or some other tool and confirm that the messages being sent conform to the protocol in the datasheet? Is the BMM150 sending NACKs? Is it sending back unexpected data?

    Whitney

  • I think that the problem is that I can not figure out how to set the BMM150 in normal operating mode. I can succesfully communicate via I2C with BMI160 (gyroscope+accelerometer) but using the same procedure for BMM150 does not work, because it is like a secondary I2C interface that needs to be accessed in other ways. In fact, reading the status bits, they indicate normal mode for BMI160 but suspended mode for  BMM150; in suspended mode it is not sending any signal, and in fact I get no data at all from it.

    If I have understood correctly, BMM160 is the primary I2C interface and BMM150 is connected to it as secondary I2C device. 

    I am writing the command register as reported at page 84 of the BMI datasheet https://ae-bst.resource.bosch.com/media/_tech/media/datasheets/BST-BMI160-DS000.pdf ; while for accelerometer and gyro the procedure works, this is not true for the magnetometer (BMM150).

    I am sorry if I am not able to give more detailed information.

    Thanks!

  • I found some software for the BMM160 here:

    http://www.ti.com/tool/download/SIMPLELINK-SDK-SENSOR-ACTUATOR-PLUGIN

    As it says, it's for a SimpleLink device, but I think looking at the files under source\ti\sail\bmi160 could be helpful. Your understanding that the BMM150 should be interacted with through the BMM160 appears to be correct from what I can gather from the documentation and code, but like I said, I'm not familiar with these devices. You may want to consider contacting Bosch support for their help unless you're able to confirm that it's the actual C2000 I2C that is to blame for the issue.

    Whitney

**Attention** This is a public forum