蓝桥杯嵌入式5IIC&EEPROM&DCP功能实现学习笔记

IIC通信协议可分为物理层和协议层

物理层特点:

1.他是一个支持设备的总线,“总线”指多个设备共用的信号线,在一个IIC通讯总线中,可连接多个IIC通讯设备,支持多个通讯主机及多个通讯从机。

2.一个IIC总线只使用两条总线线路,一条双向串行数据线(SDA),一条串行时钟线(SCL),数据线即用来表示数据,时钟线用于数据收发同步。

3.每个连接到总线的设备都有一个独立的地址,主机可以利用这个地址进行不同设备之间的访问。

4.总线通过上拉电阻连接电源,当IIC设备空闲时,会输出高阻态,当所有设备都空闲,都输出高阻态时,会由上拉电阻将总线拉成高电平。

5.当多个主机同时使用总线时,为了防止数据冲突,会利用仲裁方式决定由哪个设备占用总线。

6.具有三种传输模式,标准模式传输速率为100kbit每秒,快速模式为400kbit每秒,高速模式下可达3.4Mbit每秒。但目前大多数IIC设备上不支持高速模式。

7.连接到相同总线的IIC数量受到总线的最大电容400pF限制。

下面是电路原理图

 下面是AT24C02&MCP4017的电路原理图

基于IIC总线的EEPROM——AT24C02芯片概述

256字节(256*8位)

E1,E2,E3为器件地址选择

WC#为数据写保护引脚(为高电平时进入写保护状态,只能读)

芯片地址为1010,IIC协议规定设备地址为7位或者10位(常用的是7位),紧跟设备地址的一位为数据方向位,用来表示数据传输方向,数据方向位为1时,表示主机由从机中读数据,为0时,表示主机向从机中写数据

0Xa1(1010 0001)读

0Xa0(1010 0000)写

DCP概述: MCP4017可编程调节电阻

带有读写命令的IIC协议

127个电阻,128级

转化为电阻阻值:R = 787.4 * read_resistor 欧
电压:3.3*(R/(R+10)) (假设外接的电压为3.3)

下面是电路原理图

下面是MCP4017的内部原理图,例:N=127时,应向电阻写入0X7F,此时电路电流如图所示

   

IIC初始化配置

注:配置IIC相关引脚为输出引脚(本开发板是GPIO模拟IIC通讯);这次我们连接LCD一起实现本次内容

实现目标:使用LCD显示开发板上电次数,每次上电,数据+1

GPIO端口初始化如下:将PB6和PB7引脚设为输出端口,初始化为High

 配置时钟

 将相关驱动文件放入src和inc里

 再使用keil添加相关文件

然后开始编写代码 

在main.c文件中引用相关的文件,否则不能使用IIC和LCD

我这里LCD的相关文件名不一致,所以我需要将lcd_hal.c文件中引用的文件名改为lcd_hal.h和fonts_hal.h

 

   首先进行LED的初始化

我们可以将LED的关闭代码写在GPIO.c里,然后在gpio.h文件中声明

 

接下来让LCD显示,先定义两个变量

 

 LCD显示代码

 接下来进行使用IIC总线和EEPROM的使用

我们先了解一下IIC读写流程

IIC写流程:1.启动总线   2.寻找从机(写指令)3.等待回应  4.选择地址  5.等待回应   6.写数据   7.等待回应   8.结束总线

IIC读流程:1.启动总线    2.寻找从机(写指令) 3.等待回应    4.选择地址    5.等待回应    6.结束总线    7.启动总线    8.寻找从机(读指令)  9.等待回应    10.读数据    11.结束总线

读写操作的代码可以写在iic_hal.c文件里,然后在iic_hal.h文件中声明

 

然后在main.c文件中使用读写函数

 注意:在我们操作的地址中可能已经有了其他数据,或者初始数值为0XFFF,所以我们可以先将将要操作的地址数据清0

 功能实现

MCP4017功能实现

代码

在IIC_hal.c文件中写入MCP读写函数

然后在IIC_hal.h文件中声明

 在main.c文件中调用函数写入00,根据上面MCP4017概述中的电路图可知,现在无电阻

相当于PB14引脚直接与GND相连,此时用电压表一端连接PB14引脚,一端接GND可查看电压

 功能实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值