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