<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>nRF52832 with BMX055</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/37057/nrf52832-with-bmx055</link><description>Hello everyone! 
 I&amp;#39;m using this board: https://item.taobao.com/item.htm?spm=a230r.1.14.16.f3db6e4e1De39A&amp;amp;id=560311112293&amp;amp;ns=1&amp;amp;abbucket=7#detail 
 It&amp;#39;s configured 4-wire SPI follow this table 
 I can&amp;#39;t read data out of BMX055. Can everyone help me!. I</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Thu, 08 Oct 2020 21:54:37 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/37057/nrf52832-with-bmx055" /><item><title>RE: nRF52832 with BMX055</title><link>https://devzone.nordicsemi.com/thread/273880?ContentTypeID=1</link><pubDate>Thu, 08 Oct 2020 21:54:37 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6264d662-9bed-47e0-8d28-1b5a4868bdfe</guid><dc:creator>pure-gold</dc:creator><description>&lt;p&gt;Thanks, it will be helpful :)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 with BMX055</title><link>https://devzone.nordicsemi.com/thread/273878?ContentTypeID=1</link><pubDate>Thu, 08 Oct 2020 21:42:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:8feb1ff7-2636-477d-81d8-0590253f9bdf</guid><dc:creator>tom-fleet</dc:creator><description>&lt;p&gt;It&amp;#39;s been a little while since I&amp;#39;ve had these modules on my desk!&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#39;ll see what I can turn up for you.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 with BMX055</title><link>https://devzone.nordicsemi.com/thread/273875?ContentTypeID=1</link><pubDate>Thu, 08 Oct 2020 21:08:51 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ba17d5b2-8e38-4f7a-8542-d0c442f28b59</guid><dc:creator>pure-gold</dc:creator><description>&lt;p&gt;&lt;span&gt;Tom,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;I have few of&amp;nbsp;these&amp;nbsp;modules, how do you access them?&lt;/span&gt;&lt;br /&gt;&lt;span&gt;What is the I2C configuration?&lt;/span&gt;&lt;br /&gt;&lt;span&gt;I&amp;#39;ve looked at the board and it looks like it connect to pins 6 &amp;amp; 11, but twi scanner can&amp;#39;t find it.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 with BMX055</title><link>https://devzone.nordicsemi.com/thread/234276?ContentTypeID=1</link><pubDate>Thu, 13 Feb 2020 19:33:17 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5fa09c17-a6ae-49cc-b22b-319ffc24f4e6</guid><dc:creator>tom-fleet</dc:creator><description>&lt;p&gt;Hi Dariusz,&lt;/p&gt;
