This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Suggestion on updated IC (BLE+MCU)

Hello,

We require a bluetooth low energy IC with MCU. Right now we are testing with nrf51422 development board. Could you please suggest any updated ICs with (BLE+MCU) ?

  • Hi Sujai!


    For an updated MCU with BLE, I would suggest the nRF52832. It has support for Bluetooth 5, more flash and more RAM.  However all our SoC's are what you describe as BLE + MCU.

    If you could describe a little more in detail what you are looking for, I could perhaps assist you in selecting the best one for your application.

    Best regards,

    Heidi

  • Thanks for the suggestion. We are using nRF51822 for now. In datasheet I found that any GPIO can be configured as SPI,UART and I2C, kindly let me know how to configure the GPIOs to SPI, UART and I2C.

  • Sure! I am using the newest version of the nRF5 SDK, v. 15.3. 

    So for SPI you can take a look at the SPI example under examples\peripheral\spi in the SDK. Here the specific pins (SCLK, MOSI, MISO, SS) are defined in the sdk_config.h file , and then they are configured by defining the spi_config instance is defined in the main function like this and calling nrf_drv_spi_init. 

    nrf_drv_spi_config_t spi_config = NRF_DRV_SPI_DEFAULT_CONFIG;
    spi_config.ss_pin   = SPI_SS_PIN;
    spi_config.miso_pin = SPI_MISO_PIN;
    spi_config.mosi_pin = SPI_MOSI_PIN;
    spi_config.sck_pin  = SPI_SCK_PIN;
    APP_ERROR_CHECK(nrf_drv_spi_init(&spi, &spi_config, spi_event_handler, NULL));

    For UART you can check out the UART example under examples\peripheral\uart in the SDK. Here the pins are configured in the main function by defining comm_params and calling APP_UART_FIFO_INIT.

    const app_uart_comm_params_t comm_params =
    {
        RX_PIN_NUMBER,
        TX_PIN_NUMBER,
        RTS_PIN_NUMBER,
        CTS_PIN_NUMBER,
        UART_HWFC,
        false,
    #if defined (UART_PRESENT)
        NRF_UART_BAUDRATE_115200
    #else
       NRF_UARTE_BAUDRATE_115200
    #endif
    };
    
    APP_UART_FIFO_INIT(&comm_params,
                       UART_RX_BUF_SIZE,
                       UART_TX_BUF_SIZE,
                       uart_error_handle,
                       APP_IRQ_PRIORITY_LOWEST,
                       err_code);

    where the pin numbers are in this case defined in pca10040.h. 

    For I2C, the TWI driver is used and there are numerous examples for this, for example examples\peripheral\twi_scanner. The pins are configured like this, by defining a twi_config instance and calling nrf_drv_twi_init. 

    const nrf_drv_twi_config_t twi_config = {
       .scl                = SCL_PIN_NUMBER,
       .sda                = SDA_PIN_NUMBER,
       .frequency          = NRF_DRV_TWI_FREQ_100K,
       .interrupt_priority = APP_IRQ_PRIORITY_HIGH,
       .clear_bus_init     = false
    };
    err_code = nrf_drv_twi_init(&m_twi, &twi_config, NULL, NULL);

    where the pin numbers are also set in pca10040.h

    Hope this helps!

  • Thanks for the reply.

    Let me give you some more details on our application. I wanted to develop a bluetooth dongle where it will communicate with multiple devices (3 to 4 bluetooth enabled devices) simultaneously (both read and write operation) at 5ms without any data loss. As I told you right now I have nrf51422 dk board and IC. Is it possible to do the same with this IC?  

  • Hi,

    7.5 ms is the lowest possible connection interval, so 5 ms is not possible.

    Have you considered using the nRF52840 Dongle for your application instead of using the nRF51422 and an external USB chip?

Related