打印
[活动专区]

【AT-START-F435测评】+TFT屏显示max30102心率血氧

[复制链接]
1740|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 microcontroller 于 2023-1-18 21:51 编辑

本次收到测评开发板为AT-START-F435,开发板硬件资源丰富,初次接触到雅特力芯片,使用起来很容易上手,通过官方FSP固件可以很容易的把板卡应用起来。
本次测评主要实现通过spi驱动3.5寸TFT液晶屏,显示血氧与心率,血氧和心率监测通过max30102模块提供数据。
spi采用偏上外设硬件spi3,配置代码如下:
spi_init_type spi_init_struct;
void spi_config(void)
{
  crm_periph_clock_enable(CRM_SPI3_PERIPH_CLOCK, TRUE);
//  crm_periph_clock_enable(CRM_SPI2_PERIPH_CLOCK, TRUE);
  spi_default_para_init(&spi_init_struct);
  spi_init_struct.transmission_mode = SPI_TRANSMIT_FULL_DUPLEX;
  spi_init_struct.master_slave_mode = SPI_MODE_MASTER;
  spi_init_struct.mclk_freq_division = SPI_MCLK_DIV_8;
  spi_init_struct.first_bit_transmission = SPI_FIRST_BIT_MSB;
  spi_init_struct.frame_bit_num = SPI_FRAME_8BIT;
  spi_init_struct.clock_polarity = SPI_CLOCK_POLARITY_HIGH;
  spi_init_struct.clock_phase = SPI_CLOCK_PHASE_2EDGE;
  spi_init_struct.cs_mode_selection = SPI_CS_SOFTWARE_MODE;
  spi_init(SPI3, &spi_init_struct);

//  spi_init_struct.master_slave_mode = SPI_MODE_SLAVE;
//  spi_init(SPI2, &spi_init_struct);

  spi_enable(SPI3, TRUE);
//  spi_enable(SPI2, TRUE);
}

/**
  * @brief  gpio configuration.
  * @param  none
  * @retval none
  */
void gpio_config(void)
{
  gpio_init_type gpio_initstructure;
  crm_periph_clock_enable(CRM_GPIOC_PERIPH_CLOCK, TRUE);
  crm_periph_clock_enable(CRM_GPIOD_PERIPH_CLOCK, TRUE);
  gpio_default_para_init(&gpio_initstructure);
  /* spi3 sck pin */
  gpio_initstructure.gpio_out_type       = GPIO_OUTPUT_PUSH_PULL;
  gpio_initstructure.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER;
  gpio_initstructure.gpio_pull           = GPIO_PULL_DOWN;
  gpio_initstructure.gpio_mode           = GPIO_MODE_MUX;
  gpio_initstructure.gpio_pins = GPIO_PINS_10;
  gpio_init(GPIOC, &gpio_initstructure);
  gpio_pin_mux_config(GPIOC, GPIO_PINS_SOURCE10, GPIO_MUX_6);

  /* spi3 miso pin */
  gpio_initstructure.gpio_pull           = GPIO_PULL_UP;
  gpio_initstructure.gpio_pins           = GPIO_PINS_11;
  gpio_init(GPIOC, &gpio_initstructure);
  gpio_pin_mux_config(GPIOC, GPIO_PINS_SOURCE11, GPIO_MUX_6);

  /* spi3 mosi pin */
  gpio_initstructure.gpio_pull           = GPIO_PULL_UP;
  gpio_initstructure.gpio_pins           = GPIO_PINS_12;
  gpio_init(GPIOC, &gpio_initstructure);
  gpio_pin_mux_config(GPIOC, GPIO_PINS_SOURCE12, GPIO_MUX_6);

//  /* spi2 sck pin */
//  gpio_initstructure.gpio_pull           = GPIO_PULL_DOWN;
//  gpio_initstructure.gpio_pins           = GPIO_PINS_1;
//  gpio_init(GPIOD, &gpio_initstructure);
//  gpio_pin_mux_config(GPIOD, GPIO_PINS_SOURCE1, GPIO_MUX_6);

//  /* spi2 miso pin */
//  gpio_initstructure.gpio_pull           = GPIO_PULL_UP;
//  gpio_initstructure.gpio_pins           = GPIO_PINS_2;
//  gpio_init(GPIOC, &gpio_initstructure);
//  gpio_pin_mux_config(GPIOC, GPIO_PINS_SOURCE2, GPIO_MUX_5);

//  /* spi2 mosi pin */
//  gpio_initstructure.gpio_pull           = GPIO_PULL_UP;
//  gpio_initstructure.gpio_pins           = GPIO_PINS_4;
//  gpio_init(GPIOD, &gpio_initstructure);
//  gpio_pin_mux_config(GPIOD, GPIO_PINS_SOURCE4, GPIO_MUX_6);
}

