软件I2C通信的设计要点

这篇具有很好参考价值的文章主要介绍了软件I2C通信的设计要点。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

IIC设计要点:

  • 多多借助逻辑分析仪,可以快速定位和解决问题。
  • 软件iic进行软件延时的时候, 其中使用的变量需要通过volatile进行修饰。
    volatile int delay = 100;
    while(delay --);
    
  • 注意当从机是芯片模拟的IIC时序,从机可能由于处理反应较慢的原因, 容易出现将总线stretch的现象, 就是从机会一直将总线的时钟线一直拉低。例如: 如果从机是内部自带MCU, 主机以400khz的频率进行读写的话,会造成从机无法响应, 并拉低时钟线。
  • 数据线在时钟线为低电平的时候进行改变,在时钟线为高电平,要一直进行保持, 因为数据线是边沿触发。
  • 在读完所有的数据之后,也就是读取完从机的最后一个字节之后,主机要进行发送NACK信号,以此来告诉从机读取结束, 然后发送停止信号。
  • 一般流程就是先写入设备地址,设备地址最后一个位表示接下来的动作是读还是写,然后发送要操作的寄存器地址,再进行读操作或者写操作。
  • 如果设备要从读动作变成写动作的话,主机不必发送stop信号,可以直接重新发送start信号以及设备地址。
  • 在没有发送stop信号前, 一开始发送的设备地址, 将会一直有效。
  • 有的芯片支持连续读,这样可以保证数据被一次性读取, 并且加快读写速度。
  • 注意: 读动作和写动作的时序, 最大的区别在于:
    1. 因为进行iic通信的时候, 想要进行数据交换的数据寄存器的地址是需要主机写入到设备的, 所以, 在读之前, 需要先执行设备地址(写)的操作, 然后再发送数据寄存器的地址给从机。 然后,执行设备地址(读)的操作, 再进行读的操作。
      数据寄存器的地址一旦写入, 如果没有去改变,就会一直有效。
       写动作: 开始信号 ---- 设备地址+写(0) ---- 寄存器地址 ----- 写数据
       读动作: 开始信号 ---- 设备地址+写 (0)---- 寄存器地址 ----- 开始信号 ---- 设备地址+读(1) ---- 读数据
    
    1. 写数据的时候, 每写入一个字节都要读对方ACK信号, 从机不知道何时结束, 没有NACK的动作; 读数据的时候, 每读取一个字节, 需要ACK从机以此, 读到最后一个字节的时候, 务必要NACK从机。

文章来源地址https://www.toymoban.com/news/detail-486600.html

到了这里,关于软件I2C通信的设计要点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32学习笔记(十)丨I2C通信(使用I2C实现MPU6050和STM32之间通信)

    ​  本次课程采用单片机型号为STM32F103C8T6。(鉴于笔者实验时身边只有STM32F103ZET6,故本次实验使基于ZET6进行的) ​  课程链接:江协科技 STM32入门教程   往期笔记链接:   STM32学习笔记(一)丨建立工程丨GPIO 通用输入输出   STM32学习笔记(二)丨STM32程序调试

    2024年01月19日
    浏览(59)
  • I2C通信概念及特点

    I2C是一种串行通信协议,常用于连接微控制器和外设。STM32是一种常用的微控制器,支持I2C通信协议。下面是关于STM32中I2C通信的概念、特点和代码实现的介绍。 1. I2C通信概念 I2C通信协议是一种双向、串行、同步通信协议,由Philips公司(现在的NXP公司)开发。I2C通信协议使用

    2024年02月09日
    浏览(51)
  • STM32——I2C通信

            I2C(Inter IC Bus)是由Philips公司开发的一种通用数据总线,它是两线式串行总线,它具有两根通信线: SCL(Serial Clock)、SDA(Serial Data) ,多用于主控制器和从器件间的主从通信,在小数据量场合使用,传输距离短,任意时刻只能有一个主机等特性。I2C是同步半双

    2024年01月25日
    浏览(52)
  • I2C通信协议详解和通信流程分析

    (1)SCL(serial clock):时钟线,传输CLK信号,一般是I2C主设备向从设备提供时钟的通道。 (2)SDA(serial data): 数据线,通信数据都通过SDA线传输 串行:只有一根数据线,每次传输一个bit位; 同步:主设备和从设备的工作时钟频率是一样的,主设备通过SCL时钟线给从设备提供时钟频率

    2024年02月13日
    浏览(47)
  • 10:STM32------I2C通信

    目录 一:I2C通信协议 1:I2C简历 2:硬件电路 3:I2C时序基本单元 A : 开/ 终条件 2:发送一个字节 3:接收一个字节 4:应答机制  4:I2C时序  1:指定地址写 2:当前地址读 3: 指定地址读 二:MPU6050 1:简历 2:参数 3:硬件电路 4:框图 5:寄存器地址 三:案例 A:软件I2C读写 MPU6050 1:连接图 2:代码 B:硬

    2024年02月20日
    浏览(60)
  • 【【STM32----I2C通信协议】】

    我们会发现I2C有两根通信线: SCL和SDA 同步 半双工 带数据应答 支持总线挂载多设备(一主多从,多主多从) 硬件电路 所有I2C设备的SCL连在一起,SDA连在一起 设备的SCL和SDA均要配置成开漏输出模式 SCL和SDA各添加一个上拉电阻,阻值一般为4.7KΩ左右 左边的CPU就是主机,他的权

    2024年02月12日
    浏览(52)
  • 【FPGA】十一、I2C通信回环

    文章目录 前言 一、I2C简介 二、I2C原理 2.1、I2C物理层 2.2、I2C协议层 2.2.1、I2C协议 2.2.2、I2C数据传输格式 2.2.3、I2C写操作 2.2.4、I2C读操作 三、项目设计 3.1、任务需求 3.2、状态机设计 3.3、程序代码 3.4、仿真验证 总结         在前面的文章内容中我们提到常用的三个低速串行

    2024年02月16日
    浏览(48)
  • STM32硬件I2C通信外设

    本文主要介绍stm32自带的I2C通信外设,对比与软件模拟I2C,硬件I2C可以自动生成时序,时序的操作更加及时规范,可以实现更加高性能的IIC通信。 本文内容与I2C软件通信有诸多类似之处,I2C软件通信可见:https://blog.csdn.net/qq_53922901/article/details/136662006?spm=1001.2014.3001.5501 在8位指

    2024年04月08日
    浏览(99)
  • 【Python FT4222 I2C通信】

    硬件调试过程,常要通过I2C通信。 利用Python结合I2C Master device, 调试和开发自动化测试软件,简单快捷。本文就简单介绍其中一种。 FT4222是一种支持SPI和I2C通信协议的USB接口设备。 “LibFT4222” 库提供了高级api以方便应用程序开发。 I2C接口可以配置为主模式或从模式。 SPI接

    2024年02月12日
    浏览(52)
  • day9 STM32 I2C总线通信

            I2C(Inter-Integrated Circuit)总线(也称IIC或I2C)是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备,是微电子通信控制领域广泛采用的一种总线标准。         它是同步通信的一种特殊形式,具有接口线少,控制方式简单,期间封装形式少,通

    2024年02月12日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包