Browse Source

update

master
zhaohe 1 year ago
parent
commit
7e889a850f
  1. 23
      app/app.uvoptx
  2. 21
      app/src/app_ble_service.c
  3. 14
      app/src/board/board.h
  4. 2
      app/src/board/board_sdcard_driver.c
  5. 28
      app/src/device_ctrl_service.c
  6. 79
      app/src/heart_wave_sample_service.c
  7. 2
      sdk

23
app/app.uvoptx

@ -119,6 +119,10 @@
<TargetDriverDllRegistry>
<SetRegEntry>
<Number>0</Number>
<Key>DLGUARM</Key>
<Name> </Name> </SetRegEntry>
<SetRegEntry>
<Number>0</Number>
<Key>ARMRTXEVENTFLAGS</Key>
<Name>-L70 -Z18 -C0 -M0 -T1</Name>
</SetRegEntry>
@ -143,24 +147,7 @@
<Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC4000 -FN2 -FF0nrf52xxx -FS00 -FL0200000 -FF1nrf52xxx_uicr -FS110001000 -FL11000 -FP0($$Device:nRF52833_xxAA$Flash\nrf52xxx.flm) -FP1($$Device:nRF52833_xxAA$Flash\nrf52xxx_uicr.flm))</Name>
</SetRegEntry>
</TargetDriverDllRegistry>
<Breakpoint>
<Bp>
<Number>0</Number>
<Type>0</Type>
<LineNumber>125</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>207178</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>1</BreakIfRCount>
<Filename>.\src\device_ctrl_service.c</Filename>
<ExecCommand></ExecCommand>
<Expression>\\nrf52833_xxaa\src/device_ctrl_service.c\125</Expression>
</Bp>
</Breakpoint>
<Breakpoint/>
<Tracepoint>
<THDelay>0</THDelay>
</Tracepoint>

21
app/src/app_ble_service.c

