OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9213|回复: 12

help!!关于24c02存储问题

[复制链接]

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2011-12-21
在线时间
0 小时
发表于 2012-2-13 11:19:06 | 显示全部楼层 |阅读模式
 小弟想把ADC采样的值adcx存储到24c02中,即按下KEY0进行一次存储,按下KEY2将存储的值读出。我在原子哥的II2例程中改了一下程序,跪求各位大大们帮小弟看看程序哪里错了。编译的时候显示没有错误,但是结果就是不出来。程序如下(在text.c中):
u8 TEXT_Buffer[2];//我想ADC采样值是12位的,所以要写入16位的数据,于是就先定义了一个数组,不知道对不对。
。。。
。。。
。。。
int main(void)
{
  u16 adcx;u8 comp1;u8 comp2;u16 readed;
....
...
.....
.....
adcx=Get_Adc(ADC_CH0);
key=KEY_Scan();
if(key==1)              //我想在按键0按下的时候存储采样值,按键0松开就不存储,所以我觉得这里用if貌似不对。
{
  comp1=adcx>>8;
  TEXT_Buffer[0]=comp1;
  comp2=adcx;
  TEXT_Buffer[1]=comp2;
  LCD_Fill(0,170,239,319,WHITE);
  LCD_ShowString(60,170,"Start Write 24c02...");
  AT24CXX_WriteLenByte(0,TEXT_Buffer[0],2);     //这里中间的参数为数据数组首地址,我这样写不知道对不对。也不知道这样的数据有没有存储到24c02中。
  LCD_ShowString(60,170,"24c02 Write Finished!");

}

if(key==3)
{
  LCD_ShowString(60,170,"Start Read 24c02...");
  readed=AT24CXX_ReadLenByte(0,2);                //这个地方也不清楚对不对。
  LCD_ShowString(60,70,"The Data Readed Is:  ");
  LCD_ShowNum(60 ,190,readed,16,16);           //显示不出来。
}
。。。
。。。
。。。
}


还请原子大哥以及各位大侠们看看。小弟谢谢了!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-2-13 12:36:48 | 显示全部楼层
回复【楼主位】Ethan:
---------------------------------
有没有初始化IIC?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2011-12-21
在线时间
0 小时
 楼主| 发表于 2012-2-13 13:42:51 | 显示全部楼层
IIC和Adc都在main函数中进行初始化了。基本上您的那个函数结构没有改变什么。
回复 支持 反对

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2011-12-21
在线时间
0 小时
 楼主| 发表于 2012-2-13 13:43:09 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
IIC和Adc都在main函数中进行初始化了。基本上您的那个函数结构没有改变什么。
回复 支持 反对

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2011-12-21
在线时间
0 小时
 楼主| 发表于 2012-2-13 14:05:03 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
请问原子大哥,我这句函数写的对不对?AT24CXX_WriteLenByte(0,TEXT_Buffer[0],2); 
我不太清楚16位数据的具体存储方法。还请原子大哥看看。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-2-13 16:22:33 | 显示全部楼层
不对.
如果要写入2个字节,你必须传一个2个字节的数给他.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2011-12-21
在线时间
0 小时
 楼主| 发表于 2012-2-13 18:24:58 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
但是AT24CXX_WriteLenByte()这个函数中间的哪个参数是数据数组首地址啊,我应该如何表达一个16位的数据数组首地址呢?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-2-13 19:17:04 | 显示全部楼层
直接转为16进制的数据.再传递.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2011-12-21
在线时间
0 小时
 楼主| 发表于 2012-2-14 13:20:50 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
谢谢原子哥!我按照您的方法顺利解决问题!
回复 支持 反对

使用道具 举报

2

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2014-12-7
在线时间
3 小时
发表于 2015-2-2 15:17:09 | 显示全部楼层
回复【9楼】Ethan:
---------------------------------
你改成什么样的了?谢谢了
回复 支持 反对

使用道具 举报

2

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2014-12-7
在线时间
3 小时
发表于 2015-2-2 15:29:01 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
这个问题同问。原子哥
“2个字节的数”是什么意思?
回复 支持 反对

使用道具 举报

2

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2014-12-7
在线时间
3 小时
发表于 2015-2-2 16:59:57 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
原子哥,如果直接转换为16进制的数?
谢谢了
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-2-3 00:32:04 | 显示全部楼层
看函数注释:
[mw_shl_code=c,true]//在AT24CXX里面的指定地址开始写入长度为Len的数据 //该函数用于写入16bit或者32bit的数据. //WriteAddr :开始写入的地址 //DataToWrite:数据数组首地址 //Len :要写入数据的长度2,4 void AT24CXX_WriteLenByte(u16 WriteAddr,u32 DataToWrite,u8 Len) { u8 t; for(t=0;t<Len;t++) { AT24CXX_WriteOneByte(WriteAddr+t,(DataToWrite>>(8*t))&0xff); } }[/mw_shl_code]

我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-26 04:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表