I2C通信

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

一、理论上了解I2C时序

I2C写数据时序如图:

I2C通信

 通过解析器解析I2C通信如上图(SCL和SDA反了)。

1---起始信号        2、3---应答信号ACK       5---停止信号

起始信号:SCL线是高电平时,SDA线从高电平向低电平切换。

停止信号SCL线是高电平时,SDA线从低电平向高电平切换。

I2C通信的过程:

起始--->写NFC芯片的地址(NFC芯片确认地址给MCU响应)--->MUC发送想要写入的寄存器地址(NFC芯片收到给响应)--->给地址写入数据(写入完成给响应)--->结束

注意:写NFC芯片的地址,一般NFC芯片为七位,比如:1010111,第八位是读写操作位。

1代表读;0代表写。

例如:0xA0是想对应芯片地址写数据。

遇到的问题:

写NFC地址的时候,没有收到对应响应。

查找数据手册后发现,有的芯片需要把CSN引脚拉低,拉低后解决问题。

I2C通信

二、实战

有一款NFC芯片FM11NT081D,它是通过I2C写入或读取里面数据的。

1、细看数据手册

粗略浏览数据手册目录,找到重点细看。

如:I2C工作流程、主机向从机写入数据流程及读取数据流程,还有写入数据用户区等。

I2C通信

I2C通信

 2、测试读写数据

2、1写数据

I2C通信

看数据手册分析:

芯片地址是1010111,七位地址

流程应该是:

start--->写NFC芯片的地址(最后一位是0,写数据)--->MUC发送想要写入的寄存器地址1--->MUC发送想要写入的寄存器地址2(注意高字节在前,低字节在后)  --->写入数据--->stop

对应写入代码测试效果。

I2C通信

 从下图看到数据写入成功。

遇到的问题:

我在写完两个寄存器地址后,告诉芯片现在开始写数据(这一步多余的,因为人家数据手册上告诉你:写入两个寄存器地址就可以写数据了!),加入了这个代码,时序上有回应,但是芯片读数据是没有写入信息。

I2C通信

 2、2读数据

 读数据就比较有意思了。

数据手册这样写:I2C通信流程应该是:

start--->写NFC芯片的地址(最后一位是1,读数据)--->MUC发送想要写入的寄存器地址1 --->读数据--->stop

但是按照这个流程测试,读不到数据。

查看数据手册,字节数超过256,经询问要写入寄存器地址两个,在读取。

I2C通信

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

然后,修改了一下读数据流程:

start--->写NFC芯片的地址(最后一位是0,写数据)--->MUC发送想要写入的寄存器地址1--->MUC发送想要写入的寄存器地址2(注意高字节在前,低字节在后)  --->告诉芯片开始读数据 --->读数据--->stop

以上流程可以读到数据。虽然不太懂,MCU终于可以读到数据了(开心~)。

I2C通信

 

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

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

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

相关文章

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

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

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

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

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

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

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

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

    2024年02月13日
    浏览(42)
  • 【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日
    浏览(41)
  • 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日
    浏览(56)
  • 【【STM32----I2C通信协议】】

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

    2024年02月12日
    浏览(48)
  • 软件I2C通信的设计要点

    多多借助逻辑分析仪,可以快速定位和解决问题。 软件iic进行软件延时的时候, 其中使用的变量需要通过 volatile 进行修饰。 注意当从机是芯片模拟的IIC时序,从机可能由于处理反应较慢的原因, 容易出现将 总线stretch 的现象, 就是从机会一直将总线的时钟线一直拉低。例

    2024年02月09日
    浏览(45)
  • 【STM32学习】——I2C通信协议&MPU6050姿态传感器&软件I2C读写MPU6050

    ​   目录 前言 一、I2C通信协议 1.简介 2.硬件电路设计 3.I2C时序(软件)

    2024年02月16日
    浏览(52)
  • 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日
    浏览(96)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包