目录

一、 有关M24LR04的介绍

二、 I2C的读写时序

三、 参考代码

四、 调试中遇到的问题


一、 有关M24LR04的介绍

M24LR04是ST公司的一款NFC芯片,支持ISO15693和ISO1800-3等协议,存储结构2048x32位。在RF模式下,采用13.56Mhz无线电载波通信;在I2C模式下,作为从机应答主机的请求。

该芯片支持写数据加密,支持一组I2C密码和三组RF密码。

二、 I2C的读写时序

设备选择码:当作为I2C的从机时,设备选择码组成为1010+E2 E1 E0+读写位。其中E1和E0默认为00;当读写数据时,E2的值为0,当访问扇区安全字节区时,E2的值为1。

以下是I2C的读写数据和写密码的时序图。

三、 参考代码

/*------------------------------------------------------------------------*/
sbit SCL = P1^2;
sbit SDA = P3^0;
#define SDA_IO_Out   (P3CON |= (1<<0))     //设置IO口为输出
#define SDA_IO_In     (P3CON &= ~(1<<0))    //设置IO口为输入/***************************************以下为模拟I2C部分****************************************************/
void delay(uint cnt)
{uint m,n;for(m=0;m<cnt;m++)for(n=0;n<10;n++);
}static void I2c_start()
{SDA_IO_Out;SDA=1;delay(1);SCL=1;delay(1);           SDA=0;delay(1);       SCL=0;delay(1);
}static void I2c_stop()
{SDA_IO_Out;SDA=0;delay(1);SCL=1;delay(1);      SDA=1;delay(1);
}//发送ack或者nack
static void I2c_sendAck(bit ack)
{SDA_IO_Out;SDA = ack;      SCL = 1;       delay(1);    SCL = 0;delay(1);}//等待ack
static bit I2c_getAck(void)
{bit ack;        SDA_IO_In;SCL = 1;        delay(1);    ack = SDA;      SCL = 0;delay(1);   return ack;
}static u8 I2c_read()
{u8 i,dat=0;SDA_IO_In;for(i=0;i<8;i++){     SDA =1;SCL=1;delay(1);dat=dat<<1;dat|=SDA;delay(1);SCL=0;delay(1);   }return dat;
}static void I2c_write(u8 dat)
{u8 i;SDA_IO_Out;for(i=0;i<8;i++){       SDA=dat>>7;dat<<=1;delay(1);SCL=1;delay(1);SCL=0;delay(1);}I2c_getAck();
}void WriteOneByteToDevice(u8 deviceCode,u16 datAddr,u8 dat)
{I2c_start();I2c_write(deviceCode);I2c_write(datAddr<<8);I2c_write((u8)datAddr);I2c_write(dat);I2c_stop();
}
u8 ReadOneByteFromDevice(u8 deviceCode,u16 datAddr  )
{u8 dat;I2c_start();I2c_write(deviceCode);I2c_write(datAddr<<8);I2c_write((u8)datAddr);I2c_start();I2c_write(deviceAddr+1);dat=I2c_read();I2c_sendAck(1);I2c_stop();return dat;
}/******demo*********/
WriteOneByteToDevice(0xA6,0x0004,0x55);
ReadOneByteFromDevice(0xA6,0x0004);

四、 调试中遇到的问题

1. 因为是模拟的I2C,SDA脚在数据交互时,有可能作为输出脚向从机发送数据,也有可能作为输入脚读取从机返回的数据。所以要特别注意控制改引脚对应的IO口方向(对应代码中的SDA_IO_Out 和 SDA_IO_In)。如果不加上IO口方向控制,I2c波形可能出现畸形,导致读取数据失败。如下图

正常读取数据的波形

2.以上代码展示的是简单的读写一字节数据,如果要想进行加密写的话,只需要先写对应的密码,再写数据就好了。读数据不受加密限制。

