/*
*Description :I2C初始化,这里配置为100khz的普通模式
*Param :None
*Return Code :None
*/
void I2C_Init(void)
{ RCC->APB2ENR|=1<<3; //PORTB是专用使能RCC->APB1ENR|=1<<21; //I2C1时钟使能GPIOB->CRL|=0X00FFFFFF; //GPIOB6,7复用为开漏输出GPIOB->CRL|=0XFF000000; //GPIOB6,7复用为开漏输出
// GPIOB->CRL|=0XFF000000; //GPIOB6,7复用为开漏输出GPIOB->ODR|=1<<6;GPIOB->ODR|=1<<7;I2C1->CR2|=0X24; //0X02 2MHZ-0X24 36MHZ, 0X14 20MHZ,0X08I2C1->CCR|=0XB4;I2C1->TRISE&=0X0000;I2C1->TRISE|=0X25;I2C1->OAR1|=1<<14; //在这里将该位用软件设置为1I2C1->OAR1|=0X0A; //写入从机地址I2C1->CR1|=1<<10; //使能I2C模式I2C1->CR1|=1<<0; //使能I2C模式
}
/*
*Description:MAX30101初始化
*Param :None
*Return Code:None
*/
void max30102_init(void)
{ /*对端口进行初始化*/GPIO_InitTypeDef GPIO_InitStructure;I2C_InitTypeDef I2C_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //打开PORTB口的时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE); //打开I2C1的端口GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_OD; //开漏复用输出GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6; //SCLGPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7; //SDAGPIO_Init(GPIOB,&GPIO_InitStructure);/*对I2C进行初始化*/I2C_InitStructure.I2C_Mode=I2C_Mode_I2C; //设置为I2C模式I2C_InitStructure.I2C_OwnAddress1=0X0A; //自己的地址I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;I2C_InitStructure.I2C_ClockSpeed = 100000;I2C_Init(I2C1,&I2C_InitStructure);I2C_Cmd(I2C1,ENABLE); //使能I2C1
}
本文发布于:2024-01-31 12:57:40,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170667706228688.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |