新建
上传
首页
助手
最?/div>
资料?/div>
工具

注意:本例分析基?/p>

DSP2808

中的

i2c_eeprom

示例程序

 

?/p>

 

AT24C1024 

 

EEPROM

存储器?/p>

当然,在?/p>

IIC

之前要了解一?/p>

IIC

工作流程,知?/p>

AT24C1024

存储芯片的使用方法?/p>

 

现在按以?/p>

4

部分来介绍这个示例?/p>

 

 

1.

示例程序中几种状态说?/p>

 

第一次看

i2c_eeprom

示例程序,对程序中的

MsgStatus

信息状态切换非常懵懂,为什

么要有这几个状态?状态切换顺序如何安排?一大堆的状态,

让人有些摸不着头脑?/p>

先把?/p>

序中的头文件

涉及?/p>

7

种状态分析一下?/p>

 

// I2C 

 

Message Commands for I2CMSG struct 

#define I2C_MSGSTAT_INACTIVE 

 

 

 

 

 

 

 

 

 

0x0000 

 

 

 

//

未激活状态:

一般成功发送数据或?/p>

//

接受数据后可以设置信息状态为此状态,告诉用户可进行下一次的写数据或读数据?/p>

 

#define I2C_MSGSTAT_SEND_WITHSTOP 

 

 

 

 

0x0010

 //

发送带停止位数据:

这是为写数据而设

///

的状态,写入地址和数据之后发个停止位告诉存储器数据写入完毕?/p>

 

#define 

I2C_MSGSTAT_WRITE_BUSY 

 

 

 

 

 

 

 

0x0011 

 

//

写数据忙状态:在将待写的数据放?/p>

//

缓存后,就可以使?/p>

IIC

传输数据了,然后把信息状态设为该状态,意在告诉用户:数?/p>

//

已经在传送过程中。当然是否传送完毕,还需要通过查询

SCD

位来判断?/p>

 

#define I2C_MSGSTAT_SEND_NOSTOP 

 

 

 

 

 

 

0x0020

//

发送无停止位数据:

这个状态是为了?/p>

//

取数据而设的,有查阅过

AT24C1024EEPROM

存储器使用手册的读者知道,在读数据之前

//

要发送数据的地址,发完地址不能产生停止位,这是存储器硬件设计决定的。设为这个状

//

态意在告诉读者,可以发送要读取的数据的地址了?/p>

 

#define I2C_MSGSTAT_SEND_NOSTOP_BUSY 

 

0x0021

//

发送无停止位数据忙状态:

这个状态是

//

为了读取数据而设?/p>

,

似于

I2C_MSGSTAT_WRITE_BUSY

,说明地址数据已经在传送过程中?/p>

//

传送是否成功,还要?/p>

ARDY

的状态?/p>

 

#define I2C_MSGSTAT_RESTART 

 

 

 

 

 

 

 

 

 

 

0x0022

//

重发开始位状态:这个状态也是为读取

 

////

数据而设?/p>

我们知道?/p>

读取存储器数据主要分两个步骤:第一?/p>

发?/p>

START

?/p>

+

设备地址

 

//+

数据地址

+

无停止位。第二,再发

START

?/p>

+

设备地址,紧接着存储器发送数据到

IIC

接收

 

//

缓存?/p>

(I2CDRR)

,接收到设定好的数据数量?/p>

I2CCNT

值)时输出停止位

STOP

. 

//

值得注意的是?/p>

理论上写完数据就能马上读?/p>

 

数据

 

?/p>

但事实上

EEPROM

存储器仍需要一

 

////

定延时来存储数据,约?/p>

2ms

左右?/p>

通过示波器可以观察到,写完数据后,并不能马上

 

//

成功读取数据,也就是说读数据的第一步骤要重复好几次(总线?/p>

50K

时,大约要重?/p>

 

//8

次)才能成功?/p>

 

#define I2C_MSGSTAT_READ_BUSY 

 

 

 

 

 

 

 

 

0x0023//

读取数据忙状态:

这个状态是为读取数

 

//

据而设。在读数据的第二步骤中,发完

START

?/p>

+

设备地址后,就设为这一状态。意在说

//

?/p>

IIC

开始等待接收固定数量(

I2CCNT

值)的数据。可以通过查询

ARDY

位判断?/p>

 

 

//

头文件中的其他定义应该没什么大问题了!

 

 

2.

 

AT24C1024 EEPROM

读写数据格式

 

?/p>

1

?/p>

AT24C1024

设备地址?/p>

 

1 

0 

1 

0 

0 

A1 

P0 

R/W 

 

Ͼλ
新建
上传
首页
助手
最?/div>
资料?/div>
工具

注意:本例分析基?/p>

DSP2808

中的

i2c_eeprom

