野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 36376|回复: 16

求助,怎么把LCD触摸屏校准后的数据保存到EEPROM里面

[复制链接]
发表于 2013-8-17 10:48:55 | 显示全部楼层 |阅读模式
火哥在中级篇里面的液晶触摸画板里面说道:“转换公式的系数为以上代码 66~72 行中的 aa1、bb1、cc1、aa2、bb2、cc3 这几个全局变量,如果把这几个数据保存在非易失性存储器(SD 卡、EEPROM 等)中,上电后向这几个变量赋值,就不需要每次上电都进行一次触屏校准了。“然后我今晚就一直在尝试。但是越搞越乱,求火哥再给个教程
回复

使用道具 举报

发表于 2013-8-17 10:59:30 | 显示全部楼层
不就是多了个 写 EEPROM 和 读 EEPROM 操作嘛,如果抱着学习的心态,就自己动手。
别人搞出来的东西,你只会烧代码,那还不是你的东西
回复 支持 反对

使用道具 举报

发表于 2013-8-17 13:31:54 | 显示全部楼层
可以参考一下这个帖子,完成了欢迎把代码放上来让大家学习 http://www.firebbs.cn/forum.p ... =688&extra=page%3D1
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-18 17:38:12 | 显示全部楼层
东方大乐透 发表于 2013-8-17 10:59
不就是多了个 写 EEPROM 和 读 EEPROM 操作嘛,如果抱着学习的心态,就自己动手。
别人搞出来的东西,你只 ...

因为那个触摸屏的数据是四个long double型的。而EEPROM只能一次次的写八位数据进去。所以中间需要把那些数据进行转换。然后这个过程很蛋疼
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-18 17:38:28 | 显示全部楼层
东方大乐透 发表于 2013-8-17 10:59
不就是多了个 写 EEPROM 和 读 EEPROM 操作嘛,如果抱着学习的心态,就自己动手。
别人搞出来的东西,你只 ...

因为那个触摸屏的数据是四个long double型的。而EEPROM只能一次次的写八位数据进去。所以中间需要把那些数据进行转换。然后这个过程很蛋疼
回复 支持 反对

使用道具 举报

发表于 2013-8-18 17:42:15 | 显示全部楼层
windqj 发表于 2013-8-18 17:38
因为那个触摸屏的数据是四个long double型的。而EEPROM只能一次次的写八位数据进去。所以中间需要把那些数 ...

归根到底还是二进制数据,每个字节存储进去,修改出来即可
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-18 17:42:36 | 显示全部楼层
flyleaf 发表于 2013-8-17 13:31
可以参考一下这个帖子,完成了欢迎把代码放上来让大家学习  http://www.firebbs.cn/forum.p ... =68 ...

可以把那六个数据直接用写EEPROM的那个函数?但是数据类型完全不一样啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-18 17:47:53 | 显示全部楼层
山外メ雲ジ 发表于 2013-8-18 17:42
归根到底还是二进制数据,每个字节存储进去,修改出来即可

我之前的做法是建立一个u8的数组作为缓冲区后把其中一个数据截成8个8位的数据,但是发现截取的时候整个数据已经被破坏掉了。然后就不知道怎么弄了
回复 支持 反对

使用道具 举报

发表于 2013-8-18 17:51:30 | 显示全部楼层
windqj 发表于 2013-8-18 17:47
我之前的做法是建立一个u8的数组作为缓冲区后把其中一个数据截成8个8位的数据,但是发现截取的时候整个数 ...

long double 型的4个元素数组!!!
sizeof 求得这个数组占用的空间

例如:
long double lcd_save[4];

然后 复制的时候: char * psave = (char *) lcd_save;//需要强制类型转换
把 psave 的数据 复制 sizeof(lcd_save) 数目 就好
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-24 08:58:22 | 显示全部楼层
山外メ雲ジ 发表于 2013-8-18 17:51
long double 型的4个元素数组!!!
sizeof 求得这个数组占用的空间

万分感谢。我好像理解了。就去尝试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-26 15:11:20 | 显示全部楼层
山外メ雲ジ 发表于 2013-8-18 17:51
long double 型的4个元素数组!!!
sizeof 求得这个数组占用的空间

你好,现在我遇到了新问题,我的EEPROM初始化是写在了校准函数后。因为野火M3的板子EEPROM和液晶屏公用了I2C1,但是现在我的程序卡在了这个函数I2C_EE_PageWrite(u8* pBuffer, u8 WriteAddr, u8 NumByteToWrite)
的这个语句里面 while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));
回复 支持 反对

使用道具 举报

发表于 2013-8-27 01:23:01 | 显示全部楼层
windqj 发表于 2013-8-26 15:11
你好,现在我遇到了新问题,我的EEPROM初始化是写在了校准函数后。因为野火M3的板子EEPROM和液晶屏公用了 ...

共用 I2C 是没问题的,本来 I2C 就是 拿来共用的!

I2C ,每次停止读写后,应该要延时一下的。
回复 支持 反对

使用道具 举报

发表于 2013-8-27 01:23:31 | 显示全部楼层
windqj 发表于 2013-8-26 15:11
你好,现在我遇到了新问题,我的EEPROM初始化是写在了校准函数后。因为野火M3的板子EEPROM和液晶屏公用了 ...

看一下是不是第一个 I2C 读写正常,第二个就不正常
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-13 20:37:43 | 显示全部楼层
蒜你狠 发表于 2013-8-27 01:23
共用 I2C 是没问题的,本来 I2C 就是 拿来共用的!

I2C ,每次停止读写后,应该要延时一下的。

不好意思,之前在弄国赛,没来论坛了。有空就去看看。
回复 支持 反对

使用道具 举报

发表于 2013-10-20 16:38:08 | 显示全部楼层
本帖最后由 天之痕 于 2013-10-20 17:12 编辑

需要这么多的参数

touch_para.Divider=-1032.0; //非零就行

         
aa1=-0.065056;
bb1= -0.000560;
cc1=254.992076;
aa2=-0.000073;
bb2=0.087993;
cc2=-14.600699;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-27 11:13:20 | 显示全部楼层
山外メ雲ジ 发表于 2013-8-18 17:51
long double 型的4个元素数组!!!
sizeof 求得这个数组占用的空间

现在发现触摸屏只是将I2C的两个引脚模拟为SPI里面的CS和IRQ,在我用I2C_EE_INIT后,这两个引脚应该是被作为I2C总线使用了,但是,我直接复制野火的I2C_EE.C和.H进去,发现程序死在检测EV5上面,目前尚没发现原因所在,继续研究中
回复 支持 反对

使用道具 举报

发表于 2014-3-14 14:15:52 | 显示全部楼层
windqj 发表于 2013-10-27 11:13
现在发现触摸屏只是将I2C的两个引脚模拟为SPI里面的CS和IRQ,在我用I2C_EE_INIT后,这两个引脚应该是被作 ...

将下面的代码代替掉触摸屏校准程序即可

touch_para.Divider=-1032.0; //非零就行         
aa1=-0.065056;
bb1= -0.000560;
cc1=254.992076;
aa2=-0.000073;
bb2=0.087993;
cc2=-14.600699;
return 0;
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 13:48 , Processed in 0.033862 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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