# 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. 电池电量低 ``` ``` 编程注意事项: 1. 使用了app_timer后,如果在系统中某个位置延时时间过程,会导致系统重启 TODO: 1. eeprom的文件扇区信息没有存储,也就是说每次电池用没了之后,数据会丢失 2. 如果要实现不丢数据,需要在eeprom中存储文件扇区信息,同时由于扇区的大小大于256字节,所以需要优化eeprom的写入函数。 单导蓝牙使用注意事项: 1. 开机后 开启广播 2. 关机 关闭广播 关机条件: 1. 蓝牙断开 2. 设备未操作 3. 30s内无任何蓝牙指令(连接) 1. 蓝牙的广播的启停独立控制和设备开机关机逻辑分开 开启广播:开机时候,如果当前没有开启广播,则打开广播 关闭广播: 关机后30s内无连接关闭广播 断开连接后30s关闭广播 2. 蓝牙状态指示灯: 1. 蓝牙广播打开:指示灯闪烁 2. 蓝牙广播关闭:指示灯关闭 3. 采样时不支持电量上报 4. 采样时不支持记录查询相关指令 5. 不支持删除采样记录 ```