一、写数据

unsigned char I2CWriteByte(unsigned int mem_addr,unsigned char*DDATAp,unsigned int count)
{ u8 i = ;unsigned int Timer_1ms; for(i=;i<count;i++)
{
I2cStart2();
I2cSend2(0xA0); //发送写命令
WaitAck2();
I2cSend2(mem_addr+i); //发送写入的地址
WaitAck2();
I2cSend2(DDATAp[i]);
WaitAck2();
I2cStop2(); //发送停止信号
Timer_1ms=0xFFFF;
while(Timer_1ms--)
{
__NOP(); }
}

以上是IIC写数据命令,注意,如果count超过8个,每次写一个字节都需要从I2cStart2()开始,如果从写Address开始循环,数据会出错,因为AT24C02每页有8个字节;

写数据代码技巧,这是看一个开发板的例子

const unsigned char cucBit2[] = {0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01};

void I2cSend2(unsigned char ucData2)
{
unsigned char IIC_i; SDA_Out();//设置为输出 CLR_SCL2(); for (IIC_i=;IIC_i<;IIC_i++)
{ if ( (ucData2 & cucBit2[IIC_i]) != )
{
SET_SDA2();
}
else
{
CLR_SDA2();
} DelayIntr2(); SET_SCL2(); DelayIntr2(); CLR_SCL2(); DelayIntr2(); }; }

注意ucData2 & cucBit2[IIC_i]一行,这种方式可以代替移位。

二、读数据

需要注意,需要两个START信号
参考http://www.eefocus.com/stm3222/blog/16-10/393817_4e6f0.html

关于应答与非应答

非应答就是SDA为高电平.
i2c传输的要点就是: 传输一个字节 后面必然紧跟一个"响应"信号.这个响应信号可能来自主机,或者是从机,具体是谁,就要看传输方向。
下文中按照我的个人习惯称呼为 "无应答":传输方向分两种情况(每种情况又有两种可能: A无应答和 B有应答): 1.主机->从机,主机对从机发一个字节之后,主机要读取从机的响应信号(主机读SDA线) A) 主机读SDA为高电平,说明从机无应答
B) 主机读SDA为低电平,说明从机有应答。2.从机->主机, 主机读取从机一个字节之后,主机要向从机发送一个响应信号(主机写SDA线) A) 主机写SDA为高电平,从机收到主机的无应答信号之后,从机停止传输,等待主机的停止信号。
B) 主机写SDA为低电平,从机收到主机的应答信号之后,从机继续输出下一字节。

IIC AT24C02读写数据的一点小体会的更多相关文章

  1. 在学习HTML——form表单中的label标签时的一点小体会

    在我啃了一遍书本之后,开始了在慕课看视频的过程,从最开始的HTML+CSS的基础课程看起,在第5-9小节讲到了form表单的label标签, 首先看一下慕课的讲解:  label 标签不会向用户呈现任 ...

  2. 暂时刷完leetcode的一点小体会

    两年前,在实习生笔试的时候,笔试百度,对试卷上很多问题感到不知所云,毫无悬念的挂了 读研两年,今年代笔百度,发现算法题都见过,或者有思路,但一时之间居然都想不到很好的解法,而且很少手写思路,手写代码, ...

  3. 实现AT24C02的数据读写操作

    /*************************************************************** 功能:11:32 2008-6-27 作者:SG 时间:2004-03 ...

  4. 使用Webbrowser的一点心得体会

    原文:使用Webbrowser的一点心得体会 自从用上VS2005后,发现多了个WebBrowser控件(.net 2003中不带),为图方便吧,有好多小工具就用这个写的,慢慢也有点体会了,总结一下, ...

  5. STM32F10X SPI操作flash MX25L64读写数据(转)

    源:STM32F10X SPI操作flash MX25L64读写数据 前一段时间在弄SPI,之前没接触过嵌入式外围应用,就是单片机也只接触过串口通信,且也是在学校的时候了.从离开手机硬件测试岗位后,自 ...

  6. jsoup爬虫简书首页数据做个小Demo

    代码地址如下:http://www.demodashi.com/demo/11643.html 昨天LZ去面试,遇到一个大牛,被血虐一番,发现自己基础还是很薄弱,对java一些原理掌握的还是不够稳固, ...

  7. C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped 转 VC中进程与进程之间共享内存 .net环境下跨进程、高频率读写数据 使用C#开发Android应用之WebApp 分布式事务之消息补偿解决方案

    C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped 转 节点通信存在两种模型:共享内存(Shared memory)和消息传递(Messages passing). ...

  8. SPI操作flash MX25L64读写数据

    STM32F10X SPI操作flash MX25L64读写数据 简单的一种应用,ARM芯片作为master,flash为slaver,实现单对单通信.ARM主控芯片STM32F103,flash芯片 ...

  9. BUI Webapp用于项目中的一点小心得

    接触BUI也有一段时间,也用在了移动端的项目开发中,总的来说,该框架用起来也挺灵活的,控件可以自由定制,前提是自己能认真地学习该框架的api,因为api里面说的东西比较详细,如果没有仔细看的,可能有些 ...

随机推荐

  1. Win10 打开 ubuntu子系统

    1. 修改windows的设置, 增加开发人员模式 针对开人员模式 使用添加删除程序 添加 ubuntu子系统的角色 运行输入control.. 然后添加删除程序 安装完后重启 运行输入 bash 就 ...

  2. Lodop导出excel及提示成功【回调和直接返回值】

    高版本的火狐和谷歌不再支持np插件之后,Lodop公司推出了C-Lodop,解决了这些浏览器不能用Lodop插件方式打印的问题,相比较Lodop插件,C-Lodop由于是以服务的形式出现,返回值不能直 ...

  3. codeforces439B

    Devu, the Dumb Guy CodeForces - 439B Devu is a dumb guy, his learning curve is very slow. You are su ...

  4. BZOJ4864[BeiJing 2017 Wc]神秘物质——非旋转treap

    题目描述 21ZZ 年,冬. 小诚退休以后, 不知为何重新燃起了对物理学的兴趣. 他从研究所借了些实验仪器,整天研究各种微观粒子.这 一天, 小诚刚从研究所得到了一块奇异的陨石样本, 便迫不及待地开始 ...

  5. 2015 HIAST Collegiate Programming Contest H

    A sequence of positive and non-zero integers called palindromic if it can be read the same forward a ...

  6. instanceof判断的对象可以是接口

    instanceof是Java的一个二元操作符(运算符) 用法 boolean result = object instanceof class instanceof通过返回一个布尔值来指出,这个对象 ...

  7. 自学Linux Shell13.1-命令行参数

    点击返回 自学Linux命令行与Shell脚本之路 Bash shell提供了一些不同的方法来从用户处获得数据,包括以下3中方法: 命令行参数(添加在名利后面的数据) 命令行选项(可修改命令行为的单个 ...

  8. CF1114E Arithmetic Progression(交互题,二分,随机算法)

    既然是在CF上AC的第一道交互题,而且正是这场比赛让我升紫了,所以十分值得纪念. 题目链接:CF原网 题目大意:交互题. 有一个长度为 $n$ 的序列 $a$,保证它从小到大排序后是个等差数列.你不知 ...

  9. A1085. Perfect Sequence

    Given a sequence of positive integers and another positive integer p. The sequence is said to be a & ...

  10. 【洛谷P4289】移动玩具 状压bfs

    代码如下 #include <bits/stdc++.h> using namespace std; const int dx[]={0,0,1,-1}; const int dy[]={ ...