zhaohe 1 year ago
parent
commit
8bc93142c9
  1. 3
      README.md
  2. 2
      app/src/basic/version.h
  3. 5
      app/src/board/device_exception_manager.h
  4. 33
      app/src/heart_wave_sample_service.c
  5. 15472
      release/V23/three_lead_ecg_v23.hex
  6. BIN
      release/V23/three_lead_ecg_v23.zip

3
README.md

@ -1,6 +1,9 @@
# three_lead_ecg_v2 # three_lead_ecg_v2
``` ```
V23:
1. 添加 ADS芯片多次探测逻辑
2. 添加 ADS芯片配置时,若配置失败,重复配置5次的逻辑
V22: V22:
1.失能ads1293从flash盘中读取配置文件 1.失能ads1293从flash盘中读取配置文件

2
app/src/basic/version.h

@ -2,7 +2,7 @@
#define CATEGORY "M1002" // Èýµ¼Áª #define CATEGORY "M1002" // Èýµ¼Áª
#define MANUFACTURER_NAME "iflytop" #define MANUFACTURER_NAME "iflytop"
#define FIRMWARE_VERSION (22)
#define FIRMWARE_VERSION (23)
#define BLESTACK_VERSION 1 #define BLESTACK_VERSION 1
#define BOOTLOADER_VERSION 1 #define BOOTLOADER_VERSION 1
#define HARDWARE_VERSION (1) #define HARDWARE_VERSION (1)

5
app/src/board/device_exception_manager.h

@ -5,9 +5,10 @@
typedef struct { typedef struct {
uint16_t sdcard_error : 1; uint16_t sdcard_error : 1;
uint16_t ads1293_spi_inited_fail : 1; uint16_t ads1293_spi_inited_fail : 1;
uint16_t ads1293_detect_error : 1;
uint16_t ads1293_0_detect_error : 1;
uint16_t ads1293_1_detect_error : 1;
uint16_t ads1293_setting_error : 1; uint16_t ads1293_setting_error : 1;
uint16_t mark : 13;
uint16_t mark : 11;
} device_exception_state_t; } device_exception_state_t;
device_exception_state_t *DeviceExceptionMgr_get_state(); device_exception_state_t *DeviceExceptionMgr_get_state();

33
app/src/heart_wave_sample_service.c

@ -225,7 +225,6 @@ static void ads1293_spi_tx_rx_1(uint8_t *tx, uint8_t *rx, uint8_t len) {
static void ads1293_spi_writereg_and_check(ads1293_t *ads, uint8_t addr, uint8_t data) { static void ads1293_spi_writereg_and_check(ads1293_t *ads, uint8_t addr, uint8_t data) {
uint8_t readbak = 0; uint8_t readbak = 0;
// readonly add // readonly add
readbak = data;
if (addr >= 0x18 && addr <= 0x1E) { if (addr >= 0x18 && addr <= 0x1E) {
return; return;
} }
@ -238,7 +237,16 @@ static void ads1293_spi_writereg_and_check(ads1293_t *ads, uint8_t addr, uint8_t
if (addr == 0x50) { if (addr == 0x50) {
return; return;
} }
for (uint8_t i = 0; i < 5; i++) {
readbak = 0;
ads1293_spi_writereg_and_readbak(ads, addr, data, &readbak); ads1293_spi_writereg_and_readbak(ads, addr, data, &readbak);
if (readbak == data) {
break;
}
nrf_delay_ms(1);
}
if (readbak != data) { if (readbak != data) {
ZLOGE("ads_%d write reg 0x%x failed\n", ads->id, addr); ZLOGE("ads_%d write reg 0x%x failed\n", ads->id, addr);
DeviceExceptionMgr_get_state()->ads1293_setting_error = 1; DeviceExceptionMgr_get_state()->ads1293_setting_error = 1;
@ -418,13 +426,24 @@ static void ads1293_init() {
m_ads1293_driver_is_inited = true; m_ads1293_driver_is_inited = true;
uint8_t revid = ads1293_spi_readreg(&m_ads1293_0, TI_ADS1293_REVID_REG);
if (revid != 1) {
DeviceExceptionMgr_get_state()->ads1293_detect_error = 1;
uint8_t revid0 = ads1293_spi_readreg(&m_ads1293_0, TI_ADS1293_REVID_REG);
uint8_t revid1 = ads1293_spi_readreg(&m_ads1293_1, TI_ADS1293_REVID_REG);
for (uint16_t i = 0; i < 5; i++) {
revid0 = ads1293_spi_readreg(&m_ads1293_0, TI_ADS1293_CONFIG_REG);
revid1 = ads1293_spi_readreg(&m_ads1293_1, TI_ADS1293_CONFIG_REG);
if (revid0 == 1 && revid1 == 1) {
break;
}
nrf_delay_ms(10);
}
if (revid0 != 1) {
DeviceExceptionMgr_get_state()->ads1293_0_detect_error = 1;
} }
revid = ads1293_spi_readreg(&m_ads1293_1, TI_ADS1293_REVID_REG);
if (revid != 1) {
DeviceExceptionMgr_get_state()->ads1293_detect_error = 1;
if (revid1 != 1) {
DeviceExceptionMgr_get_state()->ads1293_1_detect_error = 1;
} }
} }
static void ads1293_sample_one_frame() { static void ads1293_sample_one_frame() {

15472
release/V23/three_lead_ecg_v23.hex
File diff suppressed because it is too large
View File

BIN
release/V23/three_lead_ecg_v23.zip

Loading…
Cancel
Save