diff --git a/.vscode/settings.json b/.vscode/settings.json
index 7614177..c5d872b 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -60,6 +60,7 @@
"three_lead_board.h": "c",
"znordic.h": "c",
"ads1293.h": "c",
- "app_scheduler.h": "c"
+ "app_scheduler.h": "c",
+ "stdbool.h": "c"
}
}
\ No newline at end of file
diff --git a/SSD1312_Datasheet (1).pdf b/SSD1312_Datasheet (1).pdf
new file mode 100644
index 0000000..c718859
Binary files /dev/null and b/SSD1312_Datasheet (1).pdf differ
diff --git a/TXW64128-41-TSWG13P096G-A-VER1.0.pdf b/TXW64128-41-TSWG13P096G-A-VER1.0.pdf
new file mode 100644
index 0000000..5ef088b
Binary files /dev/null and b/TXW64128-41-TSWG13P096G-A-VER1.0.pdf differ
diff --git a/ads1293.pdf b/ads1293.pdf
new file mode 100644
index 0000000..6301615
Binary files /dev/null and b/ads1293.pdf differ
diff --git a/app/app.uvprojx b/app/app.uvprojx
index 4a73a49..80792b6 100644
--- a/app/app.uvprojx
+++ b/app/app.uvprojx
@@ -337,7 +337,7 @@
0
--reduce_paths --diag_suppress=1295 --diag_suppress=1
- APP_TIMER_V2 APP_TIMER_V2_RTC1_ENABLED BOARD_PCA10100 CONFIG_GPIO_AS_PINRESET FLOAT_ABI_HARD NRF52833_XXAA NRF_SD_BLE_API_VERSION=7 S140 SOFTDEVICE_PRESENT __HEAP_SIZE=2048 __STACK_SIZE=4048
+ CONFIG_NFCT_PINS_AS_GPIOS APP_TIMER_V2 APP_TIMER_V2_RTC1_ENABLED BOARD_PCA10100 CONFIG_GPIO_AS_PINRESET FLOAT_ABI_HARD NRF52833_XXAA NRF_SD_BLE_API_VERSION=7 S140 SOFTDEVICE_PRESENT __HEAP_SIZE=2048 __STACK_SIZE=4048
..\sdk\config;..\sdk\components;..\sdk\components\ble\ble_advertising;..\sdk\components\ble\ble_dtm;..\sdk\components\ble\ble_link_ctx_manager;..\sdk\components\ble\ble_racp;..\sdk\components\ble\ble_services\ble_ancs_c;..\sdk\components\ble\ble_services\ble_ans_c;..\sdk\components\ble\ble_services\ble_bas;..\sdk\components\ble\ble_services\ble_bas_c;..\sdk\components\ble\ble_services\ble_cscs;..\sdk\components\ble\ble_services\ble_cts_c;..\sdk\components\ble\ble_services\ble_dfu;..\sdk\components\ble\ble_services\ble_dis;..\sdk\components\ble\ble_services\ble_gls;..\sdk\components\ble\ble_services\ble_hids;..\sdk\components\ble\ble_services\ble_hrs;..\sdk\components\ble\ble_services\ble_hrs_c;..\sdk\components\ble\ble_services\ble_hts;..\sdk\components\ble\ble_services\ble_ias;..\sdk\components\ble\ble_services\ble_ias_c;..\sdk\components\ble\ble_services\ble_lbs;..\sdk\components\ble\ble_services\ble_lbs_c;..\sdk\components\ble\ble_services\ble_lls;..\sdk\components\ble\ble_services\ble_nus;..\sdk\components\ble\ble_services\ble_nus_c;..\sdk\components\ble\ble_services\ble_rscs;..\sdk\components\ble\ble_services\ble_rscs_c;..\sdk\components\ble\ble_services\ble_tps;..\sdk\components\ble\common;..\sdk\components\ble\nrf_ble_gatt;..\sdk\components\ble\nrf_ble_qwr;..\sdk\components\ble\peer_manager;..\sdk\components\boards;..\sdk\components\libraries\atomic;..\sdk\components\libraries\atomic_fifo;..\sdk\components\libraries\atomic_flags;..\sdk\components\libraries\balloc;..\sdk\components\libraries\bootloader\ble_dfu;..\sdk\components\libraries\bsp;..\sdk\components\libraries\button;..\sdk\components\libraries\cli;..\sdk\components\libraries\crc16;..\sdk\components\libraries\crc32;..\sdk\components\libraries\crypto;..\sdk\components\libraries\csense;..\sdk\components\libraries\csense_drv;..\sdk\components\libraries\delay;..\sdk\components\libraries\ecc;..\sdk\components\libraries\experimental_section_vars;..\sdk\components\libraries\experimental_task_manager;..\sdk\components\libraries\fds;..\sdk\components\libraries\fifo;..\sdk\components\libraries\fstorage;..\sdk\components\libraries\gfx;..\sdk\components\libraries\gpiote;..\sdk\components\libraries\hardfault;..\sdk\components\libraries\hci;..\sdk\components\libraries\led_softblink;..\sdk\components\libraries\log;..\sdk\components\libraries\log\src;..\sdk\components\libraries\low_power_pwm;..\sdk\components\libraries\mem_manager;..\sdk\components\libraries\memobj;..\sdk\components\libraries\mpu;..\sdk\components\libraries\mutex;..\sdk\components\libraries\pwm;..\sdk\components\libraries\pwr_mgmt;..\sdk\components\libraries\queue;..\sdk\components\libraries\ringbuf;..\sdk\components\libraries\scheduler;..\sdk\components\libraries\sdcard;..\sdk\components\libraries\slip;..\sdk\components\libraries\sortlist;..\sdk\components\libraries\spi_mngr;..\sdk\components\libraries\stack_guard;..\sdk\components\libraries\strerror;..\sdk\components\libraries\svc;..\sdk\components\libraries\timer;..\sdk\components\libraries\twi_mngr;..\sdk\components\libraries\twi_sensor;..\sdk\components\libraries\uart;..\sdk\components\libraries\usbd;..\sdk\components\libraries\usbd\class\audio;..\sdk\components\libraries\usbd\class\cdc;..\sdk\components\libraries\usbd\class\cdc\acm;..\sdk\components\libraries\usbd\class\hid;..\sdk\components\libraries\usbd\class\hid\generic;..\sdk\components\libraries\usbd\class\hid\kbd;..\sdk\components\libraries\usbd\class\hid\mouse;..\sdk\components\libraries\usbd\class\msc;..\sdk\components\libraries\util;..\sdk\components\nfc\ndef\conn_hand_parser;..\sdk\components\nfc\ndef\conn_hand_parser\ac_rec_parser;..\sdk\components\nfc\ndef\conn_hand_parser\ble_oob_advdata_parser;..\sdk\components\nfc\ndef\conn_hand_parser\le_oob_rec_parser;..\sdk\components\nfc\ndef\connection_handover\ac_rec;..\sdk\components\nfc\ndef\connection_handover\ble_oob_advdata;..\sdk\components\nfc\ndef\connection_handover\ble_pair_lib;..\sdk\components\nfc\ndef\connection_handover\ble_pair_msg;..\sdk\components\nfc\ndef\connection_handover\common;..\sdk\components\nfc\ndef\connection_handover\ep_oob_rec;..\sdk\components\nfc\ndef\connection_handover\hs_rec;..\sdk\components\nfc\ndef\connection_handover\le_oob_rec;..\sdk\components\nfc\ndef\generic\message;..\sdk\components\nfc\ndef\generic\record;..\sdk\components\nfc\ndef\launchapp;..\sdk\components\nfc\ndef\parser\message;..\sdk\components\nfc\ndef\parser\record;..\sdk\components\nfc\ndef\text;..\sdk\components\nfc\ndef\uri;..\sdk\components\nfc\platform;..\sdk\components\nfc\t2t_lib;..\sdk\components\nfc\t2t_parser;..\sdk\components\nfc\t4t_lib;..\sdk\components\nfc\t4t_parser\apdu;..\sdk\components\nfc\t4t_parser\cc_file;..\sdk\components\nfc\t4t_parser\hl_detection_procedure;..\sdk\components\nfc\t4t_parser\tlv;..\sdk\components\softdevice\common;..\sdk\components\softdevice\s140\headers;..\sdk\components\softdevice\s140\headers\nrf52;..\sdk\external\fprintf;..\sdk\external\segger_rtt;..\sdk\external\utf_converter;..\sdk\integration\nrfx;..\sdk\integration\nrfx\legacy;..\sdk\modules\nrfx;..\sdk\modules\nrfx\drivers\include;..\sdk\modules\nrfx\hal;.\config\;.\src\;..\libznordic\include;..\sdk\external\fatfs\port;..\sdk\external\fatfs\src;..\sdk\components\libraries\block_dev;..\sdk\components\libraries\block_dev\sdc\;..\sdk\external\protothreads\;..\sdk\external\protothreads\pt-1.4\;..\sdk\components\libraries\scheduler
diff --git a/app/config/sdk_config.h b/app/config/sdk_config.h
index 19d9ab7..9c3df25 100644
--- a/app/config/sdk_config.h
+++ b/app/config/sdk_config.h
@@ -7767,7 +7767,7 @@
// NRF_LOG_BACKEND_UART_ENABLED - nrf_log_backend_uart - Log UART backend
//==========================================================
#ifndef NRF_LOG_BACKEND_UART_ENABLED
-#define NRF_LOG_BACKEND_UART_ENABLED 1
+#define NRF_LOG_BACKEND_UART_ENABLED 0
#endif
// NRF_LOG_BACKEND_UART_TX_PIN - UART TX pin
#ifndef NRF_LOG_BACKEND_UART_TX_PIN
diff --git a/app/main.c b/app/main.c
index 3ff4a93..843421a 100644
--- a/app/main.c
+++ b/app/main.c
@@ -3,8 +3,10 @@
#include "znordic.h"
//
+#include "basic/ssd1306/driver_ssd1306_basic.h"
+#include "one_conduction/one_conduction_board.h"
#include "three_lead\three_lead_board.h"
-
+#if 0
static void test_tx_timer_cb(void* p_context) {
ZLOGI("test_tx_timer_cb");
ThreeLeadECG_sdcard_mount();
@@ -25,3 +27,171 @@ void main() {
ZERROR_CHECK(app_timer_start(m_test_tx_timer, APP_TIMER_TICKS(100), NULL));
znordic_loop();
}
+#endif
+
+// EEPROM_TEST
+#if 0
+static void test_tx_timer_cb(void* p_context) {
+ static uint32_t data;
+ data++;
+ // ZLOGI("test_tx_timer_cb %d", data);
+}
+
+extern uint32_t g_nrf_log_tx_pin;
+APP_TIMER_DEF(m_test_tx_timer);
+
+void main() {
+ APP_SCHED_INIT(APP_TIMER_SCHED_EVENT_DATA_SIZE, 20);
+ znordic_init();
+
+ // SingleLeadECG_beep_init();
+ // SingleLeadECG_beep_set_state(false);
+ NRF_LOG_INFO("compile time :%s %d", __TIME__, APP_TIMER_TICKS(100));
+ NRF_LOG_INTERNAL_FLUSH();
+
+ SingleLeadECG_eeprom_init();
+ static uint8_t eepromw_test_data[256];
+ static uint8_t eepromw_rx_data[256];
+ for (size_t i = 0; i < 256; i++) {
+ eepromw_test_data[i] = i;
+ }
+ SingleLeadECG_eeprom_write(0, eepromw_test_data, 256);
+ // nrf_delay_ms(20);
+ // SingleLeadECG_eeprom_read(0, eepromw_rx_data, 256);
+ // for (size_t i = 0; i < 256; i++) {
+ // ZLOGI("eepromw_rx_data[%d] = %d", i, eepromw_rx_data[i]);
+ // NRF_LOG_INTERNAL_FLUSH();
+ // }
+
+ ZERROR_CHECK(app_timer_create(&m_test_tx_timer, APP_TIMER_MODE_REPEATED, test_tx_timer_cb));
+ ZERROR_CHECK(app_timer_start(m_test_tx_timer, APP_TIMER_TICKS(100), NULL));
+ znordic_loop();
+}
+#endif
+
+/*******************************************************************************
+ * 屏幕测试+LED测试 *
+ *******************************************************************************/
+#if 1
+static void test_tx_timer_cb(void* p_context) {
+ static uint32_t data;
+ data++;
+ ZLOGI("test_tx_timer_cb %d", data);
+
+ SingleLeadECG_led_green_set_state(data % 2 == 0);
+ SingleLeadECG_led_blue_set_state(data % 3 == 0);
+}
+
+extern uint32_t g_nrf_log_tx_pin;
+APP_TIMER_DEF(m_test_tx_timer);
+
+void main() {
+ APP_SCHED_INIT(APP_TIMER_SCHED_EVENT_DATA_SIZE, 20);
+ znordic_init();
+
+ NRF_LOG_INFO("compile time :%s %d", __TIME__, APP_TIMER_TICKS(100));
+ NRF_LOG_INTERNAL_FLUSH();
+
+ SingleLeadECG_screen_init();
+ ssd1306_basic_init(SSD1306_INTERFACE_SPI, SSD1306_ADDR_SA0_0);
+ ssd1306_basic_display_on();
+ ssd1306_basic_string(0, 0, "123456789123456789123", 21, 0, SSD1306_FONT_12);
+ ssd1306_basic_string(0, 16, "123456789123456789123", 21, 0, SSD1306_FONT_12);
+ ssd1306_basic_string(0, 32, "123456789123456789123", 21, 0, SSD1306_FONT_12);
+ ssd1306_basic_string(0, 48, "123456789123456789123", 21, 0, SSD1306_FONT_12);
+
+ SingleLeadECG_led_init();
+
+ ZERROR_CHECK(app_timer_create(&m_test_tx_timer, APP_TIMER_MODE_REPEATED, test_tx_timer_cb));
+ ZERROR_CHECK(app_timer_start(m_test_tx_timer, APP_TIMER_TICKS(100), NULL));
+ znordic_loop();
+}
+#endif
+
+/*******************************************************************************
+ * ECG *
+ *******************************************************************************/
+
+#if 0
+static void test_tx_timer_cb(void* p_context) {
+ static uint32_t data;
+ data++;
+ // SingleLeadECG_ecg_nlod_get_connected_state();
+ // SingleLeadECG_ecg_plod_get_connected_state();
+ // SingleLeadECG_ecg_plod_get_ecg_val();
+ ZLOGI("%d nlod %d plod %d ecg:%d", data, SingleLeadECG_ecg_nlod_get_connected_state(), SingleLeadECG_ecg_plod_get_connected_state(), SingleLeadECG_ecg_plod_get_ecg_val());
+}
+
+extern uint32_t g_nrf_log_tx_pin;
+APP_TIMER_DEF(m_test_tx_timer);
+
+void main() {
+ APP_SCHED_INIT(APP_TIMER_SCHED_EVENT_DATA_SIZE, 20);
+ znordic_init();
+ SingleLeadECG_adc_module_init();
+
+ NRF_LOG_INFO("compile time :%s %d", __TIME__, APP_TIMER_TICKS(100));
+ NRF_LOG_INTERNAL_FLUSH();
+
+ SingleLeadECG_ecg_init();
+
+ ZERROR_CHECK(app_timer_create(&m_test_tx_timer, APP_TIMER_MODE_REPEATED, test_tx_timer_cb));
+ ZERROR_CHECK(app_timer_start(m_test_tx_timer, APP_TIMER_TICKS(1000), NULL));
+ znordic_loop();
+}
+#endif
+/*******************************************************************************
+ * 蓝牙测试 *
+ *******************************************************************************/
+#if 0
+extern uint32_t g_nrf_log_tx_pin;
+APP_TIMER_DEF(m_test_tx_timer);
+
+ZDATACHANNEL_DEF(m_zhrs, 2 /*回调事件优先级*/, 1 /*client num*/);
+static const char* hex2str(const uint8_t* data, int32_t len) {
+ static char rx[64] = {0};
+ memset(rx, 0, sizeof(rx));
+ for (int32_t i = 0; i < len; i++) {
+ sprintf(rx + i * 2, "%02X", data[i]);
+ }
+ return rx;
+}
+
+static void zdatachannel_data_handler(zdatachannel_evt_t* p_evt) {
+ /**
+ * @brief 接收到指令数据
+ */
+ if (p_evt->type == ZDATACHANNEL_EVT_RX_DATA) {
+ ZLOGI("rx:%s", hex2str(p_evt->params.rx_data.p_data, p_evt->params.rx_data.length));
+ }
+}
+static void on_service_init(void) {
+ /**
+ * @brief 数据通道初始化
+ */
+ ZLOGI("init zdatachannel service");
+ zdatachannel_init_t zdatachannle_init;
+ memset(&zdatachannle_init, 0, sizeof(zdatachannle_init));
+ zdatachannle_init.data_handler = zdatachannel_data_handler;
+ ZERROR_CHECK(zdatachannel_init(&m_zhrs, &zdatachannle_init));
+}
+
+void main() {
+ APP_SCHED_INIT(APP_TIMER_SCHED_EVENT_DATA_SIZE, 20);
+
+ znordic_init(0, 20);
+ NRF_LOG_INFO("compile time :%s", __TIME__);
+ NRF_LOG_INFO("Version :%d", VERSION);
+ NRF_LOG_INFO("Manufacturer :%s", MANUFACTURER_NAME);
+
+ static zble_module_cfg_t cfg = //
+ {
+ .deviceName = BLE_NAME,
+ .on_service_init = on_service_init,
+ };
+ zble_module_init(&cfg);
+
+ zble_module_start_adv();
+ znordic_loop();
+}
+#endif
\ No newline at end of file
diff --git a/app/src/one_conduction/one_conduction_board.c b/app/src/one_conduction/one_conduction_board.c
index db1b608..9736504 100644
--- a/app/src/one_conduction/one_conduction_board.c
+++ b/app/src/one_conduction/one_conduction_board.c
@@ -23,13 +23,15 @@
#define LED_GREEN_PIN 9
#define LED_BLUE_PIN 10
+// #define LED_GREEN_PIN 27
+// #define LED_BLUE_PIN 28
#define ECG_NLOD_PIN 3
#define ECG_PLOD_PIN 28
#define ECG_ADC_PIN NRF_SAADC_INPUT_AIN2
#define ECG_ADC_CHANNEL 0 // 不重复即可
-#define BATTERY_ADC_PIN NRF_SAADC_INPUT_VDD
+#define BATTERY_ADC_PIN NRF_SAADC_INPUT_AIN5
#define BATTERY_ADC_CHANNEL 1 // 不重复即可
#define EEPROM_I2C_SCL_M 15 // I2C SCL引脚
@@ -37,7 +39,7 @@
#define EEPROM_I2C_INSTANCE 1 // I2C使用的硬件控制器ID
#define BEEP_PWM_INSTANCE 0
-#define BEEP_PIN 18
+#define BEEP_PIN 1
/*******************************************************************************
* TOOLS *
@@ -85,26 +87,6 @@ void SingleLeadECG_beep_set_state(bool state) {
* SCREEN *
*******************************************************************************/
-typedef struct {
- // BASIC IF
- uint32_t reset_pin;
- uint32_t power_pin;
- uint32_t a0pin; // cmd/data
- // SPI IF
- uint32_t cs_pin;
- uint32_t clk_pin;
- uint32_t mosi_pin;
-
-} screen_handler_t;
-
-static screen_handler_t m_screen_handler = {
- .reset_pin = SCREEN_RESET_PIN,
- .power_pin = SCREEN_POWER_PIN,
- .a0pin = SCREEN_A0PIN,
- .cs_pin = SCREEN_CS_PIN,
- .clk_pin = SCREEN_CLK_PIN,
- .mosi_pin = SCREEN_MOSI_PIN,
-};
static const nrf_drv_spi_t m_screen_spi = NRF_DRV_SPI_INSTANCE(SCREEN_SPI_INSTANCE); /**< SPI instance. */
void SingleLeadECG_screen_init() {
@@ -112,12 +94,17 @@ void SingleLeadECG_screen_init() {
znrf_gpio_cfg_output(SCREEN_POWER_PIN, NRF_GPIO_PIN_NOPULL);
znrf_gpio_cfg_output(SCREEN_A0PIN, NRF_GPIO_PIN_NOPULL);
+ nrf_gpio_pin_set(SCREEN_POWER_PIN);
+ // 参考
+ // OLED驱动程序 : https://iflytop1.feishu.cn/wiki/OQ4Iwv0DpiQDJvkjftjcQHJBnCg
+ // nRF5_SDK-使用手册: https://iflytop1.feishu.cn/wiki/ThaAwZEGVi2bspkfGU9cbl9Enqd
nrf_drv_spi_config_t spi_config = NRF_DRV_SPI_DEFAULT_CONFIG;
spi_config.ss_pin = SCREEN_CS_PIN; // NRF_DRV_SPI_PIN_NOT_USED
spi_config.miso_pin = NRF_DRV_SPI_PIN_NOT_USED;
spi_config.mosi_pin = SCREEN_MOSI_PIN;
spi_config.sck_pin = SCREEN_CLK_PIN;
spi_config.frequency = NRF_DRV_SPI_FREQ_1M;
+ spi_config.mode = NRF_DRV_SPI_MODE_3;
ZERROR_CHECK(nrf_drv_spi_init(&m_screen_spi, &spi_config, NULL, NULL));
}
@@ -159,6 +146,12 @@ uint8_t SingleLeadECG_reset_gpio_write(uint8_t value) {
void SingleLeadECG_led_init() {
znrf_gpio_cfg_output(LED_GREEN_PIN, NRF_GPIO_PIN_NOPULL);
znrf_gpio_cfg_output(LED_BLUE_PIN, NRF_GPIO_PIN_NOPULL);
+
+ // nrf_gpio_pin_write(LED_GREEN_PIN, 1);
+ // nrf_gpio_pin_write(LED_GREEN_PIN, 1);
+
+ SingleLeadECG_led_green_set_state(false);
+ SingleLeadECG_led_blue_set_state(false);
}
void SingleLeadECG_led_green_set_state(bool state) {
if (state) {
@@ -184,13 +177,13 @@ void SingleLeadECG_ecg_init() {
channel_config.acq_time = NRF_SAADC_ACQTIME_40US;
ZERROR_CHECK(nrfx_saadc_channel_init(ECG_ADC_CHANNEL, &channel_config));
- nrf_gpio_cfg_sense_input(ECG_NLOD_PIN, NRF_GPIO_PIN_NOPULL, NRF_GPIO_PIN_NOSENSE);
- nrf_gpio_cfg_sense_input(ECG_PLOD_PIN, NRF_GPIO_PIN_NOPULL, NRF_GPIO_PIN_NOSENSE);
+ nrf_gpio_cfg_sense_input(ECG_NLOD_PIN, NRF_GPIO_PIN_NOPULL, NRF_GPIO_PIN_SENSE_LOW);
+ nrf_gpio_cfg_sense_input(ECG_PLOD_PIN, NRF_GPIO_PIN_NOPULL, NRF_GPIO_PIN_SENSE_LOW);
}
-bool SingleLeadECG_ecg_nlod_get_connected_state() { return nrf_gpio_pin_read(ECG_NLOD_PIN) == 0; }
-bool SingleLeadECG_ecg_plod_get_connected_state() { return nrf_gpio_pin_read(ECG_PLOD_PIN) == 0; }
-int16_t SingleLeadECG_ecg_plod_get_ecg_val() { return znrf_adc_channel_read_val(ECG_ADC_CHANNEL); }
+uint32_t SingleLeadECG_ecg_nlod_get_connected_state() { return nrf_gpio_pin_read(ECG_NLOD_PIN); }
+uint32_t SingleLeadECG_ecg_plod_get_connected_state() { return nrf_gpio_pin_read(ECG_PLOD_PIN); }
+int16_t SingleLeadECG_ecg_plod_get_ecg_val() { return znrf_adc_channel_read_val(ECG_ADC_CHANNEL); }
/*******************************************************************************
* BATTERY *
@@ -253,7 +246,11 @@ void SingleLeadECG_eeprom_write(uint16_t page, uint8_t *data, uint16_t len) { /
uint8_t deviceSelect = 0;
assign_i2c_add(addr, true, &deviceSelect, &eeprom_cache[0], &eeprom_cache[1]);
- nrf_drv_twi_tx(&m_eeprom_twi_master, deviceSelect, eeprom_cache, len + 2, false);
+ ret_code_t ecode = nrf_drv_twi_tx(&m_eeprom_twi_master, deviceSelect, eeprom_cache, len + 2, false);
+ if (ecode != NRF_SUCCESS) {
+ ZLOGE("nrf_drv_twi_tx error %x", ecode);
+ NRF_LOG_INTERNAL_FLUSH();
+ }
}
void SingleLeadECG_eeprom_read(uint32_t add, uint8_t *data, uint16_t len) {
diff --git a/app/src/one_conduction/one_conduction_board.h b/app/src/one_conduction/one_conduction_board.h
index 2f1cd12..72e1749 100644
--- a/app/src/one_conduction/one_conduction_board.h
+++ b/app/src/one_conduction/one_conduction_board.h
@@ -31,7 +31,7 @@ void SingleLeadECG_beep_set_state(bool state);
*/
#define EEPROM_PAGE 256
void SingleLeadECG_eeprom_init();
-void SingleLeadECG_eeprom_write_page(uint16_t page, uint8_t* data, uint16_t len);
+void SingleLeadECG_eeprom_write(uint16_t page, uint8_t* data, uint16_t len);
void SingleLeadECG_eeprom_read(uint32_t add, uint8_t* data, uint16_t len);
/*******************************************************************************
@@ -52,10 +52,10 @@ void SingleLeadECG_led_blue_set_state(bool state);
* ECG *
*******************************************************************************/
-void SingleLeadECG_ecg_init();
-bool SingleLeadECG_ecg_nlod_get_connected_state();
-bool SingleLeadECG_ecg_plod_get_connected_state();
-int16_t SingleLeadECG_ecg_plod_get_ecg_val();
+void SingleLeadECG_ecg_init();
+uint32_t SingleLeadECG_ecg_nlod_get_connected_state();
+uint32_t SingleLeadECG_ecg_plod_get_connected_state();
+int16_t SingleLeadECG_ecg_plod_get_ecg_val();
/*******************************************************************************
* BATTERY *
diff --git a/app/src/three_lead/three_lead_board.c b/app/src/three_lead/three_lead_board.c
index ec684f7..5a0ba5d 100644
--- a/app/src/three_lead/three_lead_board.c
+++ b/app/src/three_lead/three_lead_board.c
@@ -373,6 +373,7 @@ void ThreeLeadECG_ecg_init() {
spi_config.mosi_pin = ADS1293_SPI_MOSI_PIN;
spi_config.sck_pin = ADS1293_SPI_SCK_PIN;
spi_config.frequency = NRF_DRV_SPI_FREQ_1M;
+ // spi_config.mode =
ZERROR_CHECK(nrf_drv_spi_init(&spi, &spi_config, NULL, NULL));
nrf_gpio_cfg_input(ADS1293_SPI_CS0_PIN, NRF_GPIO_PIN_NOPULL);
diff --git a/sdk b/sdk
index d1b8e44..f744df9 160000
--- a/sdk
+++ b/sdk
@@ -1 +1 @@
-Subproject commit d1b8e44a3b818ea9571baf5efe79b6bd5d295dd2
+Subproject commit f744df9ff76d9a7a4b3739dfb571f1b3f82312ae