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-CC2650: Bluetooth® SMART Keyboard Reference Design Module?

Part Number: LAUNCHXL-CC2650
Other Parts Discussed in Thread: CC2650, CC2640, TM4C1294NCPDT

Hi,

    I am going to evaluate the Bluetooth SMART Keyboard Reference Design. I am going to use CC2650 Launchpad for prototyping. I have questions below.

  1. After importing HIDKeyBoard and HIDKeyBoardStack, the default compiler set is version 5.2.0. Would there be no problems if I use version 5.2.8?
  2. I build the HIDKeyBoard and there are several invalid path. Besides correcting the paths, are there any factors to consider for the HIDKeyBoard and HIDKeyBoardStack to work with CC2650 Launchpad.
  3. Also, would this work with Windows 7 and Windows 10, and there will be no problem sending Alphabet Letters to Laptop PC through Bluetooth. I encountered an issue, see post below.

- kel

  • Hi,

    Instead of using the reference design, I would recommend you to start with hid_emu_kbd project in our official installer, which can be found at this default location once you download our BLE stack 2.2.1
    C:\ti\simplelink\ble_sdk_2_02_01_18\examples\cc2650em\hid_emu_kbd
  • Christin Lee said:
    Instead of using the reference design, I would recommend you to start with hid_emu_kbd project in our official installer, which can be found at this default location once you download our BLE stack 2.2.1
    C:\ti\simplelink\ble_sdk_2_02_01_18\examples\cc2650em\hid_emu_kbd

    Why do you recommend that which has only 2 keys for output left and right and it has limit of up to 8 keys only? It would need a lot of work to become a fully functional BLE Keyboard.

    The reference design has included software, which I assume works. We will be making a BLE Keyboard and my team chooses TI CC2650 or TI CC2640 as an option because of this Bluetooth SMART Keyboard Reference Design. Is there a problem with the included software? 

    - kel

  • The reference design is based on a BLE stack 2.1 which is about 1 and half year old, since then, there has been new BLE stack release and bug fixes.

    You can also start with our github example which is basically the same project as hid_emu_kbd but already migrant to CC2650 LP
    github.com/.../hid_emu_kbd
  • Hi Christin,

    So, I guess the best way to reuse the Bluetooth SMART Keyboard Reference Design software is to port the codes to hid_emu_kbd_cc2650lp_app?

    - kel
  • Hi,

        Bluetooth SMART Keyboard Reference Design software uses IO_CC26XX API's, see below. Is it still okay to use these C API's at ble stack 2.2.1.?

    void Board_scanKeys( uint8_t* pKeyDetectList, bool* pNewKey )
    {
        uint8_t i, iCnt = 0;
        uint32_t keyDetected = FALSE;
        uint32_t value = 0xFFFF;
    
        
            
        //Change All Output Pins to Input Pins
        for(iCnt=0;iCnt<MAX_NUM_OUTPUTS;iCnt++)
        {
            IO_CC26XX_setOutputDisable(gOutputPinMap[iCnt]);
            IO_CC26XX_setInput(gOutputPinMap[iCnt]);           
        }
        
        for(iCnt=0;iCnt<MAX_NUM_OUTPUTS;iCnt++)
        {
            IO_CC26XX_setOutput(gOutputPinMap[iCnt]);
            IO_CC26XX_setOutputEnable(gOutputPinMap[iCnt]);
            IO_CC26XX_setDataOutputDisable(gOutputPinMap[iCnt]);
            
            //Read DIN register to get Input port status
            value = IO_CC26XX_getPortInputValue();
            
            for(i=0;i<BOARD_INPUTCOUNT;i++)
            {
                uint32_t inPinBm = (0x1 << gInputPinMap[i]);
              
                // Check if Input Pin value is same as Output Pin
                if((value&inPinBm) == OFF)
                {
                    Board_checkIfNewKey(gOutpinMap[i].keys[iCnt], pKeyDetectList, pNewKey);
                    keyDetected = TRUE;
                } 
            }
            
            IO_CC26XX_setOutputDisable(gOutputPinMap[iCnt]);        
            IO_CC26XX_setInput(gOutputPinMap[iCnt]);
        }
            
        if(keyDetected == FALSE)
        {
            //Revert Back All Original Output Pins 
            for(iCnt=0;iCnt<MAX_NUM_OUTPUTS;iCnt++)
            {
                IO_CC26XX_setOutput(gOutputPinMap[iCnt]);
                IO_CC26XX_setOutputEnable(gOutputPinMap[iCnt]);
                IO_CC26XX_setDataOutputDisable(gOutputPinMap[iCnt]);
            }
            
            for(i=0;i< BOARD_INPUTCOUNT;i++)
            {
               
                //Enable Interrupt
                IO_CC26XX_setFallInterrupt(gInputPinMap[i]);
            }
        }
     
    }

    - kel

  • Hi,

    I have ported the Bluetooth SMART Keyboard Reference Design software codes to hid_emu_kbd_cc2650lp_app. The App Flash Used is 39962 and the Stack Flash Used is 65624. Total program size App + Stack is 105586. With some code cleanup maybe I can reduce the total program size 100K. The In-system programmable flash of CC2650 is 128K, so I have 28K of flash space left. The problem is I intend to connect a SPI to USB bridge to CC2650 to make this a USB/BLE Keyboard. Also I need to connect LED Drivers for RGB LEDS. With 28K of flash space left, I do not think that will be enough.

    Do you think that 28K of Flash Space will be enough to add code for SPI to USB bridge and code for LED Drivers? If not then I guess the design need to be changed to Host MCU + CC2640. At the moment I can only think of TM4C1294NCPDT for Host MCU because it has 4 x 256KB of Flash Space and has USB Support.

    - kel
  • I would recommend you to port this part of the code using TI-RTOS pin driver instead.
  • The LED is just either a PIN driver or a PWM driver which does not take that much flash. I think you should have enough space.
  • Hi Christin,

    Thanks for your advice. For LED Driver we might use a TI Chip www.ti.com/.../TLC59582, the communication is through SPI.

    - kel