示例程序

 

?/p>

 

AT24C1024 

 

EEPROM

存储器?/p>

当然,在?/p>

IIC

之前要了解一?/p>

IIC

工作流程,知?/p>

AT24C1024

存储芯片的使用方法?/p>

 

现在按以?/p>

4

部分来介绍这个示例?/p>

 

 

1.

示例程序中几种状态说?/p>

 

第一次看

i2c_eeprom

示例程序,对程序中的

MsgStatus

信息状态切换非常懵懂,为什

么要有这几个状态?状态切换顺序如何安排?一大堆的状态,

让人有些摸不着头脑?/p>

先把?/p>

序中的头文件

涉及?/p>

7

种状态分析一下?/p>

 

// I2C 

 

Message Commands for I2CMSG struct 

#define I2C_MSGSTAT_INACTIVE 

 

 

 

 

 

 

 

 

 

0x0000 

 

 

 

//

未激活状态:

一般成功发送数据或?/p>

//

接受数据后可以设置信息状态为此状态,告诉用户可进行下一次的写数据或读数据?/p>

 

#define I2C_MSGSTAT_SEND_WITHSTOP 

 

 

 

 

0x0010

 //

发送带停止位数据:

这是为写数据而设

///

的状态,写入地址和数据之后发个停止位告诉存储器数据写入完毕?/p>

 

#define 

I2C_MSGSTAT_WRITE_BUSY 

 

 

 

 

 

 

 

0x0011 

 

//

写数据忙状态:在将待写的数据放?/p>

//

缓存后,就可以使?/p>

IIC

传输数据了,然后把信息状态设为该状态,意在告诉用户:数?/p>

//

已经在传送过程中。当然是否传送完毕,还需要通过查询

SCD

位来判断?/p>

 

#define I2C_MSGSTAT_SEND_NOSTOP 

 

 

 

 

 

 

0x0020

//

发送无停止位数据:

这个状态是为了?/p>

//

取数据而设的,有查阅过

AT24C1024EEPROM

存储器使用手册的读者知道,在读数据之前

//

要发送数据的地址,发完地址不能产生停止位,这是存储器硬件设计决定的。设为这个状

//

态意在告诉读者,可以发送要读取的数据的地址了?/p>

 

#define I2C_MSGSTAT_SEND_NOSTOP_BUSY 

 

0x0021

//

发送无停止位数据忙状态:

这个状态是

//

为了读取数据而设?/p>

,

似于

I2C_MSGSTAT_WRITE_BUSY

,说明地址数据已经在传送过程中?/p>

//

传送是否成功,还要?/p>

ARDY

的状态?/p>

 

#define I2C_MSGSTAT_RESTART 

 

 

 

 

 

 

 

 

 

 

0x0022

//

重发开始位状态:这个状态也是为读取

 

////

数据而设?/p>

我们知道?/p>

读取存储器数据主要分两个步骤:第一?/p>

发?/p>

START

?/p>

+

设备地址

 

//+

数据地址

+

无停止位。第二,再发

START

?/p>

+

设备地址,紧接着存储器发送数据到

IIC

接收

 

//

缓存?/p>

(I2CDRR)

,接收到设定好的数据数量?/p>

I2CCNT

值)时输出停止位

STOP

. 

//

值得注意的是?/p>

理论上写完数据就能马上读?/p>

 

数据

 

?/p>

但事实上

EEPROM

存储器仍需要一

 

////

定延时来存储数据,约?/p>

2ms

左右?/p>

通过示波器可以观察到,写完数据后,并不能马上

 

//

成功读取数据,也就是说读数据的第一步骤要重复好几次(总线?/p>

50K

时,大约要重?/p>

 

//8

次)才能成功?/p>

 

#define I2C_MSGSTAT_READ_BUSY 

 

 

 

 

 

 

 

 

0x0023//

读取数据忙状态:

这个状态是为读取数

 

//

据而设。在读数据的第二步骤中,发完

START

?/p>

+

设备地址后,就设为这一状态。意在说

//

?/p>

IIC

开始等待接收固定数量(

I2CCNT

值)的数据。可以通过查询

ARDY

位判断?/p>

 

 

//

头文件中的其他定义应该没什么大问题了!

 

 

2.

 

AT24C1024 EEPROM

读写数据格式

 

?/p>

1

?/p>

AT24C1024

设备地址?/p>

 

1 

0 

1 

0 

0 

A1 

P0 

R/W 

 

">
新建
上传
首页
助手
最?/div>
资料?/div>
工具

注意:本例分析基?/p>

DSP2808

中的

i2c_eeprom

示例程序

 

?/p>

 

AT24C1024 

 

EEPROM

存储器?/p>

当然,在?/p>

IIC

之前要了解一?/p>

IIC

