最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

从24c128到24c256[会要]

IT圈 admin 33浏览 0评论

2024年3月30日发(作者:郜智杰)

从24c128到24c256

24C256程序控制原理(ZZ)

24C256是具有I2C接口的512x64存储器,在数据的存储过程

中除了遵循I2C协议必须的逻辑以外,一个最容易忽视并且最容易导

致出错的问题就是存储地址问题。

24C256的数据容量是32768,即可以存储的有效字节数。所以

它的地址是16位整型数,有效范围是0~32768,数据字节为单位存

储,在16位地址其中有效数据只有15位,低6(0~5)位地址表示

的容量是0~63,然后连续的9(6~14)位地址表示页码的范围是0~

511,在数据连续存储过程中,相同的页面内,存储地址自动完成累

加过程;数据在不同页面的存储时,地址不能自动累加,如果不做正

确处理,数据将从本页开始的地址重新开始覆盖已经存在的数据。例

如,地址是63(二进制码111111)表示的是第0页的最后一个存储

空间,地址64(二进制码1,000000)表示第1页最开始的存储空间。

在当前存储地址是63时如果该器件处于连续存储模式下,数据将出

错。

原因是什么呢? 24C256支持数据的连续存储,最大的存贮

数量是64即一页的内容,如果在地址选择上超过了这个限制,数据

将会覆盖本页开始的位置重新存储,这就造成数据的错误,在使用上,

虽然数据是分页存储的,但在形式上是连续数据,所以存储中不需要

特意区分页地址和页内地址。

在连续存储中,尽管数据每次存储的数量小于64,数据也可能

出错,例如每次存储数量为11,地址的变化是0,11,22,33,44,

55,66„„,看上去没有什么问题,地址是按照每次11递增的,然

而存储的结果还是出错了,原因是什么呢?在地址55开始的空间无

法提供连续11个页内存储空间,当地址增加到63以后数据又从该页

0地址重新开始,从而导致数据储存的错误。有效的解决办法是如果

使用连续存储模式,地址的安排上要使存储块的大小为64,32,16,

8,4,2此外都不能使用连续地址存储。如果数据采集中的有效数据

位小于64,比如每次采集的结果是30字节,在连续存储模式下要按

照32为单位存储,不足的字节补零处理。

以下是MSP430F449对24C256数据传输基本控制模块

//延时处理模块

void IIC_Delay(void)

{

_NOP();

_NOP();

_NOP();

}

//启动I2C模块

void start_IIC(void) //

{

P2OUT&=0xf9; //

P2DIR&=0XFD; //SDA=1,

H,FD=1111,1101

P2DIR&=0XFB; //SCL=1

FB=1111,1011

P2DIR|=0X02; // SDA=0

P2DIR|=0X04; // SCL=0

}

//停止I2C模块

void stop_IIC(void) //

{

P2DIR|=0X02;//SDA=0

IIC_Delay();

P2DIR&=0XFB;//SCL=1 FB=1111,1011

P2DIR&=0XFD;//SDA=1,

FD=1111,1101

启动I2

设置P2输出

上拉电阻使得P2.1为

上拉电阻使得P2.1为H,

2024年3月30日发(作者:郜智杰)

从24c128到24c256

24C256程序控制原理(ZZ)

24C256是具有I2C接口的512x64存储器,在数据的存储过程

中除了遵循I2C协议必须的逻辑以外,一个最容易忽视并且最容易导

致出错的问题就是存储地址问题。

24C256的数据容量是32768,即可以存储的有效字节数。所以

它的地址是16位整型数,有效范围是0~32768,数据字节为单位存

储,在16位地址其中有效数据只有15位,低6(0~5)位地址表示

的容量是0~63,然后连续的9(6~14)位地址表示页码的范围是0~

511,在数据连续存储过程中,相同的页面内,存储地址自动完成累

加过程;数据在不同页面的存储时,地址不能自动累加,如果不做正

确处理,数据将从本页开始的地址重新开始覆盖已经存在的数据。例

如,地址是63(二进制码111111)表示的是第0页的最后一个存储

空间,地址64(二进制码1,000000)表示第1页最开始的存储空间。

在当前存储地址是63时如果该器件处于连续存储模式下,数据将出

错。

原因是什么呢? 24C256支持数据的连续存储,最大的存贮

数量是64即一页的内容,如果在地址选择上超过了这个限制,数据

将会覆盖本页开始的位置重新存储,这就造成数据的错误,在使用上,

虽然数据是分页存储的,但在形式上是连续数据,所以存储中不需要

特意区分页地址和页内地址。

在连续存储中,尽管数据每次存储的数量小于64,数据也可能

出错,例如每次存储数量为11,地址的变化是0,11,22,33,44,

55,66„„,看上去没有什么问题,地址是按照每次11递增的,然

而存储的结果还是出错了,原因是什么呢?在地址55开始的空间无

法提供连续11个页内存储空间,当地址增加到63以后数据又从该页

0地址重新开始,从而导致数据储存的错误。有效的解决办法是如果

使用连续存储模式,地址的安排上要使存储块的大小为64,32,16,

8,4,2此外都不能使用连续地址存储。如果数据采集中的有效数据

位小于64,比如每次采集的结果是30字节,在连续存储模式下要按

照32为单位存储,不足的字节补零处理。

以下是MSP430F449对24C256数据传输基本控制模块

//延时处理模块

void IIC_Delay(void)

{

_NOP();

_NOP();

_NOP();

}

//启动I2C模块

void start_IIC(void) //

{

P2OUT&=0xf9; //

P2DIR&=0XFD; //SDA=1,

H,FD=1111,1101

P2DIR&=0XFB; //SCL=1

FB=1111,1011

P2DIR|=0X02; // SDA=0

P2DIR|=0X04; // SCL=0

}

//停止I2C模块

void stop_IIC(void) //

{

P2DIR|=0X02;//SDA=0

IIC_Delay();

P2DIR&=0XFB;//SCL=1 FB=1111,1011

P2DIR&=0XFD;//SDA=1,

FD=1111,1101

启动I2

设置P2输出

上拉电阻使得P2.1为

上拉电阻使得P2.1为H,

发布评论

评论列表 (0)

  1. 暂无评论