&lt;p&gt;Pretty much every peripheral I/O (with the exception of the NFC and analog peripheral I/O) can be routed to any of the available pins on the package.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;See here for details;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devzone.nordicsemi.com/f/nordic-q-a/14055/nrf52-pinout-or-dedicated-pins?ReplyFilter=Answers&amp;amp;ReplySortBy=Answers&amp;amp;ReplySortOrder=Descending"&gt;https://devzone.nordicsemi.com/f/nordic-q-a/14055/nrf52-pinout-or-dedicated-pins?ReplyFilter=Answers&amp;amp;ReplySortBy=Answers&amp;amp;ReplySortOrder=Descending&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It has been some time since I used the modules, so I do not have the specific configuration to hand for that module I am afraid.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If you are referring to this specifc module, let me know, and I&amp;#39;ll dig out my target board and try get some mappings for you!&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 with BMX055</title><link>https://devzone.nordicsemi.com/thread/234251?ContentTypeID=1</link><pubDate>Thu, 13 Feb 2020 16:11:02 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ac9bdde7-4773-452a-aa0d-76a99e4416bd</guid><dc:creator>Dariusz</dc:creator><description>&lt;p&gt;Hi tom-fleet&lt;/p&gt;
&lt;p&gt;&lt;span class="tlid-translation translation" lang="en"&gt;&lt;span class="" title=""&gt;Which pins of nrf are used for I2C? &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 with BMX055</title><link>https://devzone.nordicsemi.com/thread/161524?ContentTypeID=1</link><pubDate>Wed, 12 Dec 2018 17:51:52 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:98a16c52-239f-4919-9156-bdc0b3feef02</guid><dc:creator>tom-fleet</dc:creator><description>&lt;p&gt;Hi All,&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I just received a few of these modules, and can report that the table above is incorrect.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Pin 7 (PS) of the BMX055 is tied to *ground*, which means the device expects to operate in I2C mode, and should be addressed as such.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;I have data streaming from the board, with code based on one of the several BMX055 examples on github.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;BR,&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Tom&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 with BMX055</title><link>https://devzone.nordicsemi.com/thread/142551?ContentTypeID=1</link><pubDate>Thu, 02 Aug 2018 08:59:27 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:cd8425ff-9499-4555-9612-16dd0e05de43</guid><dc:creator>J&amp;#248;rgen Holmefjord</dc:creator><description>&lt;p&gt;The more interesting thing is how did you write the SPI read/write functions for the&amp;nbsp; &lt;a href="https://github.com/BoschSensortec"&gt;BoschSensortec&lt;/a&gt;&amp;nbsp;library?&amp;nbsp;The library &lt;a href="https://github.com/BoschSensortec/BMA2x2_driver#driver-files-information"&gt;does not provide these functions for you&lt;/a&gt;, as these are platform specific. The file &lt;a href="https://github.com/BoschSensortec/BMA2x2_driver/blob/master/bma2x2_support.c"&gt;bma2x2_support.c&lt;/a&gt;&amp;nbsp;show an example of how to implement this.&lt;/p&gt;
&lt;p&gt;Have you implemented your own read/write functions?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 with BMX055</title><link>https://devzone.nordicsemi.com/thread/142542?ContentTypeID=1</link><pubDate>Thu, 02 Aug 2018 08:42:31 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:98ade8ee-6411-480f-91c7-a7be8f14ed45</guid><dc:creator>Vo Huu</dc:creator><description>&lt;p&gt;Oh sorry, following your question&lt;/p&gt;
&lt;p&gt;-&amp;nbsp;&lt;span&gt;I read value by RX and it is -127. I tried to change value of CS pin but it did not work&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;- value is -127 and never change&lt;/p&gt;
&lt;p&gt;- I don&amp;#39;t know how to check error codes (I&amp;#39;m newbie :( )&lt;/p&gt;
&lt;p&gt;- yes, i did. But can&amp;#39;t find anything&lt;/p&gt;
&lt;p&gt;- No&lt;/p&gt;
&lt;p&gt;This is my code&amp;nbsp;&lt;pre class="ui-code" data-mode="c_cpp"&gt;#include &amp;lt;stdint.h&amp;gt;
#include &amp;lt;string.h&amp;gt;
#include &amp;quot;nordic_common.h&amp;quot;
#include &amp;quot;nrf.h&amp;quot;
#include &amp;quot;ble_hci.h&amp;quot;
#include &amp;quot;ble_advdata.h&amp;quot;
#include &amp;quot;ble_advertising.h&amp;quot;
#include &amp;quot;ble_conn_params.h&amp;quot;
#include &amp;quot;softdevice_handler.h&amp;quot;
#include &amp;quot;app_timer.h&amp;quot;
#include &amp;quot;app_button.h&amp;quot;
#include &amp;quot;ble_nus.h&amp;quot;
#include &amp;quot;app_uart.h&amp;quot;
#include &amp;quot;app_util_platform.h&amp;quot;
#include &amp;quot;bsp.h&amp;quot;
#include &amp;quot;bsp_btn_ble.h&amp;quot;
#include &amp;quot;nrf_delay.h&amp;quot;
#include &amp;quot;nrf_drv_spi.h&amp;quot;
#include &amp;quot;bma2x2.h&amp;quot;
#include &amp;quot;bma2x2.h&amp;quot;
#include &amp;quot;bmg160.h&amp;quot;
#include &amp;quot;bmm150.h&amp;quot;
#include &amp;quot;bmm150_defs.h&amp;quot;

#define IS_SRVC_CHANGED_CHARACT_PRESENT 0 /**&amp;lt; Include the service_changed characteristic. If not enabled, the server&amp;#39;s database cannot be changed for the lifetime of the device. */