@ -329,7 +329,16 @@ static void prvf_process_ble_rx_data(void* p_event_data, uint16_t len) {
send_error_receipt(rxheader, kifyhrs_ecode_cmd_not_support);
}
}
static const char* dropstate(uint8_t drop0, uint8_t drop1) {
static char state[128];
sprintf(state, "drop0:%d%d%d%d-%d%d%d%d drop1:%d%d%d%d-%d%d%d%d", //
drop0 & 0x80 ? 1 : 0, drop0 & 0x40 ? 1 : 0, drop0 & 0x20 ? 1 : 0, drop0 & 0x10 ? 1 : 0, //
drop0 & 0x08 ? 1 : 0, drop0 & 0x04 ? 1 : 0, drop0 & 0x02 ? 1 : 0, drop0 & 0x01 ? 1 : 0, //
drop1 & 0x80 ? 1 : 0, drop1 & 0x40 ? 1 : 0, drop1 & 0x20 ? 1 : 0, drop1 & 0x10 ? 1 : 0, //
drop1 & 0x08 ? 1 : 0, drop1 & 0x04 ? 1 : 0, drop1 & 0x02 ? 1 : 0, drop1 & 0x01 ? 1 : 0 //
);
return state;
}
void AppBleService_onServiceInitCB() {
ZLOGI("init zdatachannel service");
static zdatachannel_init_t zdatachannle_init;
@ -342,6 +351,16 @@ static void app_event_listener(void* p_event_data, uint16_t event_size) { //
app_event_t* event = (app_event_t*)p_event_data;
if (event->eventType == kevent_sensor_drop) {
prvf_try_report_sensor_drop_event(event->val.sensor_drop.drop0, event->val.sensor_drop.drop1);
} else if (event->eventType == kevent_tmr_scheduler) {
static int cnt = 0;
cnt++;
if (DeviceCtrl_now_state() == kdevice_state_sampling && cnt % 10 == 0) {
uint8_t drop0 = hwss_get_drop_state0();
uint8_t drop1 = hwss_get_drop_state1();
ZLOGI("[%d] drop %s", znordic_getpower_on_ms(), dropstate(drop0, drop1));
prvf_try_report_sensor_drop_event(drop0,drop1);
}
} else if (event->eventType == kevent_sample_stop_event) {
prvf_try_report_sample_end_event();
} else if (event->eventType == kevent_capture_little_data_block_event) {

14
app/src/board/board.h

@ -15,10 +15,10 @@
/**
* @brief SDCARD
*/
#define SDCARD_SPI_SCK_PIN 4 // SDCARD SCK
#define SDCARD_SPI_CS_PIN 5 // SDCARD CS
#define SDCARD_SPI_MISO_PIN 11 // SDCARD MISO
#define SDCARD_SPI_MOSI_PIN 17 // SDCARD MOSI
#define SDCARD_SPI_SCK_PIN 4 // SDCARD SCK CLK
#define SDCARD_SPI_CS_PIN 5 // SDCARD CS DATA3
#define SDCARD_SPI_MISO_PIN 11 // SDCARD MISO DATA0
#define SDCARD_SPI_MOSI_PIN 17 // SDCARD MOSI CMD
#define SDCARD_USBDRIVER_IC_JUNCTION_CTRL_NOE_PIN 1 // flash连接控制引脚
#define SDCARD_USBDRIVER_IC_RESET_PIN 28 // flash复位引脚
@ -40,12 +40,12 @@
/*******************************************************************************
* *
*******************************************************************************/
#define BUTTON_PIN 0
#define BUTTON_PIN 18
/*******************************************************************************
* *
*******************************************************************************/
#define BEEP_PIN 18
#define BEEP_PIN 0
/*******************************************************************************
* *
@ -64,7 +64,7 @@
#define SAMPLE_PRECISION 24
#define APP_MAX_EVEN_SIZE MAX(APP_TIMER_SCHED_EVENT_DATA_SIZE, sizeof(app_event_t))
#define APP_EVENT_QUEUE_SIZE 20
#define APP_EVENT_QUEUE_SIZE 100
#define APP_AUTO_SLEEP_TIMEOUT_MS (10 * 1000)
#define APP_BYTE_EACH_FRAME 9

2
app/src/board/board_sdcard_driver.c

@ -146,7 +146,7 @@ void Board_sdcardConnectToInternal() {
* @brief ¹ÒÔØSD¿¨
*/
DSTATUS disk_state = STA_NOINIT;
for (uint32_t retries = 3; retries && disk_state; --retries) {
for (uint32_t retries = 10; retries && disk_state; --retries) {
disk_state = disk_initialize(0);
}
if (disk_state != 0) {

28
app/src/device_ctrl_service.c

@ -57,7 +57,7 @@ static void zble_event_listener(zble_event_t* ble_event) { //
* *
*******************************************************************************/
static bool m_ispoweron = false;
static bool m_drop_state_triggered = false;
//static bool m_drop_state_triggered = false;
static void poweroff() {
if (!m_ispoweron) return;
BoardBeepCtrl_unload();
@ -65,7 +65,7 @@ static void poweroff() {
BoardBattery_unload();
BoardButton_unload();
SampleDataMgr_unloadDriver();
hwss_unload();
// hwss_unload();
DeviceCtrl_change_to_state(kdevice_state_standby);
zble_module_stop_adv();
BoardLight_setGreenLightEffect(kLightEffect_close);
@ -88,7 +88,6 @@ static void poweron() {
BoardBattery_load();
BoardButton_load();
SampleDataMgr_loadDriver();
hwss_load();
DeviceCtrl_change_to_state(kdevice_state_ready);
zble_module_start_adv();
BoardLight_setGreenLightEffect(kLightEffect_slowFlash);
@ -119,6 +118,7 @@ static void prvf_change_to_ready_state() {
DeviceCtrl_change_to_state(kdevice_state_ready);
BoardBeepCtrl_setEffect(kBoardBeepEffect_oneShortBeep);
}
#if 0
static const char* dropstate(uint8_t drop0, uint8_t drop1) {
static char state[128];
sprintf(state, "drop0:%d%d%d%d-%d%d%d%d drop1:%d%d%d%d-%d%d%d%d", //
@ -129,6 +129,7 @@ static const char* dropstate(uint8_t drop0, uint8_t drop1) {
);
return state;
}
#endif
static void prvf_change_to_sample_state() { //
if (m_device_state == kdevice_state_sampling) {
return;
@ -138,12 +139,12 @@ static void prvf_change_to_sample_state() { //
static void app_event_listener(void* p_event_data, uint16_t event_size) { //
app_event_t* event = (app_event_t*)p_event_data;
static bool inited;
if (!inited) {
nrf_gpio_cfg_input(BUTTON_PIN, NRF_GPIO_PIN_NOPULL);
inited = true;
}
ZLOGI("button %d", nrf_gpio_pin_read(BUTTON_PIN));
//static bool inited;
// if (!inited) {
// nrf_gpio_cfg_input(BUTTON_PIN, NRF_GPIO_PIN_NOPULL);
// inited = true;
// }
// ZLOGI("button %d", nrf_gpio_pin_read(BUTTON_PIN));
/*******************************************************************************
* *
@ -175,6 +176,7 @@ static void app_event_listener(void* p_event_data, uint16_t event_size) { //
ZLOGI("start sample");
// SD卡连接到单片机
SampleDataMgr_changeToLocalMode();
hwss_load();
//
m_sample_data_fd = SampleDataMgr_open(cratefilename(), kwrflag_write_only);
ZASSERT(m_sample_data_fd > 0);
@ -204,7 +206,7 @@ static void app_event_listener(void* p_event_data, uint16_t event_size) { //
uint8_t drop1 = hwss_get_drop_state1();
if ((drop0 || drop1) && event->eventType == kevent_tmr_scheduler) {
ZLOGI("[%d] drop %s", znordic_getpower_on_ms(), dropstate(drop0, drop1));
// ZLOGI("[%d] drop %s", znordic_getpower_on_ms(), dropstate(drop0, drop1));
}
bool stopcapture = false;
@ -223,6 +225,8 @@ static void app_event_listener(void* p_event_data, uint16_t event_size) { //
SampleDataMgr_changeToExtMode();
//
hwss_stop_capture();
//
hwss_unload();
//
prvf_change_to_ready_state();
@ -272,6 +276,10 @@ void DeviceCtrl_init() {
//
prvf_change_to_ready_state();
// BoardBeepCtrl_init();
// BoardBeepCtrl_load();
// BoardBeepCtrl_setEffect(kBoardBeepEffect_continuousShortBeep);
ZERROR_CHECK(app_timer_create(&m_state_machine_driver_tmr, APP_TIMER_MODE_REPEATED, state_machine_driver_tmr_cb));
ZERROR_CHECK(app_timer_start(m_state_machine_driver_tmr, APP_TIMER_TICKS(100), NULL)); // 200HZ采样
}

79
app/src/heart_wave_sample_service.c

@ -41,6 +41,9 @@ static adscfg_t m_prvads1cfg[] = //
{0x25, 0x00}, {0x26, 0x00}, {0x27, 0x08}, {0x28, 0x40}, {0x29, 0x00}, {0x2a, 0x00}, {0x2b, 0x00}, {0x2c, 0x00}, {0x2d, 0x00}, {0x2e, 0x33}, {0x2f, 0x30}, {0x30, 0x00}, {0x31, 0x00}, {0x32, 0x00}, {0x33, 0x00}, {0x34, 0x00}, {0x35, 0x00},
{0x36, 0x00}, {0x37, 0x00}, {0x38, 0x00}, {0x39, 0x00}, {0x3a, 0x00}, {0x3b, 0x00}, {0x3c, 0x00}, {0x3d, 0x00}, {0x3e, 0x00}, {0x3f, 0x00}, {0x40, 0xff}, {0x50, 0x00}, {0x60, 0x00}, {0x62, 0x00},
};
static adscfg_t m_prvads0cfg_cache[65];
static adscfg_t m_prvads1cfg_cache[65];
/*******************************************************************************
* VARIABLE *
*******************************************************************************/
@ -72,7 +75,7 @@ volatile static bool m_drop_state_triggered = false;
*******************************************************************************/
// READY_PIN
static void ads1293_ready_pin_irq(nrfx_gpiote_pin_t pin, nrf_gpiote_polarity_t action);
//static void ads1293_ready_pin_irq(nrfx_gpiote_pin_t pin, nrf_gpiote_polarity_t action);
// BUFFER
static void prvf_buffer_switch(void);
@ -196,6 +199,38 @@ static void ads1293_spi_writereg_and_check(ads1293_t* ads, uint8_t addr, uint8_t
}
}
static void tryloadcfg_from_fatfs(const char* file, adscfg_t* cfg, uint16_t cfgsize, uint16_t* cfg_ret_size) {
//
*cfg_ret_size = 0;
static FIL fd;
FRESULT ff_result = f_open(&fd, (const TCHAR*)file, FA_READ);
if (ff_result != FR_OK) {
ZLOGE("open %s failed\n", file);
return;
}
char line[128];
int niterm = 0;
f_gets(line, 128, &fd);
while (f_gets(line, 128, &fd)) {
uint32_t addr;
uint32_t value;
sscanf(line, "%x,%x", &addr, &value);
cfg[niterm].add = addr;
cfg[niterm].data = value;
niterm++;
if (niterm >= cfgsize) {
break;
}
}
*cfg_ret_size = niterm;
ZLOGI("load %s cfg size:%d\n", file, niterm);
f_close(&fd);
}
static void ads1293_init() {
/*******************************************************************************
* SPI初始化 *
@ -232,11 +267,43 @@ static void ads1293_init() {
ads1293_spi_writereg(&m_ads1293_0, TI_ADS1293_CONFIG_REG, 0);
for (uint16_t i = 0; i < ZARRAY_SIZE(m_prvads0cfg); i++) {
ads1293_spi_writereg_and_check(&m_ads1293_0, m_prvads0cfg[i].add, m_prvads0cfg[i].data);
uint16_t cfgsize = 0;
tryloadcfg_from_fatfs("0.cfg", m_prvads0cfg_cache, ZARRAY_SIZE(m_prvads0cfg_cache), &cfgsize);
if (cfgsize > 0) {
ZLOGI("load 0.cfg from fatfs\n");
if (memcmp(m_prvads0cfg_cache, m_prvads0cfg, sizeof(m_prvads0cfg)) != 0) {
ZLOGI("0.cfg is different from default\n");
} else {
ZLOGI("0.cfg is same as default\n");
}
for (uint16_t i = 0; i < cfgsize; i++) {
ads1293_spi_writereg_and_check(&m_ads1293_0, m_prvads0cfg_cache[i].add, m_prvads0cfg_cache[i].data);
}
} else {
for (uint16_t i = 0; i < ZARRAY_SIZE(m_prvads0cfg); i++) {
ads1293_spi_writereg_and_check(&m_ads1293_0, m_prvads0cfg[i].add, m_prvads0cfg[i].data);
}
}
for (uint16_t i = 0; i < ZARRAY_SIZE(m_prvads1cfg); i++) {
ads1293_spi_writereg_and_check(&m_ads1293_1, m_prvads1cfg[i].add, m_prvads1cfg[i].data);
tryloadcfg_from_fatfs("1.cfg", m_prvads1cfg_cache, ZARRAY_SIZE(m_prvads1cfg_cache), &cfgsize);
if (cfgsize > 0) {
ZLOGI("load 1.cfg from fatfs\n");
if (memcmp(m_prvads1cfg_cache, m_prvads1cfg, sizeof(m_prvads1cfg)) != 0) {
ZLOGI("1.cfg is different from default\n");
} else {
ZLOGI("1.cfg is same as default\n");
}
for (uint16_t i = 0; i < cfgsize; i++) {
ads1293_spi_writereg_and_check(&m_ads1293_1, m_prvads1cfg_cache[i].add, m_prvads1cfg_cache[i].data);
}
} else {
for (uint16_t i = 0; i < ZARRAY_SIZE(m_prvads1cfg); i++) {
ads1293_spi_writereg_and_check(&m_ads1293_1, m_prvads1cfg[i].add, m_prvads1cfg[i].data);
}
}
/**
@ -259,7 +326,7 @@ void ads1293_sample_one_frame();
void nrfx_timer_event_handler(nrf_timer_event_t event_type, void* p_context) { //
ads1293_sample_one_frame();
}
static void ads1293_ready_pin_irq(nrfx_gpiote_pin_t pin, nrf_gpiote_polarity_t action) { ads1293_sample_one_frame(); }
//static void ads1293_ready_pin_irq(nrfx_gpiote_pin_t pin, nrf_gpiote_polarity_t action) { ads1293_sample_one_frame(); }
static void ads1293_sample_one_frame() {
if (!m_work_flag) {
return;

2
sdk

@ -1 +1 @@
Subproject commit 45186701cdfa870204e0975dbf12a0feb50be71d
Subproject commit 20c99a0fe48fe28d0443e4f4429b9fcb9b3c0462
Loading…
Cancel
Save