STM32F407 硬件IIC驱动MCP4017 数字电位器
STM32F407硬件IIC的應(yīng)用驅(qū)動(dòng)從機(jī)設(shè)備
文章目錄
- STM32F407硬件IIC的應(yīng)用驅(qū)動(dòng)從機(jī)設(shè)備
- 前言
- 1、STM32F407的硬件IIC使用步驟
- 1 IIC硬件引腳接口初始化.
- 2、MCP4017使用說(shuō)明
- 2.1 電位器mcp4017地址.
- 2.1 電位器mcp4017寫時(shí)序.
- 2.2 電位器mcp4017讀時(shí)序.
- 3 注意事項(xiàng)
- 總結(jié)
前言
MCP4017是一款可以通過(guò)IIC接口進(jìn)行配置的可調(diào)電位器,此電位器有128個(gè)可配值.因?yàn)轫?xiàng)目需要我們需要使用MCP4017調(diào)節(jié)電阻值.來(lái)作為其他部分電路的外圍電路部分,可在調(diào)試的時(shí)候靈活配置.
1、STM32F407的硬件IIC使用步驟
1 IIC硬件引腳接口初始化.
首先需要初始化IIC引腳的SCK 和SDA 的模式為GPIO_Mode_AF,然后需要初始化IIC的配置寄存器,此過(guò)程固件庫(kù)已經(jīng)幫忙封裝成接口,我們只需要調(diào)用接口配置即可.我們需要深入了解底層原理,可通過(guò)STM32f407手冊(cè)對(duì)照相關(guān)寄存器理解硬件電路. 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_SDAGPIO_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;I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;I2C_InitStructure.I2C_OwnAddress1 = 0x01;I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;I2C_InitStructure.I2C_ClockSpeed = 50000;I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;I2C_Init(IIC, &I2C_InitStructure);/* I2C Initialize */I2C_Cmd(IIC, ENABLE);I2C_AcknowledgeConfig(IIC, ENABLE);}2、MCP4017使用說(shuō)明
2.1 電位器mcp4017地址.
先看手冊(cè)找到設(shè)備地址:
從MCP4017手冊(cè)中可以看到7位地址是0x27 ,不包括讀寫位.
2.1 電位器mcp4017寫時(shí)序.
從圖可看到,主機(jī)通過(guò)IIC接口向MCP4017 寫一個(gè)字節(jié) 時(shí)序: 從機(jī)地址+寫命令+ 要寫的數(shù)據(jù).
STM32F407作為主機(jī)寫的代碼如下所示:
以下代碼經(jīng)驗(yàn)證可以正常寫數(shù)據(jù)到MCP4017.
2.2 電位器mcp4017讀時(shí)序.
從圖可看到,主機(jī)通過(guò)IIC接口向MCP4017 讀一個(gè)字節(jié) 時(shí)序: 從機(jī)地址+讀命令 后從機(jī)返回讀取的數(shù)據(jù).
STM32F407作為主機(jī)讀的代碼如下所示:
3 注意事項(xiàng)
本項(xiàng)目使用的是MCP4017 不要和MCP40D17搞混了兩者都屬于數(shù)字電位器但是兩者的讀寫時(shí)序不一樣要注意對(duì)照相應(yīng)的datasheet的時(shí)序去修改代碼.否則會(huì)讀寫不成功.
總結(jié)
以上就是本人調(diào)試MCP4017的過(guò)程記錄.如有錯(cuò)誤望指出.
總結(jié)
以上是生活随笔為你收集整理的STM32F407 硬件IIC驱动MCP4017 数字电位器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 一文普及工业控制、PLC
- 下一篇: VPP-20.09版本安装教程(离线版)