#define CENTRAL_LINK_COUNT 0 /**&amp;lt; Number of central links used by the application. When changing this number remember to adjust the RAM settings*/
#define PERIPHERAL_LINK_COUNT 1 /**&amp;lt; Number of peripheral links used by the application. When changing this number remember to adjust the RAM settings*/

#define DEVICE_NAME &amp;quot;nRF52832_BMX055&amp;quot; /**&amp;lt; Name of device. Will be included in the advertising data. */
#define NUS_SERVICE_UUID_TYPE BLE_UUID_TYPE_VENDOR_BEGIN /**&amp;lt; UUID type for the Nordic UART Service (vendor specific). */

#define APP_ADV_INTERVAL 64 /**&amp;lt; The advertising interval (in units of 0.625 ms. This value corresponds to 40 ms). */
#define APP_ADV_TIMEOUT_IN_SECONDS 180 /**&amp;lt; The advertising timeout (in units of seconds). */

#define APP_TIMER_PRESCALER 0 /**&amp;lt; Value of the RTC1 PRESCALER register. */
#define APP_TIMER_OP_QUEUE_SIZE 4 /**&amp;lt; Size of timer operation queues. */

#define MIN_CONN_INTERVAL MSEC_TO_UNITS(20, UNIT_1_25_MS) /**&amp;lt; Minimum acceptable connection interval (20 ms), Connection interval uses 1.25 ms units. */
#define MAX_CONN_INTERVAL MSEC_TO_UNITS(75, UNIT_1_25_MS) /**&amp;lt; Maximum acceptable connection interval (75 ms), Connection interval uses 1.25 ms units. */
#define SLAVE_LATENCY 0 /**&amp;lt; Slave latency. */
#define CONN_SUP_TIMEOUT MSEC_TO_UNITS(4000, UNIT_10_MS) /**&amp;lt; Connection supervisory timeout (4 seconds), Supervision Timeout uses 10 ms units. */
#define FIRST_CONN_PARAMS_UPDATE_DELAY APP_TIMER_TICKS(5000, APP_TIMER_PRESCALER) /**&amp;lt; Time from initiating event (connect or start of notification) to first time sd_ble_gap_conn_param_update is called (5 seconds). */
#define NEXT_CONN_PARAMS_UPDATE_DELAY APP_TIMER_TICKS(30000, APP_TIMER_PRESCALER) /**&amp;lt; Time between each call to sd_ble_gap_conn_param_update after the first call (30 seconds). */
#define MAX_CONN_PARAMS_UPDATE_COUNT 3 /**&amp;lt; Number of attempts before giving up the connection parameter negotiation. */

#define DEAD_BEEF 0xDEADBEEF /**&amp;lt; Value used as error code on stack dump, can be used to identify stack location on stack unwind. */

#define UART_TX_BUF_SIZE 256 /**&amp;lt; UART TX buffer size. */
#define UART_RX_BUF_SIZE 256 /**&amp;lt; UART RX buffer size. */


static ble_nus_t m_nus; /**&amp;lt; Structure to identify the Nordic UART Service. */
static uint16_t m_conn_handle = BLE_CONN_HANDLE_INVALID; /**&amp;lt; Handle of the current connection. */

static ble_uuid_t m_adv_uuids[] = {{BLE_UUID_NUS_SERVICE, NUS_SERVICE_UUID_TYPE}}; /**&amp;lt; Universally unique service identifier. */

static const nrf_drv_spi_t Spi = NRF_DRV_SPI_INSTANCE(1);

static struct bma2x2_t bma2x2;



