You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
1 year ago | |
---|---|---|
.vscode | 1 year ago | |
app | 1 year ago | |
ble_app_uart_c | 1 year ago | |
libznordic@e16602d90e | 1 year ago | |
res | 1 year ago | |
sdk@45186701cd | 1 year ago | |
.clang-format | 1 year ago | |
.gitignore | 1 year ago | |
.gitmodules | 1 year ago | |
README.md | 1 year ago | |
SSD1312_Datasheet (1).pdf | 1 year ago | |
TXW64128-41-TSWG13P096G-A-VER1.0.pdf | 1 year ago | |
ads1293.pdf | 1 year ago | |
m24m02-dr.pdf | 1 year ago |
README.md
conduction1_dynamic_electrocardiograph
使用说明
https://iflytop1.feishu.cn/wiki/Fp0fwciUEibtm4kaUeXcraOCneg
开发板IO资源说明:
#define BSP_LED_0 13
#define BSP_LED_1 14
#define BSP_LED_2 15
#define BSP_LED_3 16
#define BUTTON_1 11 // 上拉低电平有效
#define BUTTON_2 12 // 上拉低电平有效
#define BUTTON_3 24 // 上拉低电平有效
#define BUTTON_4 25 // 上拉低电平有效
sdk\components\boards\pca10100.h
清风开发板
AIN2 -> 光感
I2C
#define TWI_SCL_M 28 //I2C SCL引脚
#define TWI_SDA_M 30 //I2C SDA引脚
------------------------------------
PIN4 PIN30/PIN31 PIN28/PIN29 PIN11/PIN20
设备行为:
1. 按下按键或者电极触发后开始广播
2. 当电极没有触发,且蓝牙没有连接,且超时10s后,停止广播,进入低功耗模式
3. 设备状态
关机(休眠)
开机蓝牙未连接(广播中)
蓝牙已连接
难点:
1.采样间隔2ms (500HZ)
2.数据往flash中写入时间消耗,cache选择多大,数据什么时候上报。
1. ADC:单次采样,阻塞拿数值(50us)
2. 电池电量的采集ADC和电压采集ADC用的是同一个ADC
(这里先使用最简单的阻塞式ADC采集,电池ADC3次,采样ADC3次)
屏幕驱动:
https://github.com/libdriver/ssd1306
1306驱动和1312是一样的,只不过1312默认是镜像的
UI元素:
-------------------
1. 不同大小的字体
2. 进度条
3. [X]
4. APP
-------------------
1. 进度条
2. 圈,x
3. 时间
4. LOGO
5. [X]
6. HR
7. APP查看结果
8. 年月日/时分秒
9. 不同大小的字体
xxx
+xx
LOGO
进度条
年月日
时分秒
保持静止
___________
[===== ]
------------
心电图
[===== ]
[X]
不足30秒
正在保存
[===== ]
APP
查看结果
存储:
1帧
2byte
200帧
400byte
1秒
400byte
30秒
12kbyte
120秒
48kbyte
----------------------------
2Mbit
256Kbyte
640秒 /120 = 5条记录
256kbyte
256byte索引
[
ID:[年月日]
packetOFF:[]
usage[]:
date:[]
]
48kbyte --> 一个扇区
256/4k = 64个扇区 10s数据
openStorage(年月日)
writeData(){
// 数据量是否大于最大数值
// 是否还有空间
// 擦除旧的空间
// 写入数据
// 写入缓存
// 是否刷新缓存?
找到空闲扇区,写入数据。
找不到空闲扇区,按照顺序释放旧的扇区
重新寻找扇区
}
// 倍数读取
readData(){
1. 判断数据在哪个扇区
3. 读取扇区数据信息
2. 读取数据
3. 拷贝数据
}
// Header
[
usage:
fileHeaderdata:
fileId:
dataoff:
datalen:
]
{
fileUUID:年月日时分秒
sector:[1,2,3,4,5]
datalen: 100
//分辨率
//总时长
//采样率
}
硬件异常:
1. eeprom读写失败
2. 电池电量低