历史上的今天
今天是:2025年06月13日(星期五)
2020年06月13日 | 单片机模拟 IIC 总线与 EEPROM(AT24C02)通信
2020-06-13 来源:eefocus
数据有效性:

起始和终止信号时序:

设备地址:

写字节时序:

读数据时序:

函数模拟 IIC 总线 时序:
/**************************************/
/******模拟I2C总线操作函数*************/
/**************************************/
//延时函数
void Delay()
{ ; ; }
//初始化
void I2C_Init()
{
SDA = 1;
SCL = 1;
}
//起始信号
void I2C_Start()
{
SDA = 1;
Delay();
SCL = 1;
Delay();
SDA = 0;
Delay();
}
//终止信号
void I2C_Stop()
{
SDA = 0;
Delay();
SCL = 1;
Delay();
SDA = 1;
Delay();
}
//应答信号
void I2C_Acknowledge()
{
unsigned char i;
SCL = 1;
Delay();
while((SDA == 1) && (i<250)){ //在一定时间内等待应答信号
i++;
}
SCL = 0;
Delay();
}
//写一个字节
void I2C_WriteByte(unsigned char Data)
{
unsigned char i,temp;
temp = Data;
SCL = 0;
Delay();
for(i = 0;i < 8;i++){
temp = temp<<1;
SDA = CY; //CY为PSW寄存器的溢出位
Delay();
SCL = 1;
Delay();
SCL = 0;
Delay();
}
SDA = 1;
Delay();
}
//读一个字节
unsigned char I2C_ReadByte()
{
unsigned char i,temp,Data;
SCL = 0;
Delay();
SDA = 1;
Delay();
for(i = 0;i < 8;i++){
SCL = 1;
Delay();
temp = SDA;
Data = (Data<<1)|temp;
SCL = 0;
Delay();
}
return Data;
}
//在特定位置写一个字节数据
void I2C_WriteByteAt(unsigned char address,unsigned char Data)
{
I2C_Init();
I2C_Start();
I2C_WriteByte(0xa0);//写器件地址,最后一位表示数据方向
I2C_Acknowledge();
I2C_WriteByte(address);//写存储地址
I2C_Acknowledge();
I2C_WriteByte(Data);//写数据
I2C_Acknowledge();
I2C_Stop();
}
//从特定位置读一个字节数据
unsigned char I2C_ReadByteAt(unsigned char address)
{
unsigned char Data;
I2C_Init();
I2C_Start();
I2C_WriteByte(0xa0);//写器件地址,最后一位表示数据方向
I2C_Acknowledge();
I2C_WriteByte(address);//写存储地址
I2C_Acknowledge();
I2C_Start();
I2C_WriteByte(0xa1);//再次写器件地址,注意改变数据方向
I2C_Acknowledge();
Data = I2C_ReadByte();//读数据
I2C_Stop();
return Data;
}
史海拾趣
|
[摘要]制造业的生产环节最有利实时数据的应用。因为制造商如果想真正改进工艺流程,就必须更好掌握生产现场发生的情况,以及管理层系统如何应对的情况。 \"Research and Markets\"刊物宣布在他们提供的报道中增添Real-time Data in Manufacturing ...… 查看全部问答> |
|
我最近在做USB转CAN过程中发现USB通讯速度受主机的影响很大,我已经把单片机的RAM全部用来做FIFO了,但还是在主机比较忙时还是会出现丢包现像。如果我不进行电脑操作,通讯到2700包/秒也不会丢包,但只要我进行操作(开IE,开窗口)就会出现不同程度 ...… 查看全部问答> |
|
PSDSoft Express软件生成的编程文件obj格式解析 各位好: 最近用到PSDSoft Express软件,其生成的编程文件obj中,包含:PLD映射,SRAM数据,EPROM数据,不知如何划分!因为编程PSD501芯片要用到这个文件. 另外,发现此软件生成的项目中,在生成obj文件之前,会自动 ...… 查看全部问答> |
|
arm上安装的是linux系统,外存是flash和sd卡,正常工作时需要频繁访问sd卡。 在系统意外掉电时,经常发生sd卡错误的问题,在下次重新启动时,系统会检查到sd卡错误,并将sd卡自动设置为只读权限,这个问题有人能帮我想想办法么?? sd卡错误的原 ...… 查看全部问答> |
|
中国3G时代即将到来,社会对3G嵌入式软件人才的渴求使3G人才已经成为业界关注“3G软环境”的焦点之一。目前,我国的3G核心人才仅有不足万人,而且基本上都被几大运营商和设备厂商所掌握。广大手持端设备制造商所急需的嵌入式开发人才、软件开发商所 ...… 查看全部问答> |
|
TCPMP的代码找到是找到了.可以,看了半天,没看懂.... 一点文档说明都没有.先请给位大人们..指点一下.... 只要能实现自动往playlist里面添加我想播放的文件即可. 找了半天没找到在那里...谢谢了… 查看全部问答> |
|
同济软件培训基地——微软嵌入式华东地区唯一授权中心 微软 WinCE 公开课程 尊敬的阁下: 当一个软件企业的嵌入式开发从无到有,或者当企业已有项目的投入,但发现项目进展缓慢,如何解决开发人员技术和资源的不 ...… 查看全部问答> |