spi读写函数如下:
uint8_t SPI_WriteByte(u8 TxData)
{
//    u8 Rxdata;
//    HAL_SPI_TransmitReceive(&SPI5_Handler,&TxData,&Rxdata,1, 1000);   

//        return Rxdata;                        //返回收到的数据               
  uint8_t retry = 0;               

  while(spi_i2s_flag_get(SPI3, SPI_I2S_TDBE_FLAG) == RESET )
        {
                if(retry++ > 200)
                        return 0;        
        }
  spi_i2s_data_transmit(SPI3, TxData);

        retry = 0;
  while(spi_i2s_flag_get(SPI3, SPI_I2S_RDBF_FLAG) == RESET)
        {
                if(retry++ > 200)
                        return 0;        
        }

  return spi_i2s_data_receive(SPI3);        
}

max30102通过io模拟i2c进行通信。通过滤波计算等算法将采集数据进行计算得出心率及血氧值。

30ae91e800f4780aa5758c19a6e2535.jpg (155.55 KB )

30ae91e800f4780aa5758c19a6e2535.jpg

02e1b8ea9b488898920b7ea3f754821.jpg (154.67 KB )

02e1b8ea9b488898920b7ea3f754821.jpg

使用特权

评论回复
沙发
pixhw| | 2023-2-2 10:13 | 只看该作者
这个max30102如何读取心率的数值呢?

使用特权

评论回复
板凳
tabmone| | 2023-2-2 10:22 | 只看该作者
这个血氧数值测量的精确吗?              

使用特权

评论回复
地板
pentruman| | 2023-2-2 10:49 | 只看该作者
这个完整的计算方法有的吗?              

使用特权

评论回复
5
loutin| | 2023-2-2 11:46 | 只看该作者
最近比较火的就是用MAX30102制作一个血氧及心率测量仪

使用特权

评论回复
6
lzbf| | 2023-2-2 12:15 | 只看该作者
max30102模块内部的LED满足什么条件会亮

使用特权

评论回复
7
wilhelmina2| | 2023-2-2 12:45 | 只看该作者
楼主能够分享max30102的代码吗?

使用特权

评论回复
8
juliestephen| | 2023-2-2 15:31 | 只看该作者
max30102有没有放大滤波的功能?  

使用特权

评论回复
9
fengm| | 2023-2-4 11:14 | 只看该作者
max30100与30102哪个好呢  

使用特权

评论回复
10
eefas| | 2023-2-4 14:31 | 只看该作者
只有spi的代码吗?              

使用特权

评论回复
11
robincotton| | 2023-2-4 16:20 | 只看该作者
心率(BPM)测量 可以实现的 吗?

使用特权

评论回复
12
lihuami| | 2023-2-4 16:52 | 只看该作者
血氧数值是怎么计算出来的?              

使用特权

评论回复
13
dspmana| | 2023-2-4 17:22 | 只看该作者
tft使用的是总线驱动的吗?              

使用特权

评论回复
14
Bowclad| | 2023-2-7 18:39 | 只看该作者
血氧数值测量的精确看具体算法吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

114

帖子

1

粉丝