工作流程,知?/p>

AT24C1024

存储芯片的使用方法?/p>

 

现在按以?/p>

4

部分来介绍这个示例?/p>

 

 

1.

示例程序中几种状态说?/p>

 

第一次看

i2c_eeprom

示例程序,对程序中的

MsgStatus

信息状态切换非常懵懂,为什

么要有这几个状态?状态切换顺序如何安排?一大堆的状态,

让人有些摸不着头脑?/p>

先把?/p>

序中的头文件

涉及?/p>

7

种状态分析一下?/p>

 

// I2C 

 

Message Commands for I2CMSG struct 

#define I2C_MSGSTAT_INACTIVE 

 

 

 

 

 

 

 

 

 

0x0000 

 

 

 

//

未激活状态:

一般成功发送数据或?/p>

//

接受数据后可以设置信息状态为此状态,告诉用户可进行下一次的写数据或读数据?/p>

 

#define I2C_MSGSTAT_SEND_WITHSTOP 

 

 

 

 

0x0010

 //

发送带停止位数据:

这是为写数据而设

///

的状态,写入地址和数据之后发个停止位告诉存储器数据写入完毕?/p>

 

#define 

I2C_MSGSTAT_WRITE_BUSY 

 

 

 

 

 

 

 

0x0011 

 

//

写数据忙状态:在将待写的数据放?/p>

//

缓存后,就可以使?/p>

IIC

传输数据了,然后把信息状态设为该状态,意在告诉用户:数?/p>

//

已经在传送过程中。当然是否传送完毕,还需要通过查询

SCD

位来判断?/p>

 

#define I2C_MSGSTAT_SEND_NOSTOP 

 

 

 

 

 

 

0x0020

//

发送无停止位数据:

这个状态是为了?/p>

//

取数据而设的,有查阅过

AT24C1024EEPROM

存储器使用手册的读者知道,在读数据之前

//

要发送数据的地址,发完地址不能产生停止位,这是存储器硬件设计决定的。设为这个状

//

态意在告诉读者,可以发送要读取的数据的地址了?/p>

 

#define I2C_MSGSTAT_SEND_NOSTOP_BUSY 

 

0x0021

//

发送无停止位数据忙状态:

这个状态是

//

为了读取数据而设?/p>

,

似于

I2C_MSGSTAT_WRITE_BUSY

,说明地址数据已经在传送过程中?/p>

//

传送是否成功,还要?/p>

ARDY

的状态?/p>

 

#define I2C_MSGSTAT_RESTART 

 

 

 

 

 

 

 

 

 

 

0x0022

//

重发开始位状态:这个状态也是为读取

 

////

数据而设?/p>

我们知道?/p>

读取存储器数据主要分两个步骤:第一?/p>

发?/p>

START

?/p>

+

设备地址

 

//+

数据地址

+

无停止位。第二,再发

START

?/p>

+

设备地址,紧接着存储器发送数据到

IIC

接收

 

//

缓存?/p>

(I2CDRR)

,接收到设定好的数据数量?/p>

I2CCNT

值)时输出停止位

STOP

. 

//

值得注意的是?/p>

理论上写完数据就能马上读?/p>

 

数据

 

?/p>

但事实上

EEPROM

存储器仍需要一

 

////

定延时来存储数据,约?/p>

2ms

左右?/p>

通过示波器可以观察到,写完数据后,并不能马上

 

//

成功读取数据,也就是说读数据的第一步骤要重复好几次(总线?/p>

50K

时,大约要重?/p>

 

//8

次)才能成功?/p>

 

#define I2C_MSGSTAT_READ_BUSY 

 

 

 

 

 

 

 

 

0x0023//

读取数据忙状态:

这个状态是为读取数

 

//

据而设。在读数据的第二步骤中,发完

START

?/p>

+

设备地址后,就设为这一状态。意在说

//

?/p>

IIC

开始等待接收固定数量(

I2CCNT

值)的数据。可以通过查询

ARDY

位判断?/p>

 

 

//

头文件中的其他定义应该没什么大问题了!

 

 

2.

 

AT24C1024 EEPROM

读写数据格式

 

?/p>

1

?/p>

AT24C1024

设备地址?/p>

 

1 

0 

1 

0 

0 

A1 

P0 

R/W 

 

Ͼλ">
Ͼλ
Ŀ

DSP2808中i2c实例分析 - 百度文库
新建
上传
首页
助手
最?/div>
资料?/div>
工具

注意:本例分析基?/p>

DSP2808

中的

i2c_eeprom

示例程序

 

?/p>

 

AT24C1024 

 

EEPROM

存储器?/p>

当然,在?/p>

IIC

之前要了解一?/p>

IIC

工作流程,知?/p>

AT24C1024

