1.功能实现
本代码主要实现了日期星期和时间显示以及心率和血氧浓度的检测功能。
2.硬件连接

使用了MAX32600的一个SPI接口、一个I2C接口和一个UART接口。
| 1.14寸LCD屏引脚 | 板卡引脚 |
|---|---|
| SCL | P0_6 |
| SDA | P0_5 |
| DC | P0_12 |
| CS | P0_7 |
| RES | RSTN |
| VCC/GND | 单独供电3.3V(防止屏幕供电对控制器USB供电影响) |
| MAX30100引脚 | |
| SCL | P0_8 |
| SDA | P0_9 |
| VCC/GND | USB供电 |
| 时间校准 | |
| USB转TTL的TX | P0_11 |
| USB转TTL的RX | P0_10 |
3.数据处理
时间显示代码
static void display_real_time(void)
{
uint32_t ge, shi, bai, qian, tmp;
uint8_t enum_tmp;
r_time.sec = RTC_GetSecond();
r_time.update.bit.usec = UPDATE_ENABLE;
/* sec */
tmp = r_time.sec + p_time.sec[1] * 10 + p_time.sec[0];
if((tmp % 60) == 0)
{
r_time.min = tmp / 60;
r_time.update.bit.umin = UPDATE_ENABLE;
}
tmp %= 60;
ge = tmp % 10;
shi = tmp / 10;
if(r_time.update.bit.usec)
{
r_time.update.bit.usec = UPDATE_DISABLE;
LCD_ShowIntNum(WATCH_W + 120, WATCH_H, shi, 1, WHITE, BLACK, 32);
LCD_ShowIntNum(WATCH_W + 140, WATCH_H, ge, 1, WHITE, BLACK, 32);
}
/* min */
tmp = r_time.min + p_time.min[1] * 10 + p_time.min[0];
if((tmp % 60) == 0)
{
r_time.hr = tmp / 60;
r_time.update.bit.uhr = UPDATE_ENABLE;
}
tmp %= 60;
ge = tmp % 10;
shi = tmp / 10;
if(r_time.update.bit.umin)
{
r_time.update.bit.umin = UPDATE_DISABLE;
LCD_ShowIntNum(WATCH_W + 60, WATCH_H, shi, 1, WHITE, BLACK, 32);
LCD_ShowIntNum(WATCH_W + 80, WATCH_H, ge, 1, WHITE, BLACK, 32);
LCD_ShowChar(WATCH_W + 100, WATCH_H - 2, ':', WHITE, BLACK, 32, 0);
}
/* hr */
tmp = r_time.hr + p_time.hr[1] * 10 + p_time.hr[0];
if((tmp % 24) == 0</

本文详细介绍了如何基于MAX32660-EVSYS开发板实现心率和血氧检测功能的手环项目。通过SPI、I2C和UART接口连接硬件,结合时间显示、数据处理代码,作者分享了学习过程中的心得,包括对底层接口的深入理解和数据处理的挑战。此外,还表达了对硬禾学堂和得捷电子提供的学习机会的感激之情。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