void spi_init(void)
{
uint32_t err_code;
nrf_drv_spi_config_t SpiCfg = NRF_DRV_SPI_DEFAULT_CONFIG(1);
SpiCfg.sck_pin = SPIM1_SCK_PIN;
SpiCfg.mosi_pin = SPIM1_MOSI_PIN;
SpiCfg.miso_pin = SPIM1_MISO_PIN;
SpiCfg.frequency = NRF_DRV_SPI_FREQ_8M;

nrf_gpio_pin_dir_set(SPIM1_SS1_PIN, NRF_GPIO_PIN_DIR_OUTPUT);
nrf_gpio_cfg_output(SPIM1_SS1_PIN); //Acel CS
nrf_gpio_pin_clear(SPIM1_SS1_PIN);

nrf_gpio_pin_dir_set(SPIM1_SS2_PIN, NRF_GPIO_PIN_DIR_OUTPUT);
nrf_gpio_cfg_output(SPIM1_SS2_PIN); //Acel CS
nrf_gpio_pin_clear(SPIM1_SS2_PIN);

nrf_gpio_pin_dir_set(SPIM1_SS3_PIN, NRF_GPIO_PIN_DIR_OUTPUT);
nrf_gpio_cfg_output(SPIM1_SS3_PIN); //Acel CS
nrf_gpio_pin_clear(SPIM1_SS3_PIN);

err_code=nrf_drv_spi_init(&amp;amp;Spi, &amp;amp;SpiCfg, NULL);
APP_ERROR_CHECK(err_code);
}


void init_sensors(void)
{

bma2x2_init(&amp;amp;bma2x2);

}


/**@brief Function for assert macro callback.
*
* @details This function will be called in case of an assert in the SoftDevice.
*
* @warning This handler is an example only and does not fit a final product. You need to analyse 
* how your product is supposed to react in case of Assert.
* @warning On assert from the SoftDevice, the system can only recover on reset.
*
* @param[in] line_num Line number of the failing ASSERT call.
* @param[in] p_file_name File name of the failing ASSERT call.
*/
void assert_nrf_callback(uint16_t line_num, const uint8_t * p_file_name)
{
app_error_handler(DEAD_BEEF, line_num, p_file_name);
}


/**@brief Function for the GAP initialization.
*
* @details This function will set up all the necessary GAP (Generic Access Profile) parameters of 
* the device. It also sets the permissions and appearance.
*/
static void gap_params_init(void)
{
uint32_t err_code;
ble_gap_conn_params_t gap_conn_params;
ble_gap_conn_sec_mode_t sec_mode;

BLE_GAP_CONN_SEC_MODE_SET_OPEN(&amp;amp;sec_mode);

err_code = sd_ble_gap_device_name_set(&amp;amp;sec_mode,
(const uint8_t *) DEVICE_NAME,
strlen(DEVICE_NAME));
APP_ERROR_CHECK(err_code);

memset(&amp;amp;gap_conn_params, 0, sizeof(gap_conn_params));

gap_conn_params.min_conn_interval = MIN_CONN_INTERVAL;
gap_conn_params.max_conn_interval = MAX_CONN_INTERVAL;
gap_conn_params.slave_latency = SLAVE_LATENCY;
gap_conn_params.conn_sup_timeout = CONN_SUP_TIMEOUT;

err_code = sd_ble_gap_ppcp_set(&amp;amp;gap_conn_params);
APP_ERROR_CHECK(err_code);
}