存储芯片的使用方法?/p>

 

现在按以?/p>

4

部分来介绍这个示例?/p>

 

 

1.

示例程序中几种状态说?/p>

 

第一次看

i2c_eeprom

示例程序,对程序中的

MsgStatus

信息状态切换非常懵懂,为什

么要有这几个状态?状态切换顺序如何安排?一大堆的状态,

让人有些摸不着头脑?/p>

先把?/p>

序中的头文件

涉及?/p>

7

种状态分析一下?/p>

 

// I2C 

 

Message Commands for I2CMSG struct 

#define I2C_MSGSTAT_INACTIVE 

 

 

 

 

 

 

 

 

 

0x0000 

 

 

 

//

未激活状态:

一般成功发送数据或?/p>

//

接受数据后可以设置信息状态为此状态,告诉用户可进行下一次的写数据或读数据?/p>

 

#define I2C_MSGSTAT_SEND_WITHSTOP 

 

 

 

 

0x0010

 //

发送带停止位数据:

这是为写数据而设

///

的状态,写入地址和数据之后发个停止位告诉存储器数据写入完毕?/p>

 

#define 

I2C_MSGSTAT_WRITE_BUSY 

 

 

 

 

 

 

 

0x0011 

 

//

写数据忙状态:在将待写的数据放?/p>

//

缓存后,就可以使?/p>

IIC

传输数据了,然后把信息状态设为该状态,意在告诉用户:数?/p>

//

已经在传送过程中。当然是否传送完毕,还需要通过查询

SCD

位来判断?/p>

 

#define I2C_MSGSTAT_SEND_NOSTOP 

 

 

 

 

 

 

0x0020

//

发送无停止位数据:

这个状态是为了?/p>

//

取数据而设的,有查阅过

AT24C1024EEPROM

存储器使用手册的读者知道,在读数据之前

//

要发送数据的地址,发完地址不能产生停止位,这是存储器硬件设计决定的。设为这个状

//

态意在告诉读者,可以发送要读取的数据的地址了?/p>

 

#define I2C_MSGSTAT_SEND_NOSTOP_BUSY 

 

0x0021

//

发送无停止位数据忙状态:

这个状态是

//

为了读取数据而设?/p>

,

似于

I2C_MSGSTAT_WRITE_BUSY

,说明地址数据已经在传送过程中?/p>

//

传送是否成功,还要?/p>

ARDY

的状态?/p>

 

#define I2C_MSGSTAT_RESTART 

 

 

 

 

 

 

 

 

 

 

0x0022

//

重发开始位状态:这个状态也是为读取

 

////

数据而设?/p>

我们知道?/p>

读取存储器数据主要分两个步骤:第一?/p>

发?/p>

START

?/p>

+

设备地址

 

//+

数据地址

+

无停止位。第二,再发

START

?/p>

+

设备地址,紧接着存储器发送数据到

IIC

接收

 

//

缓存?/p>

(I2CDRR)

,接收到设定好的数据数量?/p>

I2CCNT

值)时输出停止位

STOP

. 

//

值得注意的是?/p>

理论上写完数据就能马上读?/p>

 

数据

 

?/p>

但事实上

EEPROM

存储器仍需要一

 

////

定延时来存储数据,约?/p>

2ms

左右?/p>

通过示波器可以观察到,写完数据后,并不能马上

 

//

成功读取数据,也就是说读数据的第一步骤要重复好几次(总线?/p>

50K

时,大约要重?/p>

 

//8

次)才能成功?/p>

 

#define I2C_MSGSTAT_READ_BUSY 

 

 

 

 

 

 

 

 

0x0023//

读取数据忙状态:

这个状态是为读取数

 

//

据而设。在读数据的第二步骤中,发完

START

?/p>

+

设备地址后,就设为这一状态。意在说

//

?/p>

IIC

开始等待接收固定数量(

I2CCNT

值)的数据。可以通过查询

ARDY

位判断?/p>

 

 

//

头文件中的其他定义应该没什么大问题了!

 

 

2.

 

AT24C1024 EEPROM

读写数据格式

 

?/p>

1

?/p>

AT24C1024

设备地址?/p>

 

1 

0 

1 

0 

0 

A1 

P0 

R/W 

 



ļ׺.doc޸Ϊ.docĶ

  • Ժ
  • ѧA̰37-39£
  • 2008꺼ѧУֱѡοԾ
  • ѧA̰37-39£
  • 2013ʡʦʸСѧѧ⾫Ծ
  • ιʵϰĵ
  • 㶫ʡƽַѧУĽʦ ,߳޸ĵ·
  • Ϳؽ쵼ɲʵ ƾʵѡɲ
  • ˱

վ

԰ Ͼλ
ϵͷ779662525#qq.com(#滻Ϊ@)