【PIC单片机】-- IIC相关知识

图片来源网络文章目录

00 写在前面

该系列的文章,源自于担任过PIC单片机课程的助教,主要向学弟们讲解了几节实验课的内容。在此记录上课的一些知识。

本系列文章主要介绍的内容:
实验1–介绍和基本I/O–按钮和LED(学习嵌入式的第一步就是点一个灯,就像学习编程语言的第一步都是写一个“hello world”代码)

实验2–MPLAB+PICkit 3+LCD+I/O(这次主要是介绍液晶显示屏的使用,很多时候我们系统的调试都需要用到,比如做一个测温系统,那我们就可以通过液晶显示屏,显示传感器采集的数值,然后再通过软件来做进一步的处理)

实验3–ADC(这个是模数转化实验,就是之前模数电学习那些知识的一个综合运用)

实验4–串行通信–UART

实验5–串行通信–I2C

实验6–计时器和中断(这一部分也是很重要的知识点,在很多的嵌入式系统中都会用到,比如用单片机再加几个传感器就可以搭出智能车,智能车就会用到计时器、中断这些内容)

01 IIC相关知识

同步通信:

在这里插入图片描述

异步通信:
在这里插入图片描述

上节课我们讲的是异步通信,而今天我们要讲的是IIC是同步通信;

另外有一点上节课我们有讲到过串口模块我们可以用PIC单片机本身内部提供的,也可以选择普通的IO引脚,通过模拟时序得到串口通信。而今天的IIC模块也是类似的道理,我们PIC单片机内部已经集成了IIC模块,我们只要操作相应寄存器即可当然我们也可以通过普通的IO引脚,通过模拟时序得到IIC通信。

接下来我们打开芯片手册:
主控同步串行接口,包含SPI通信以及IIC通信;

**基本上我们之前讲课的时候,都是先介绍完外设的基本内容,然后接下去就讲解寄存器。**今天这个外设就是多了一个点,需要了解一下时序,了解完时序之后我们再来讲寄存器。

02 时序

最基本就是启动信号、停止信号、数据有效信号在这里插入图片描述在这里插入图片描述

因为PIC内部封装了芯片,所以只要让寄存器的某一位配置为某一值,就可以产生这个信号。

接下来我们看两个主要时序:就是在主模式下的发送端(对应写时序)、接收端(对应读时序)
发送时序:
在这里插入图片描述
接受时序:在这里插入图片描述

虚线框内这部分是启动信号,接着SCL产生9个脉冲,SDA要发送8个数据;刚开始是发送器件的地址,比如今天咱们要进行写操作的对象就是24C256_EEPROM;

这个时序是发送时序,所以很显然,我们这个R/W非 == 0.最后一位其实是方向位,就是你是接受数据还是发送数据。

只要SEN=1,就会产生这个方框里面的信号;如何是用51单片机,就需要用两个引脚模拟这两个时序。启动产生之后,硬件自动清零。

启动标志位SSPIF,SSP的中断标志寄存器,中断标志位,启动信号产生后,中断信号会置位;如果要检查是否有正常启动,就检测SSPIF有没有置位。数据发完之后,又会置位。

BF位:跟SSPBUF是否有数据有关;发送完就是置0;

SEN:启动信号
PEN:停止信号

R/W非:IIC的特性位;

RCEN:接受使能位;每次在接受一帧数据之前都要让RCEN置1;

ACKSTAT:这一位是用来判断从设备有没有给你发送应答信号,这一位是由硬件自动置位;
ACKDT:用来作为本次通信是否结束,需要应答就设置为0

RSEN:数据的传送方向一旦改变,就必须重新启动一下

03 寄存器

在MSSP模型中,与IIC模型相关的寄存器有六个:
• MSSP Control Register (SSPCON)
• MSSP Control Register 2 (SSPCON2)
• MSSP Status Register (SSPSTAT)
• Serial Receive/Transmit Buffer Register (SSPBUF)
• MSSP Shift Register (SSPSR) – Not directly accessible
• MSSP Address Register (SSPADD)
(从动模式下存储IIC设备的地址,主动模式下是IIC通信的波特率设置)
需要配置RC3、RC4引脚(时钟线SCL、数据线SDA)

