当前位置: 首页 > news >正文

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引脚拉低,拉低后解决问题。

二、实战

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

1、细看数据手册

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

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

 2、测试读写数据

2、1写数据

看数据手册分析:

芯片地址是1010111,七位地址

流程应该是:

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

对应写入代码测试效果。

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

遇到的问题:

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

 2、2读数据

 读数据就比较有意思了。

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

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

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

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

 

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

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

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

 

http://www.lryc.cn/news/59546.html

相关文章:

  • 【Linux】man什么都搜不了,No manual entry for xxx的解决方案
  • STM32 库函数 GPIO_SetBits、GPIO_ResetBits、GPIO_WriteBit、GPIO_Write 区别
  • 在 RISC-V Linux 内核中添加模块
  • 利用AOP实现统一功能处理
  • 会话技巧---英文单词
  • VS中解决方案和项目的区别
  • MyBatis的parameterType传入参数类型和resultType返回结果类型
  • 什么是Android FrameWork,请你介绍一下?
  • 【SQL 必知必会】- 第十六课 更新和删除数据
  • 常见哈希算法及其应用
  • PHP快速入门02-PHP语言基础
  • FSCapture - 长截图工具
  • [ 云计算 | Azure ] Chapter 05 | 核心体系结构之管理组、订阅、资源和资源组以及层次关系
  • 【算法LearnNO.1】算法介绍以及算法的时间复杂度和空间复杂度
  • 013:Mapbox GL添加marker
  • 智慧工厂可视化合集,推动行业数字化转型
  • 工作流调度系统 Azkaban介绍与安装(一)
  • 【Python基础入门学习】Python工具Pycharm的安装与使用
  • 【版本控制】Github同步Gitee镜像仓库自动化脚本
  • 索引的分类
  • 【整理九】
  • 钢网是SMT生产使用的一种工具,如何制作?
  • 如何创建自己的gym环境
  • 使用Marshaller 将Java对象转化为XML格式和字符串转为xml
  • NumPy 秘籍中文第二版:八、质量保证
  • [ 应急响应篇基础 ] 日志分析工具Log Parser配合login工具使用详解(附安装教程)
  • 什么是MVVM?
  • Java 企业电子招投标采购系统源码:采购过程更规范,更透明
  • 1384:珍珠(bead)
  • 34岁本科男,做了5年功能测试想转行,除了进厂还能干什么?