OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6186|回复: 3

30102初始化失败,程序卡死在max30102_init();里

[复制链接]

3

主题

6

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2019-4-4
在线时间
8 小时
发表于 2021-5-11 15:16:27 | 显示全部楼层 |阅读模式
5金钱
主函数(部分)int main(void)
{
        inv_error_t result;
        unsigned char accel_fsr = 0;
        unsigned short gyro_rate, gyro_fsr;
        unsigned long timestamp;
        struct int_param_s int_param;
  uint32_t un_min, un_max, un_prev_data;  
        int i;
        int32_t n_brightness;
        float f_temp;
//        u8 temp_num=0;
        u8 temp[6];
        u8 str[100];
        u8 dis_hr=0;
        u8 dis_spo2=0;
       
        delay_init();                     //Ñóê±oˉêy3õê¼»ˉ          
        NVIC_Configuration();          //éèÖÃNVICÖD¶Ï·Ö×é2:2λÇàÕ¼óÅÏè¼¶£¬2λÏìó|óÅÏè¼¶


        SysTick_Init();
        SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk;

        LED_GPIO_Config();
        LED_BLUE;
       
       
        USART_Config();


        EXTI_Pxy_Config();

        I2C_Bus_Init();

        OLED_Init();
        OLED_ColorTurn(0);
        OLED_DisplayTurn(0);
        OLED_Clear();       
       
  max30102_init(); //  --------------------------------程序死在这里
        LED_YELLOW;
        printf("mpu 6050 test start");


        result = mpu_init(&int_param);
          if (result) {



............







void max30102_init(void)
{

        GPIO_InitTypeDef GPIO_InitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);       
        GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_7;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
        GPIO_Init(GPIOC, &GPIO_InitStructure);

        IIC_Init();
       
        max30102_reset();
       

       
        max30102_Bus_Write(REG_INTR_ENABLE_1,0xc0);        // INTR setting
        max30102_Bus_Write(REG_INTR_ENABLE_2,0x00);
        max30102_Bus_Write(REG_FIFO_WR_PTR,0x00);          //FIFO_WR_PTR[4:0]
        max30102_Bus_Write(REG_OVF_COUNTER,0x00);          //OVF_COUNTER[4:0]
        max30102_Bus_Write(REG_FIFO_RD_PTR,0x00);          //FIFO_RD_PTR[4:0]
        max30102_Bus_Write(REG_FIFO_CONFIG,0x0f);          //sample avg = 1, fifo rollover=false, fifo almost full = 17
        max30102_Bus_Write(REG_MODE_CONFIG,0x03);          //0x02 for Red only, 0x03 for SpO2 mode 0x07 multimode LED
        max30102_Bus_Write(REG_SPO2_CONFIG,0x27);          // SPO2_ADC range = 4096nA, SPO2 sample rate (100 Hz), LED pulseWidth (400uS)  
        max30102_Bus_Write(REG_LED1_PA,0x24);           //Choose value for ~ 7mA for LED1
        max30102_Bus_Write(REG_LED2_PA,0x24);           // Choose value for ~ 7mA for LED2
        max30102_Bus_Write(REG_PILOT_PA,0x7f);           // Choose value for ~ 25mA for Pilot LED



                                                                                       
}




void max30102_reset(void)
{
        max30102_Bus_Write(REG_MODE_CONFIG,0x40);
        //max30102_Bus_Write(REG_MODE_CONFIG,0x40);
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

6

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2019-4-4
在线时间
8 小时
 楼主| 发表于 2021-5-11 16:32:12 | 显示全部楼层
u8 max30102_Bus_Write(u8 Register_Address, u8 Word_Data)
{

        /* 2éóÃ′®DDEEPROMËæ¼′¶áè¡Ö¸áîDòáD£¬á¬Dø¶áè¡èô¸é×Ö½ú */

        /* μú12½£o·¢ÆeI2C×üÏ߯ô¶ˉDÅoÅ */
        IIC_Start();

        /* μú22½£o·¢Æe¿ØÖÆ×Ö½ú£¬¸ß7bitêÇμØÖ·£¬bit0êǶáD′¿ØÖÆÎ»£¬0±íê¾D′£¬1±íê¾¶á */
        IIC_Send_Byte(max30102_WR_address | I2C_WR);        /* ′Ë′|êÇD′Ö¸áî */

        /* μú32½£o·¢ËíACK */
        if (IIC_Wait_Ack() != 0)
        {
                goto cmd_fail;        /* EEPROMÆ÷¼tÎTó|′e */
        }

        /* μú42½£o·¢Ëí×Ö½úμØÖ· */
        IIC_Send_Byte(Register_Address);
        if (IIC_Wait_Ack() != 0)
        {
                //goto cmd_fail;        /* EEPROMÆ÷¼tÎTó|′e */
        }
       
        /* μú52½£o¿aê¼D′èëêy¾Y */
        IIC_Send_Byte(Word_Data);

        /* μú62½£o·¢ËíACK */
        if (IIC_Wait_Ack() != 0)
        {
                //goto cmd_fail;        /* EEPROMÆ÷¼tÎTó|′e */
        }

        /* ·¢ËíI2C×üÏßí£Ö1DÅoÅ */
        IIC_Stop();
        return 1;        /* Ö′DD3é1| */

cmd_fail:
       
        IIC_Stop();
        return 0;
}
回复

使用道具 举报

3

主题

6

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2019-4-4
在线时间
8 小时
 楼主| 发表于 2021-5-11 16:32:39 | 显示全部楼层
AbnerCl86 发表于 2021-5-11 16:32
u8 max30102_Bus_Write(u8 Register_Address, u8 Word_Data)
{

这是i2c写函数
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2021-5-12 01:31:20 | 显示全部楼层
帮顶
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-24 06:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表