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) ?
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!
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!