51单片机模拟I2C读写M24LR04相关推荐

  1. 51单片机模拟I2C程序

    IIC即Inter-Integrated Circuit(集成电路总线),这种总线类型是由飞利浦公司研发出来的.是一种两线式串行总线,两条线可以挂多个参与通信的器件,即多机模式.一般由控制器作为主机. ...

  2. 51单片机模拟I2C协议

    什么是I2C 首先需要知道什么是I2C协议.I2C总线是由Philips公司开发的一种简单.双向二线制同步串行总线.它只需要两根线即可在连接于总线上的器件之间传送信息(摘自百度百科).I2C主要有两条 ...

  3. 使用51单片机模拟IIC从机,实现主机(51单片机)对模拟从机的读写操作

    51单片机.IIC从机模拟.IIC协议.iiC读写 1.思路 1.1写数据 1.2读数据 2.从机IIC协议 2.1起始信号和结束信号 2.2从机读取和写数据 2.3从机发送和接收ACK 2.4判断主 ...

  4. 51单片机对I2C总线上挂接多个AT24C02的读写操作+Proteus仿真

    51单片机对I2C总线上挂接多个AT24C02的读写操作+Proteus仿真 Proteus仿真图 实例代码 //对I2C总线上挂接多个AT24C02的读写操作 #include <reg51. ...

  5. stm32_GPIO模拟I2c读写EEPROM

    /* 下面给出STM32通过GPIO模拟I2C读写EEPROM程序 */ #define SCL_H GPIOB->BSRR = GPIO_Pin_6 #define SLC_L GPOIB-& ...

  6. 51单片机模拟数字键盘输入以及图像显示+Proteus仿真

    51单片机模拟数字键盘输入以及图像显示+Proteus仿真 关于取模 取模软件:pctolcd2002 文字取模方式:阴码–列行式,逆向 主程序代码 //*********************** ...

  7. STM32F10x_模拟I2C读写EEPROM(2)(切换SDA方向 + 读ACK位 + 完整代码)

    文章目录 前言 一.宏定义 二.I2C延时函数 1. 注意 三.起始 / 停止信号 1. 时序图 2. 起始信号 3. 停止信号 四.切换SDA方向 1. SDA配置为输入模式 2. SDA配置为输出 ...

  8. 51单片机模拟电梯控制(含完整代码)

    51单片机模拟电梯控制 前言 一.普中51-单核-A2开发板 二.系统功能 三 .预定义 四.电梯内按有报警按键,该功能由外部中断功能和蜂鸣器实现 五.延时函数-----电梯每上升,下降一层和开门关门 ...

  9. 51单片机模拟电子琴+Proteus仿真

    51单片机模拟电子琴+Proteus仿真 Proteus仿真 示例程序 #include<reg51.h> #include<intrins.h>#define uchar u ...

最新文章

  1. MySQL 学习笔记(8)— 触发器
  2. 【原创】如何分析一个网站使用的服务器类型
  3. [设计原则与模式] 如何理解TDD的三条规则
  4. 简单shell:删除五日之前的日志文件
  5. 基于Flume的美团日志收集系统-----架构和设计
  6. C#不支持XPATH2.0
  7. 【AI视野·今日CV 计算机视觉论文速览 第244期】Fri, 15 Apr 2022
  8. 算法——动态规划算法求解字符串的编辑距离
  9. 如何在Ubuntu上安装MariaDB
  10. 拓端tecdat|R语言特征选择——逐步回归
  11. 【原创】实战padding oracle漏洞
  12. Elasticsearch的索引模块(正排索引、倒排索引、索引分析模块Analyzer、索引和搜索、停用词、中文分词器)...
  13. IOS 蓝牙开发(一)蓝牙协议基础知识
  14. 关于华硕电脑FX80GE风扇模式无法调节
  15. Windows 启动 Idea 报错 if you already hava a 64-bit JDK ... 以及 failed to create jvm...
  16. NeoKylin中标麒麟系统用户和组的管理命令
  17. 直接从国家统计局上找数据,并分析人口数据变化,做成可视化图
  18. 手撸springmvc乞丐版
  19. App Ratings and Reviews
  20. 用计算机弹出晴空,宠物小精灵之晴空之翼

热门文章

  1. 自我激励的有效方法20个(推荐)
  2. 上海新汇通: 让冷链运输更可控
  3. 荣耀8X成为全球首款通过TUV莱茵低蓝光认证的手机
  4. win10实时防护彻底关掉
  5. 直播新架构升级:全量支撑淘宝双11直播
  6. 智能洗拖地机哪个品牌好一点、拖洗地机品牌排行榜前十名
  7. IPv6篇之即插即用
  8. 性能测试监控指标和分析
  9. utf8汉字编码16进制对照
  10. DevOps开发运维:Buddy中文版正式发布