单片机
返回首页

#C51 IIC通讯(底层配置时序)

2022-09-15 来源:csdn

前言

IIC通讯:二线制SDA/SCL


提示:以下是本篇文章正文内容,下面案例可供参考


一、场景

51单片机模拟I/O配置SDA/SCL(主器件)

根据AT24C02芯片手册,配置IIC通讯底层时序,操作命令


二、IIC核心知识点

图1 总线时序:

在这里插入图片描述

在这里插入图片描述

1.起始信号

结合时序图1:SCL高电平期间,SDA由高到低跳变


在这里插入图片描述

//起始信号

void IIC_Start()

{

SDA = 1;

// Delay2us(); //电路特性要求上升沿小于300ns,最好做延时保证必然高电平

SCL = 1; //拉高总线,空闲状态

Delay5us(); //1.起始信号建立时间tSU:STA至少4.7us

SDA = 0; //2.起始信号产生

Delay5us(); //3.起始信号维持时间tHD:STA至少4us

SCL = 0; //4.时钟拉低,钳住总线,准备后续数据发送

}


2.数据有效性

SCL低电平时SDA数据允许高低变化

SCL高电平时SDA保持稳定

在这里插入图片描述
在这里插入图片描述

3.写数据(1Byte)

MSB在前,LSB在后

SDA数据位传输后,将SCL高电平期间,从器件开始读取传输的数据

SCL、SDA高电平代表总线空闲,准备主/从器件下一次动作


//写一个字节数据

void IIC_WriteByte(unsigned char vdata)

{

//第一次紧跟着起始信号,SCL已经拉低,无需再操作

unsigned char vtemp;

for(vtemp = 0x80; vtemp != 0; vtemp >= 1)

{

if(vtemp & vdata)

{

SDA = 1;//发送数据

}

else 

{

SDA = 0;

}

Delay5us(); //时钟信号低电平宽度tLOW至少4.7us

SCL = 1; //SCL拉高 从器件读数据位

Delay5us(); //时钟信号高电平宽度tHIGH至少4us

SCL = 0; //拉低总线,下一个数据传输

}

}


4.应答信号

8bit数据传输后第9位代表应答信号,0已接收 1未收到

在这里插入图片描述

//应答信号

bit IIC_RecvACK()

{

bit ack;

UC vErrTimeCnt = 0;

SDA = 1; //拉高总线空闲,为应答作准备

Delay5us(); //维持SCL低电平

SCL = 1; //SCL高电平期间,从器件应答,拉高或拉低SDA:0接收1无

Delay5us();

if((1 == SDA) && (vErrTimeCnt < 255)) //延时保护,防止未收到应答,程序一直停留

{

vErrTimeCnt++;

ack = 0;

}

else

{

ack = 1;

}

return ack;

}


5.停止信号

结合时序图1:SCL高电平期间,SDA由低拉高

在这里插入图片描述

//停止信号

void IIC_Stop()

{

SCL = 0; //拉低时钟线,防止SDA由高到低产生起始信号

// Delay2us(); //电路特性要求下降沿小于1us

SDA = 0;

// Delay2us();

SCL = 1;

Delay5us(); //停止信号建立时间最少4.7us

SDA = 1; //拉高SDA,停止信号

Delay5us(); //最少4.7us,释放总线,准备下一次转换

}


6.从机地址

在这里插入图片描述

在这里插入图片描述

image.png

@1. bit7~bit3是IIC器件自身地址,由制造商给定,如At24c02地址为1010。

@2. bit2~bit0对应A2 ~A0由硬件连接决定。(一个系统中最多8个器件)

@3. 通讯时第一个字节需要传输地址字节,以确定接收的从器件。如硬件接线A2~A0为低电平,向该写数据。则器件地址为:1010 000 = 0xA0


总结

1.片外IIC器件大体都是这种配置,根据芯片手册会些许微调。实际开发中大多数IC自带EEPROM,后面举例展开

2.基于底层配置后继续实现一个字节的写、读。至于多字节的“按字节”写,“按页写”,“连续读”等等,后续几篇陆续进行。

进入单片机查看更多内容>>
相关视频
  • 【TI MSPM0 应用实战】智能小车+工业角度编码器+血氧仪+烟雾探测器!硬核参考设计详解!

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

  • 直播回放: Microchip Timberwolf™ 音频处理器在线研讨会

  • 基于灵动MM32W0系列MCU的指夹血氧仪控制及OTA升级应用方案分享

精选电路图
  • 1瓦线性调频增强器

  • 1瓦四级调频发射机

  • 500W MOS场效应管电源逆变器,12V转110V/220V

  • 红外开关

  • LM317过压保护

  • 0-30V/20A 大功率稳压电源(采用LM338)

    相关电子头条文章