SSPSTAT:主控同步串行口状态寄存器在这里插入图片描述SMP这一位是用来选择通信速率的,我们通常是使用100khz,所以我们选择1
CKE:
其他这六位都只能进行读(它的变化都是由硬件自动完成的),主要看一下bit0BF位。

在这里插入图片描述WCOL:写冲突检测位,置0
SSPOV:接受溢出标志位,置0
SSPEN:同步串行口使能位,置1
CKP:SCK释放控制位,我们在主控模式下没用到,所以置1
SSPM3~SSPM0:1000

最后SSPCON ==0x38;

在这里插入图片描述GCEN:不用管
ACKSTAT:从设备有没有给你发送应答,硬件自动置位
ACKDT:是否应答
ACKEN:应答时序使能
RCEN:接受数据使能
PEN:启动停止信号
RSEN:数据的传送方向一旦改变,就必须重新启动一下
SEN:启动信号使能位

初始化的时候先全部设置为0即可。

SSPADD:
从动模式下存储IIC设备的地址,主动模式下是IIC通信的波特率设置。
(SSPM3~SSPM0:1000公式在这里,最后就是得到100k)

04 外设模块EEPROM

那我们知道PIC单片机这个IIC通信方式之后,接下来我们就来介绍一个外设模块,也就是E2PROM,我们知道EEPROM是一个内存单元,我们可以往里面读或者写数据,那这个模块的读或者写的方式是通过IIC通信来进行的。

我们每学习一个外设,我们首先要知道它要如何使用,那这个时候就是需要看该外设的芯片手册,所以接下来我们需要讲一下EEPROM芯片手册的知识。今天我们要讲的这个是24C256这个芯片,除此之外还有24C02、24C04、24C08、24C16、24C32、24C64、24C128等等.

然后这个256K是位,如果换成字节就是32K字节
(32x1024=32,768字节)。

那大家第一次看着玩意可能会觉得,不知道要看啥。我带着大家看一遍。

我这边网上找了一份中文版,我们等等对照着看:
https://wenku.baidu.com/view/efea9a75f46527d3240ce002.html

特性、概述、管脚的封装、内部方框图、电气特征(直流特征、交流特征) 这些咱们可以先不管

接下来是讲该芯片的引脚:
引脚各是什么意思;
A2\A1\A0,主要是地址选择信号,这个是跟开发板上的VCC和VSS连接在一起的;
SDA:数据线
SDL:时钟线
WP:写保护,当其与VCC连接在一起时,就只能进行读,不能进行写;当与VSS连接在一起时,可以进行读和写操作;

接下来是一些信号的时序:
IIC总线的协议、其他各种信号

启动信号:
停止信号:
数据有效信号:
应答信号:

器件寻址:
首先我们刚开始会发送一个起始信号,起始信号发送完了之后发送这几位数,刚刚我们看了EEPROM是有3个地址选择引脚的,那我们如果有3位二进制的数,就有8种情况。

所以我们一条总线上面可以连接8个24C256,然后我们根据A2\A1\A0的情况就可以选择对其中某一个24C256进行操作。

接下来是选择读信号还是写信号,1是读0是写。写完之后,从设备会发送一个应答信号。

写操作:
字节写、页写

应答查询:
当你发送一个这样的时序的时候,代表着我向EEPROM写入一个数据;从这个停止信号开始之后,24C256内部就开始写操作,只有内部完成写操作,它才会发出应答信号,只有接受到应答信号之后,才能进行写操作。

读操作:
1、立即读操作;2、随机读操作;3、连续读操作;(3与1和2的区别,在于读到一个数据后,主机是发送应答信号还是发送停止信号,如果发送应答信号就代表连续读,如果发送停止信号就代表结束。)

从13页开始,就是芯片封装的一些信息,我们操作单片机就用不到了,这个通常是在画PCB的时候会用到;所以我们后面那部分也不用管它。

所以我们在来总结一下,虽然这个芯片手册有38也,但是后面那26页不用看,前面4页也不太需要看,总共其实就是阅读中间这8、9页。

那中间这8、9页的话,刚刚我们讲了:就包含三部分内容,第一部分:引脚相关信息;第二部分:启动信号、结束信号、应答信号、数据有效的一些时序;第三部分:如何进行读操作和写操作。

05 结尾

在这里插入图片描述

大家记得点赞收藏!!!

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值