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.

LAUNCHXL-CC2640R2: design help

Part Number: LAUNCHXL-CC2640R2

Hi team,

Im having troubles with the integration of the LCD display of the sharp 128x128 Boosterpack. I'm using a CC2640R2 Board with an integrated BMI160 ACC Sensor from Sensor BoosterPack. My CCS version is 10.1 and SDK 4.30 (do not want to update to avoid misconfigurations). My project consist in the simple_peripheral + BMI160 example project. When I want to activate the LCD display by activating BOARD_DISPLAY_USE_LCD=1, the project does not work. However, as soon as I comment out the BMI160 initialization lines (e.g. bmi160_init(&s_bmi160); ) the LCD works again (what could be the correlation there?). I think it is rather a symptom from my project that uses BLE+BMI160 than related directly to the BMI160 or BLE project. Standalone simple_peripheral and BMI160 example project works fine with LCD. I've attached two ROV images, both with NOT commented bmi160_init(&s_bmi160); line. One with BOARD_DISPLAY_USE_LCD=0 and the other =1(the one with stackPeak 60).

thanks.

Best regards,

  • Hello,

    I have assigned an expert to help you with this query.

    Regards,

    Jan

  • Hi,

    You need to check if there are any pin usage conflicts.

    -kel

  • Hi,

    I'm sorry for the delay. 

    As Markel suggested, please verify your pin configuration.

    Thanks,

    Luis 

  • Hi,

    Honestly I doubt that it could be a PIN conflict, since the BMI160 uses I2C PINs and the LCD uses the SPI PINs. I checked the pin connection in the initialization functions, in the Board file( LAUNCHXL files, etc) and everything seems to be correctly configured. That is, I2C and SPI correctly assigned to their corresponding PIN's numbers. The BMI160 example works fine with the LCD but when implemented in simple_peripheral does not work any more (probably due to the BLE). Then, the simple_peripheral works fine with the LCD as well but as soon as the BMI160 is initialized stops to work. From this, I infer that is some kind of interference between the BMI160 protocol and the BLE, which does not allow the LCD to work properly. Is there another reason that could be causing this error?

    I have more information that could be useful to find the root of the problem...
    In my project if I comment out the simple_peripheral Task, the LCD works together with the BMI160. When I want to include the simple_peripheral Task, the LCD stops to work as soon as the ICall_registerApp is activated. I hope this gives more clue.

    Thanks a lot.

  • In my project if I comment out the simple_peripheral Task, the LCD works together with the BMI160.

    Do you initialize the BMI160 at SimplePeripheral_init() or at main()?

    -kel

  • Zhnghui,

    Unfortunately, there is no direct, easy answer to this. You'll have to debug this issue. We have a really good guide to do just that.

    I can only give you a few pointers and ask you questions:

    • Please have it super clear what is your schematic of the overall solution, and then verify that the pin configuration of the firmware actually matches it. But, pleased verify the configuration after all the initializations have been done. If you are calling multiple init functions, it is possible that one overrides the other one.
    • Check out your interrupts, both hwi and swi. There is a section on that on the User's Guide.
    • Please check and have it super clear your TI-RTOS tasks. How many you have, which are they, what's their status, etc. There could be conflict, or heap or stack issues.

    Also, please clarify if you are using the BLE3 or the BLE5 stack.

    Thank you.

    Luis

  • Hi,

    The BMI160 is initialized in a separated extra Task before SimplePeripheral_createTask();
    Both Tasks work fine together by setting BOARD_DISPLAY_USE_LCD=0.

    Best regards,