microcontroller 发表于 2023-1-18 21:46

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

本帖最后由 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);
}

/**
* @briefgpio configuration.
* @paramnone
* @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进行通信。通过滤波计算等算法将采集数据进行计算得出心率及血氧值。

pixhw 发表于 2023-2-2 10:13

这个max30102如何读取心率的数值呢?

tabmone 发表于 2023-2-2 10:22

这个血氧数值测量的精确吗?            

pentruman 发表于 2023-2-2 10:49

这个完整的计算方法有的吗?            

loutin 发表于 2023-2-2 11:46

最近比较火的就是用MAX30102制作一个血氧及心率测量仪

lzbf 发表于 2023-2-2 12:15

max30102模块内部的LED满足什么条件会亮

wilhelmina2 发表于 2023-2-2 12:45

楼主能够分享max30102的代码吗?

juliestephen 发表于 2023-2-2 15:31

max30102有没有放大滤波的功能?

fengm 发表于 2023-2-4 11:14

max30100与30102哪个好呢

eefas 发表于 2023-2-4 14:31

只有spi的代码吗?            

robincotton 发表于 2023-2-4 16:20

心率(BPM)测量 可以实现的 吗?

lihuami 发表于 2023-2-4 16:52

血氧数值是怎么计算出来的?            

dspmana 发表于 2023-2-4 17:22

tft使用的是总线驱动的吗?            

Bowclad 发表于 2023-2-7 18:39

血氧数值测量的精确看具体算法吧
页: [1]
查看完整版本: 【AT-START-F435测评】+TFT屏显示max30102心率血氧