diff --git a/app/app.uvprojx b/app/app.uvprojx index 80792b6..e3c3e69 100644 --- a/app/app.uvprojx +++ b/app/app.uvprojx @@ -337,7 +337,7 @@ 0 --reduce_paths --diag_suppress=1295 --diag_suppress=1 - 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 + CONFIG_NFCT_PINS_AS_GPIOS APP_TIMER_V2 APP_TIMER_V2_RTC1_ENABLED BOARD_PCA10100 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 @@ -354,8 +354,8 @@ 0 1 - --cpreproc_opts=-DAPP_TIMER_V2,-DAPP_TIMER_V2_RTC1_ENABLED,-DBOARD_PCA10100,-DCONFIG_GPIO_AS_PINRESET,-DFLOAT_ABI_HARD,-DNRF52833_XXAA,-DNRF_SD_BLE_API_VERSION=7,-DS140,-DSOFTDEVICE_PRESENT,-D__HEAP_SIZE=2048,-D__STACK_SIZE=2048 - 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=2048 + --cpreproc_opts=-DAPP_TIMER_V2,-DAPP_TIMER_V2_RTC1_ENABLED,-DBOARD_PCA10100,-DFLOAT_ABI_HARD,-DNRF52833_XXAA,-DNRF_SD_BLE_API_VERSION=7,-DS140,-DSOFTDEVICE_PRESENT,-D__HEAP_SIZE=2048,-D__STACK_SIZE=2048 + APP_TIMER_V2 APP_TIMER_V2_RTC1_ENABLED BOARD_PCA10100 FLOAT_ABI_HARD NRF52833_XXAA NRF_SD_BLE_API_VERSION=7 S140 SOFTDEVICE_PRESENT __HEAP_SIZE=2048 __STACK_SIZE=2048 ..\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\ diff --git a/app/main.c b/app/main.c index 5dc788a..f63fe71 100644 --- a/app/main.c +++ b/app/main.c @@ -19,25 +19,28 @@ #include "nrf_uarte.h" #endif -#if 0 +#if 1 static void test_tx_timer_cb(void* p_context) { - ZLOGI("test_tx_timer_cb"); - ThreeLeadECG_sdcard_mount(); - uint32_t data; - data = 1; + static uint32_t data; + data++; + ZLOGI("tim cb %d", data); + // ThreeLeadECG_sdcard_connect2_ext_usb_sdcard_driver_ic_reset(); } extern uint32_t g_nrf_log_tx_pin; APP_TIMER_DEF(m_test_tx_timer); void main() { - g_nrf_log_tx_pin = 2; APP_SCHED_INIT(APP_TIMER_SCHED_EVENT_DATA_SIZE, 20); + + ThreeLeadECG_beep_init(); + + ThreeLeadECG_sdcard_base_init(); znordic_init(); NRF_LOG_INFO("compile time :%s %d", __TIME__, APP_TIMER_TICKS(100)); - ZERROR_CHECK(app_timer_create(&m_test_tx_timer, APP_TIMER_MODE_SINGLE_SHOT, test_tx_timer_cb)); - ZERROR_CHECK(app_timer_start(m_test_tx_timer, APP_TIMER_TICKS(100), NULL)); + 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(3000), NULL)); znordic_loop(); } #endif @@ -246,6 +249,8 @@ static void on_service_init(void) { void main() { APP_SCHED_INIT(APP_TIMER_SCHED_EVENT_DATA_SIZE, 20); + ThreeLeadECG_sdcard_base_init(); + znordic_init(0, 20); NRF_LOG_INFO("compile time :%s", __TIME__); NRF_LOG_INFO("Version :%d", VERSION); @@ -262,6 +267,7 @@ void main() { znordic_loop(); } #endif +#if 0 /******************************************************************************* * ADCTEST * *******************************************************************************/ @@ -305,4 +311,5 @@ void main() { 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(); -} \ No newline at end of file +} +#endif \ No newline at end of file diff --git a/app/src/three_lead/three_lead_board.c b/app/src/three_lead/three_lead_board.c index 5a0ba5d..d06192f 100644 --- a/app/src/three_lead/three_lead_board.c +++ b/app/src/three_lead/three_lead_board.c @@ -24,6 +24,15 @@ #define BEEP_PWM_INSTANCE 0 #define BEEP_PIN 18 +#define SDCARD_SPI_SCK_PIN 4 +#define SDCARD_SPI_CS_PIN 5 +#define SDCARD_SPI_MISO_PIN 11 +#define SDCARD_SPI_MOSI_PIN 17 + +#define SDCARD_USBDRIVER_IC_JUNCTION_CTRL_NOE_PIN 1 +#define SDCARD_USBDRIVER_IC_RESET_PIN 28 +#define SDCARD_POWER_CTRL_PIN 30 + /******************************************************************************* * TOOLS * *******************************************************************************/ @@ -68,7 +77,12 @@ static nrf_drv_pwm_config_t const m_beep_pwm0_config0 = { .load_mode = NRF_PWM_LOAD_INDIVIDUAL, .step_mode = NRF_PWM_STEP_AUTO, }; -void ThreeLeadECG_beep_init() { APP_ERROR_CHECK(nrfx_pwm_init(&m_beep_pwm0, &m_beep_pwm0_config0, NULL)); } +void ThreeLeadECG_beep_init() { + znrf_gpio_cfg_output(BEEP_PIN, NRF_GPIO_PIN_NOPULL); + nrf_gpio_pin_set(BEEP_PIN); + + APP_ERROR_CHECK(nrfx_pwm_init(&m_beep_pwm0, &m_beep_pwm0_config0, NULL)); +} void ThreeLeadECG_beep_set_state(bool state) { if (state) { m_beep_pwm0_seq_values.channel_0 = 23; // 设置占空比,数值最大不超过 top_value @@ -115,13 +129,6 @@ int16_t ThreeLeadECG_battery_get_adc_val() { * sd card * switch */ -#define SDCARD_SPI_CS_PIN 28 -#define SDCARD_SPI_MISO_PIN 31 -#define SDCARD_SPI_MOSI_PIN 30 -#define SDCARD_SPI_SCK_PIN 29 -#define SDCARD_USBDRIVER_IC_JUNCTION_CTRL_PIN 5 -#define SDCARD_USBDRIVER_IC_RESET_PIN 5 -#define SDCARD_POWER_CTRL_PIN 5 void ThreeLeadECG_sdcard_base_init() { // /** @@ -137,21 +144,26 @@ void ThreeLeadECG_sdcard_base_init() { // znrf_gpio_cfg_output(SDCARD_USBDRIVER_IC_RESET_PIN, NRF_GPIO_PIN_NOPULL); nrf_gpio_pin_set(SDCARD_USBDRIVER_IC_RESET_PIN); /** - * @brief 初始化 SDCARD_USBDRIVER_IC_JUNCTION_CTRL_PIN + * @brief 初始化 SDCARD_USBDRIVER_IC_JUNCTION_CTRL_NOE_PIN */ - znrf_gpio_cfg_output(SDCARD_USBDRIVER_IC_JUNCTION_CTRL_PIN, NRF_GPIO_PIN_NOPULL); - nrf_gpio_pin_set(SDCARD_USBDRIVER_IC_JUNCTION_CTRL_PIN); + znrf_gpio_cfg_output(SDCARD_USBDRIVER_IC_JUNCTION_CTRL_NOE_PIN, NRF_GPIO_PIN_NOPULL); + nrf_gpio_pin_clear(SDCARD_USBDRIVER_IC_JUNCTION_CTRL_NOE_PIN); // OE = 0 /** * @brief SDCARD电源控制引脚 */ znrf_gpio_cfg_output(SDCARD_POWER_CTRL_PIN, NRF_GPIO_PIN_NOPULL); - nrf_gpio_pin_set(SDCARD_POWER_CTRL_PIN); + nrf_gpio_pin_clear(SDCARD_POWER_CTRL_PIN); // POWER = 0 +} +void ThreeLeadECG_sdcard_connect2_ext_usb_sdcard_driver_ic_reset() { + nrf_gpio_pin_clear(SDCARD_USBDRIVER_IC_RESET_PIN); + nrf_delay_ms(10); + nrf_gpio_pin_set(SDCARD_USBDRIVER_IC_RESET_PIN); } void ThreeLeadECG_sdcard_connect2_ext_usb_sdcard_driver_ic(bool connect) { if (connect) { - nrf_gpio_pin_clear(SDCARD_USBDRIVER_IC_JUNCTION_CTRL_PIN); + nrf_gpio_pin_clear(SDCARD_USBDRIVER_IC_JUNCTION_CTRL_NOE_PIN); } else { - nrf_gpio_pin_set(SDCARD_USBDRIVER_IC_JUNCTION_CTRL_PIN); + nrf_gpio_pin_set(SDCARD_USBDRIVER_IC_JUNCTION_CTRL_NOE_PIN); } } void ThreeLeadECG_sdcard_flash_power_ctrl(bool power) { @@ -298,13 +310,12 @@ void ThreeLeadECG_sdcard_mount() { } NRF_LOG_INFO("Disk initialization succeeded."); - FRESULT ff_result; - // ff_result = f_mkfs("0:", FM_FAT, 4096, NULL, 0); - // if (ff_result) { - // NRF_LOG_INFO("mkfs failed. %d",ff_result); - // return; - // } + // ff_result = f_mkfs("0:", FM_FAT, 4096, NULL, 0); + // if (ff_result) { + // NRF_LOG_INFO("mkfs failed. %d",ff_result); + // return; + // } ff_result = f_mount(&fs, "", 1); if (ff_result) { @@ -373,7 +384,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 = + // 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/app/src/three_lead/three_lead_board.h b/app/src/three_lead/three_lead_board.h index 6807166..9d61f81 100644 --- a/app/src/three_lead/three_lead_board.h +++ b/app/src/three_lead/three_lead_board.h @@ -38,6 +38,7 @@ int16_t ThreeLeadECG_battery_get_adc_val(); /******************************************************************************* * SDCARD * *******************************************************************************/ +void ThreeLeadECG_sdcard_connect2_ext_usb_sdcard_driver_ic_reset(); void ThreeLeadECG_sdcard_init(); void ThreeLeadECG_sdcard_mount(); void ThreeLeadECG_sdcard_umount();