STM32F407硬件IIC的应用驱动从机设备
文章目录
前言
MCP4017是一款可以通过IIC接口进行配置的可调电位器,此电位器有128个可配值.因为项目需要我们需要使用MCP4017调节电阻值.来作为其他部分电路的外围电路部分,可在调试的时候灵活配置.
1、STM32F407的硬件IIC使用步骤
1 IIC硬件引脚接口初始化.
首先需要初始化IIC引脚的SCK 和SDA 的模式为GPIO_Mode_AF,然后需要初始化IIC的配置寄存器,此过程固件库已经帮忙封装成接口,我们只需要调用接口配置即可.我们需要深入了解底层原理,可通过STM32f407手册对照相关寄存器理解硬件电路.
void I2C3_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
I2C_InitTypeDef I2C_InitStructure;
RCC_ClocksTypeDef rcc_clocks;
/* GPIO Peripheral clock enable */
RCC_AHB1PeriphClockCmd(IIC_SDA_GPIO_CLK|IIC_SCL_GPIO_CLK, ENABLE);
/*i2c3 Peripheral clock enable */
RCC_APB1PeriphClockCmd(IIC_CLK, ENABLE);
/*I2C3 configuration*/
GPIO_PinAFConfig(IIC_SDA_PORT, IIC_SDA_PINSOURCE, IIC_SDA_AF);
GPIO_PinAFConfig(IIC_SCL_PORT, IIC_SCL_PINSOURCE, IIC_SCL_AF);
// Pc9: I2C_SDA
GPIO_InitStructure.GPIO_Pin = IIC_SDA_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(IIC_SDA_PORT, &GPIO_InitStructure);
//PA8: I2C_SCL
GPIO_InitStructure.GPIO_Pin = IIC_SCL_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(IIC_SCL_PORT, &GPIO_InitStructure);
/* I2C Struct Initialize */
I2C_DeInit(IIC);
I2C_InitStructure.I2C_Mode = I2C_Mode_I2C


260

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