/**@brief Function for handling the data from the Nordic UART Service.
*
* @details This function will process the data received from the Nordic UART BLE Service and send
* it to the UART module.
*
* @param[in] p_nus Nordic UART Service structure.
* @param[in] p_data Data to be send to UART module.
* @param[in] length Length of the data.
*/
/**@snippet [Handling the data received over BLE] */
static void nus_data_handler(ble_nus_t * p_nus, uint8_t * p_data, uint16_t length)
{
for (uint32_t i = 0; i &amp;lt; length; i++)
{
while(app_uart_put(p_data[i]) != NRF_SUCCESS);
}
while(app_uart_put(&amp;#39;\n&amp;#39;) != NRF_SUCCESS);
}
/**@snippet [Handling the data received over BLE] */


/**@brief Function for initializing services that will be used by the application.
*/
static void services_init(void)
{
uint32_t err_code;
ble_nus_init_t nus_init;

memset(&amp;amp;nus_init, 0, sizeof(nus_init));

nus_init.data_handler = nus_data_handler;

err_code = ble_nus_init(&amp;amp;m_nus, &amp;amp;nus_init);
APP_ERROR_CHECK(err_code);
}


/**@brief Function for handling an event from the Connection Parameters Module.
*
* @details This function will be called for all events in the Connection Parameters Module
* which are passed to the application.
*
* @note All this function does is to disconnect. This could have been done by simply setting
* the disconnect_on_fail config parameter, but instead we use the event handler
* mechanism to demonstrate its use.
*
* @param[in] p_evt Event received from the Connection Parameters Module.
*/
static void on_conn_params_evt(ble_conn_params_evt_t * p_evt)
{
uint32_t err_code;

if(p_evt-&amp;gt;evt_type == BLE_CONN_PARAMS_EVT_FAILED)
{
err_code = sd_ble_gap_disconnect(m_conn_handle, BLE_HCI_CONN_INTERVAL_UNACCEPTABLE);
APP_ERROR_CHECK(err_code);
}
}


/**@brief Function for handling errors from the Connection Parameters module.
*
* @param[in] nrf_error Error code containing information about what went wrong.
*/
static void conn_params_error_handler(uint32_t nrf_error)
{
APP_ERROR_HANDLER(nrf_error);
}


/**@brief Function for initializing the Connection Parameters module.
*/
static void conn_params_init(void)
{
uint32_t err_code;
ble_conn_params_init_t cp_init;

memset(&amp;amp;cp_init, 0, sizeof(cp_init));

cp_init.p_conn_params = NULL;
cp_init.first_conn_params_update_delay = FIRST_CONN_PARAMS_UPDATE_DELAY;
cp_init.next_conn_params_update_delay = NEXT_CONN_PARAMS_UPDATE_DELAY;
cp_init.max_conn_params_update_count = MAX_CONN_PARAMS_UPDATE_COUNT;
cp_init.start_on_notify_cccd_handle = BLE_GATT_HANDLE_INVALID;
cp_init.disconnect_on_fail = false;
cp_init.evt_handler = on_conn_params_evt;
cp_init.error_handler = conn_params_error_handler;

err_code = ble_conn_params_init(&amp;amp;cp_init);
APP_ERROR_CHECK(err_code);
}


/**@brief Function for putting the chip into sleep mode.
*
* @note This function will not return.
*/
static void sleep_mode_enter(void)
{
uint32_t err_code = bsp_indication_set(BSP_INDICATE_IDLE);
APP_ERROR_CHECK(err_code);

// Prepare wakeup buttons.
err_code = bsp_btn_ble_sleep_mode_prepare();
APP_ERROR_CHECK(err_code);

// Go to system-off mode (this function will not return; wakeup will cause a reset).
err_code = sd_power_system_off();
APP_ERROR_CHECK(err_code);
}

/**@brief Function for handling advertising events.
*
* @details This function will be called for advertising events which are passed to the application.
*
* @param[in] ble_adv_evt Advertising event.
*/
static void on_adv_evt(ble_adv_evt_t ble_adv_evt)
{
uint32_t err_code;

switch (ble_adv_evt)
{
case BLE_ADV_EVT_FAST:
err_code = bsp_indication_set(BSP_INDICATE_ADVERTISING);
APP_ERROR_CHECK(err_code);
break;
case BLE_ADV_EVT_IDLE:
sleep_mode_enter();
break;
default:
break;
}
}


/**@brief Function for the application&amp;#39;s SoftDevice event handler.
*
* @param[in] p_ble_evt SoftDevice event.
*/
static void on_ble_evt(ble_evt_t * p_ble_evt)
{
uint32_t err_code;

switch (p_ble_evt-&amp;gt;header.evt_id)
{
case BLE_GAP_EVT_CONNECTED:
err_code = bsp_indication_set(BSP_INDICATE_CONNECTED);
APP_ERROR_CHECK(err_code);
m_conn_handle = p_ble_evt-&amp;gt;evt.gap_evt.conn_handle;
break;

case BLE_GAP_EVT_DISCONNECTED:
err_code = bsp_indication_set(BSP_INDICATE_IDLE);
APP_ERROR_CHECK(err_code);
m_conn_handle = BLE_CONN_HANDLE_INVALID;
break;

case BLE_GAP_EVT_SEC_PARAMS_REQUEST:
// Pairing not supported
err_code = sd_ble_gap_sec_params_reply(m_conn_handle, BLE_GAP_SEC_STATUS_PAIRING_NOT_SUPP, NULL, NULL);
APP_ERROR_CHECK(err_code);
break;

case BLE_GATTS_EVT_SYS_ATTR_MISSING:
// No system attributes have been stored.
err_code = sd_ble_gatts_sys_attr_set(m_conn_handle, NULL, 0, 0);
APP_ERROR_CHECK(err_code);
break;

default:
// No implementation needed.
break;
}
}


/**@brief Function for dispatching a SoftDevice event to all modules with a SoftDevice 
* event handler.
*
* @details This function is called from the SoftDevice event interrupt handler after a 
* SoftDevice event has been received.
*
* @param[in] p_ble_evt SoftDevice event.
*/
static void ble_evt_dispatch(ble_evt_t * p_ble_evt)
{
ble_conn_params_on_ble_evt(p_ble_evt);
ble_nus_on_ble_evt(&amp;amp;m_nus, p_ble_evt);
on_ble_evt(p_ble_evt);
ble_advertising_on_ble_evt(p_ble_evt);
bsp_btn_ble_on_ble_evt(p_ble_evt);

}


/**@brief Function for the SoftDevice initialization.
*
* @details This function initializes the SoftDevice and the BLE event interrupt.
*/
static void ble_stack_init(void)
{
uint32_t err_code;

nrf_clock_lf_cfg_t clock_lf_cfg = NRF_CLOCK_LFCLKSRC;

// Initialize SoftDevice.
SOFTDEVICE_HANDLER_INIT(&amp;amp;clock_lf_cfg, NULL);

ble_enable_params_t ble_enable_params;
err_code = softdevice_enable_get_default_config(CENTRAL_LINK_COUNT,
PERIPHERAL_LINK_COUNT,
&amp;amp;ble_enable_params);
APP_ERROR_CHECK(err_code);

//Check the ram settings against the used number of links
CHECK_RAM_START_ADDR(CENTRAL_LINK_COUNT,PERIPHERAL_LINK_COUNT);
// Enable BLE stack.
err_code = softdevice_enable(&amp;amp;ble_enable_params);
APP_ERROR_CHECK(err_code);

// Subscribe for BLE events.
err_code = softdevice_ble_evt_handler_set(ble_evt_dispatch);
APP_ERROR_CHECK(err_code);
}


/**@brief Function for handling events from the BSP module.
*
* @param[in] event Event generated by button press.
*/
void bsp_event_handler(bsp_event_t event)
{
uint32_t err_code;
switch (event)
{
case BSP_EVENT_SLEEP:
sleep_mode_enter();
break;

case BSP_EVENT_DISCONNECT:
err_code = sd_ble_gap_disconnect(m_conn_handle, BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION);
if (err_code != NRF_ERROR_INVALID_STATE)
{
APP_ERROR_CHECK(err_code);
}
break;

case BSP_EVENT_WHITELIST_OFF:
err_code = ble_advertising_restart_without_whitelist();
if (err_code != NRF_ERROR_INVALID_STATE)
{
APP_ERROR_CHECK(err_code);
}
break;

default:
break;
}
}


/**@brief Function for handling app_uart events.
*
* @details This function will receive a single character from the app_uart module and append it to 
* a string. The string will be be sent over BLE when the last character received was a 
* &amp;#39;new line&amp;#39; i.e &amp;#39;\n&amp;#39; (hex 0x0D) or if the string has reached a length of 
* @ref NUS_MAX_DATA_LENGTH.
*/
/**@snippet [Handling the data received over UART] */
void uart_event_handle(app_uart_evt_t * p_event)
{
static uint8_t data_array[BLE_NUS_MAX_DATA_LEN];
static uint8_t index = 0;
uint32_t err_code;

switch (p_event-&amp;gt;evt_type)
{
case APP_UART_DATA_READY:
UNUSED_VARIABLE(app_uart_get(&amp;amp;data_array[index]));
index++;
if(index&amp;lt;=BLE_NUS_MAX_DATA_LEN)
{
if ((data_array[index - 1] == &amp;#39;\n&amp;#39;) || (index &amp;gt;= (BLE_NUS_MAX_DATA_LEN)))
{

err_code = ble_nus_string_send(&amp;amp;m_nus, data_array, index);
if (err_code != NRF_ERROR_INVALID_STATE)
{
APP_ERROR_CHECK(err_code);
}

index = 0;
}
}
if (index&amp;gt;BLE_NUS_MAX_DATA_LEN)
{
uint8_t temp=1;
do
{
err_code = ble_nus_string_send(&amp;amp;m_nus, data_array, temp*20);
if (err_code != NRF_ERROR_INVALID_STATE)
{
APP_ERROR_CHECK(err_code);
}

temp = temp +1;
}
while (data_array[index - 1] != &amp;#39;\n&amp;#39;);
}

break;

case APP_UART_COMMUNICATION_ERROR:
APP_ERROR_HANDLER(p_event-&amp;gt;data.error_communication);
break;

case APP_UART_FIFO_ERROR:
APP_ERROR_HANDLER(p_event-&amp;gt;data.error_code);
break;

default:
break;
}
}
/**@snippet [Handling the data received over UART] */


/**@brief Function for initializing the UART module.
*/
/**@snippet [UART Initialization] */
static void uart_init(void)
{
uint32_t err_code;
const app_uart_comm_params_t comm_params =
{
RX_PIN_NUMBER,
TX_PIN_NUMBER,
RTS_PIN_NUMBER,
CTS_PIN_NUMBER,
APP_UART_FLOW_CONTROL_DISABLED,//APP_UART_FLOW_CONTROL_ENABLED,
false,
UART_BAUDRATE_BAUDRATE_Baud115200
};

APP_UART_FIFO_INIT( &amp;amp;comm_params,
UART_RX_BUF_SIZE,
UART_TX_BUF_SIZE,
uart_event_handle,
APP_IRQ_PRIORITY_LOW,
err_code);
APP_ERROR_CHECK(err_code);
}
/**@snippet [UART Initialization] */


/**@brief Function for initializing the Advertising functionality.
*/
static void advertising_init(void)
{
uint32_t err_code;
ble_advdata_t advdata;
ble_advdata_t scanrsp;

// Build advertising data struct to pass into @ref ble_advertising_init.
memset(&amp;amp;advdata, 0, sizeof(advdata));
advdata.name_type = BLE_ADVDATA_FULL_NAME;
advdata.include_appearance = false;
advdata.flags = BLE_GAP_ADV_FLAGS_LE_ONLY_LIMITED_DISC_MODE;

memset(&amp;amp;scanrsp, 0, sizeof(scanrsp));
scanrsp.uuids_complete.uuid_cnt = sizeof(m_adv_uuids) / sizeof(m_adv_uuids[0]);
scanrsp.uuids_complete.p_uuids = m_adv_uuids;

ble_adv_modes_config_t options = {0};
options.ble_adv_fast_enabled = BLE_ADV_FAST_ENABLED;
options.ble_adv_fast_interval = APP_ADV_INTERVAL;
options.ble_adv_fast_timeout = APP_ADV_TIMEOUT_IN_SECONDS;

err_code = ble_advertising_init(&amp;amp;advdata, &amp;amp;scanrsp, &amp;amp;options, on_adv_evt, NULL);
APP_ERROR_CHECK(err_code);
}


/**@brief Function for initializing buttons and leds.
*
* @param[out] p_erase_bonds Will be true if the clear bonding button was pressed to wake the application up.
*/
static void buttons_leds_init(bool * p_erase_bonds)
{
bsp_event_t startup_event;

uint32_t err_code = bsp_init(BSP_INIT_LED | BSP_INIT_BUTTONS,
APP_TIMER_TICKS(100, APP_TIMER_PRESCALER), 
bsp_event_handler);
APP_ERROR_CHECK(err_code);

err_code = bsp_btn_ble_init(NULL, &amp;amp;startup_event);
APP_ERROR_CHECK(err_code);

*p_erase_bonds = (startup_event == BSP_EVENT_CLEAR_BONDING_DATA);
}


/**@brief Function for placing the application in low power state while waiting for events.
*/
static void power_manage(void)
{
uint32_t err_code = sd_app_evt_wait();
APP_ERROR_CHECK(err_code);
}


/**@brief Application main function.
*/
int main(void)
{

int16_t accel_x;
int16_t accel_y;
int16_t accel_z;
uint32_t err_code;
bool erase_bonds;

// Initialize.
APP_TIMER_INIT(APP_TIMER_PRESCALER, APP_TIMER_OP_QUEUE_SIZE, false);
uart_init();
spi_init();
init_sensors();

bma2x2_soft_rst();
nrf_delay_ms(10);

bma2x2_set_range(BMA2x2_RANGE_8G);
bma2x2_set_bw(BMA2x2_BW_62_50HZ);
bma2x2_set_power_mode(BMA2x2_MODE_NORMAL);
bma2x2_set_mode_value(BMA2x2_MODE_NORMAL);
bma2x2_set_fifo_mode(0x02);


buttons_leds_init(&amp;amp;erase_bonds);
ble_stack_init();
gap_params_init();
services_init();
advertising_init();
conn_params_init();

printf(&amp;quot;\r\nUART Start!\r\n&amp;quot;);
err_code = ble_advertising_start(BLE_ADV_MODE_FAST);
APP_ERROR_CHECK(err_code);

// Enter main loop.
for (;;)
{ 
power_manage();
printf(&amp;quot;Accelerometer: &amp;quot;);
printf(&amp;quot;x: %d\t&amp;quot;,bma2x2_read_accel_x(&amp;amp;accel_x));
printf(&amp;quot;y: %d\t&amp;quot;,bma2x2_read_accel_y(&amp;amp;accel_y));
printf(&amp;quot;z: %d\r\n&amp;quot;,bma2x2_read_accel_z(&amp;amp;accel_z));
nrf_delay_ms(1000);
}
}&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;I using library at:&amp;nbsp;&lt;a href="https://github.com/BoschSensortec"&gt;https://github.com/BoschSensortec&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thank you&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 with BMX055</title><link>https://devzone.nordicsemi.com/thread/142537?ContentTypeID=1</link><pubDate>Thu, 02 Aug 2018 08:24:03 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9fa47918-11e7-4fe3-96f1-ee780939088a</guid><dc:creator>J&amp;#248;rgen Holmefjord</dc:creator><description>&lt;p&gt;Hard to say, I can&amp;#39;t see the implementation of&amp;nbsp;read_accel functions in your above code. Please post this code as well, or prefereably upload the entire project. This way we can help you debug the issue.&lt;/p&gt;
&lt;p&gt;I would also ask you to answer the rest of the questions from my previous comment.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 with BMX055</title><link>https://devzone.nordicsemi.com/thread/142486?ContentTypeID=1</link><pubDate>Thu, 02 Aug 2018 03:11:04 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:39f39f7c-6cab-4b47-9eca-a6058d843d3e</guid><dc:creator>Vo Huu</dc:creator><description>&lt;p&gt;thanks for&amp;nbsp;reply!&lt;/p&gt;
&lt;p&gt;When i call function read accelerometer&amp;nbsp;data,&amp;nbsp;I read value by RX and it is -127. I tried to change value of CS pin but it did not work. Have I wrong something???&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: nRF52832 with BMX055</title><link>https://devzone.nordicsemi.com/thread/142397?ContentTypeID=1</link><pubDate>Wed, 01 Aug 2018 12:27:54 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:fa4d1a29-1ba2-49fb-ac28-e5ad26f26a8f</guid><dc:creator>J&amp;#248;rgen Holmefjord</dc:creator><description>&lt;p&gt;You need to provide some more details on what the issue is that just &amp;quot;I can&amp;#39;t read data out of BMX055&amp;quot;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What is not working? What have you tried to fix it?&lt;/li&gt;
&lt;li&gt;How do you see that you are not able to read any data?&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Are you checking error codes returned from all function calls?&lt;/li&gt;
&lt;li&gt;Have you tried debugging, to see if any errors are reported?&lt;/li&gt;
&lt;li&gt;Have you checked the SPI lines using a logic analyzer, to see if any data is transmitted?&lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>