系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
例如:


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 系列文章目录
  • 前言
  • 一、场景
  • 二、IIC核心知识点
    • 1.起始信号
    • 2.数据有效性
    • 3.写数据(1Byte)
    • 4.应答信号
    • 5.停止信号
    • 6.从机地址
  • 总结

前言

IIC通讯:二线制SDA/SCL


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

一、场景

  1. 51单片机模拟I/O配置SDA/SCL(主器件)
  2. 根据AT24C02芯片手册,配置IIC通讯底层时序,操作命令

二、IIC核心知识点

图1 总线时序:

1.起始信号

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

//起始信号
void IIC_Start()
{SDA = 1;
//  Delay2us(); //电路特性要求上升沿小于300ns,最好做延时保证必然高电平SCL = 1; //拉高总线,空闲状态Delay5us();   //1.起始信号建立时间tSU:STA至少4.7usSDA = 0;     //2.起始信号产生Delay5us();   //3.起始信号维持时间tHD:STA至少4usSCL = 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.7usSCL = 1; //SCL拉高 从器件读数据位Delay5us();  //时钟信号高电平宽度tHIGH至少4usSCL = 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(); //电路特性要求下降沿小于1usSDA = 0;
//  Delay2us();SCL = 1;Delay5us(); //停止信号建立时间最少4.7usSDA = 1;      //拉高SDA,停止信号Delay5us();  //最少4.7us,释放总线,准备下一次转换
}

6.从机地址


Address bit7~bit3 bit2 bit1 bit0 RW*
器件唯一标识 A2 A1 A0 传输方向

@1. bit7~bit3是IIC器件自身地址,由制造商给定,如At24c02地址为1010。
@2. bit2~bit0对应A2 ~A0由硬件连接决定。(一个系统中最多8个器件)
@3. 通讯时第一个字节需要传输地址字节,以确定接收的从器件。如硬件接线A2~A0为低电平,向该写数据。则器件地址为:1010 000 = 0xA0

总结

1.片外IIC器件大体都是这种配置,根据芯片手册会些许微调。实际开发中大多数IC自带EEPROM,后面举例展开
2.基于底层配置后继续实现一个字节的写、读。至于多字节的“按字节”写,“按页写”,“连续读”等等,后续几篇陆续进行。

#C51 IIC通讯(底层配置时序)相关推荐

  1. IIC通讯读取MPU6050

    江科大自化协学习记录,本实验利用IIC读取MPU6050数值,并且在OLED屏上显示 代码在最后面,笔者水平一般,各位凑合着看. 首先是OLED显示的代码,底层驱动来自江科大自化协. 链接就放在这里了 ...

  2. 示波器观察IIC通讯协议-STM32F4读写24C08EEPROM时序图-新人首更

    示波器观察时序不是因为好奇,是因为遇到了问题 STM32F4探索者开发板板载24C02EEPROM,自制了一块开发板,需要存储容量更大的24C08A芯片,焊接后发现开发板上能成功运行的程序,在自己的板 ...

  3. 8、RH850 F1 IIC通讯功能和配置

    前言: 续上章节UART后,此章讲解的IIC也是最常见的串行通讯,广泛应用于单片机和单片机之间通讯.同样这里IIC的具体原理讲解就不做介绍,不清楚的朋友可移步up主的个人专栏 ---- "串 ...

  4. vs如何自动生成基本的代码_STM32CubeMX底层配置代码自动代码生成

    STM32CubeMX + HAL  一些说明    底层配置    Cube基本使用    HAL库函数    中断回调函数    外设对应时钟  配置示例    小编有话说    RTC    S ...

  5. 树莓派IIC通讯获取BMI08x IMU数据进行姿态解算,并通过UART/TCP在rviz上显示

    截至2021年,树莓派出的最新款应该是Raspberry Pi 400,设计得跟键盘一样,很难想象到这是个树莓派,尤其是它的标语写的很好"你的下一个电脑,何必是电脑",不言而喻.反 ...

  6. ARM+SD2405 IIC_RTC驱动编写及IIC通讯协议

    IIC通讯协议 协议简介 IIC(inter-integrated Circuit集成电路总线)总线支持设备之间的短距离通信,用于处理器和一些外围设备之间的接口,它需要两根信号线来完成信息交换,它是由 ...

  7. LPC1768的iic通讯

    LPC1768有三路IIC,其中IIC0支持高速模式和plus模式,另外两路是普通IIC,使用IIC的过程如下 首先依然是打开IIC时钟,同时打开GPIO时钟 然后配置引脚为IIC功能 另外,因为ii ...

  8. STM32之IIC通讯-SHT30温湿度采集

    一.实验目的:通过单片机普通IO口,模拟IIC时序,掌握IIC通讯协议. 二.实验用到的主控芯片:STM32F103RCT6,IIC通讯引脚IIC_SDA:PC11,IIC_SCL:PC12 三.SH ...

  9. Bq769XX IIC 通讯 ALERT引脚

    Bq769X 初入BMS,很可能会选用到TI的这颗料,扩展性和可用性都还不错.但是在调试过程中,会有几个点让初入的人摸不着点. IIC通讯 TI的这个通讯准确说叫Mbus,但是实际与IIC通讯差异不大 ...

最新文章

  1. redistemplate文档用法_Jedis 使用及 StringRedisTemplate 常用方法
  2. python之vscode中手动选择python解释器(mac)
  3. 这年头,老赖没得混了!大数据式追债,你见过吗?
  4. No space left on device错误解决
  5. jquery正则表达式验证:验证全是数字
  6. 总结2:上传图片至指定服务器
  7. 分数怎么在计算机上关,电脑如何在注册表上关闭AutoRun功能
  8. notepad 没有plugin manager_和平精英巅峰赛正式开启,热度却没有象中那么高!
  9. Selenium之Chrome浏览器的启动问题及解决
  10. 想将有色彩的视频进行去色处理就这样做
  11. c语言fltk图形库,FLTK编程模型
  12. 【回波损耗(dB)和电压驻波比(VSWR)之间的关系】
  13. 2020年春节抢票神器
  14. Jenkins企业应用进阶详解
  15. 中国科学院计算机研究所李华,李华-中国科学院大学-UCAS
  16. .net中的泛型全面解析
  17. 可以在手机制作游戏的软件
  18. Windows系统System32目录的访问权限问题
  19. “钉铛”由小号切入企业服务,相当于通信+移动互联网+CRM
  20. Howlerjs 音频播放插件

热门文章

  1. css预处理器Less
  2. APP上传应用商店加固后打包
  3. git+github
  4. 大数据毕业设计 股票量化分析与股票预测系统 - Python
  5. arrays shot JAVA_Apache Flink 1.3-SNAPSHOT 中文文档: Java 8
  6. Error: Could not find tools necessary to compile a package/compilation failed for package
  7. PC端判断屏幕宽度到达手机宽度的时候,直接跳转手机页面
  8. C语言指针--二级指针
  9. 易支付5.18最新版协议去授权全套三端开源源码_客户端+云端+监控+协议三网免挂免输入(全套版)
  10. 使用CNN进行ROI提取(优化代码篇)