回答

收藏

【赚周年币】技术帖Week2-Day2——LPC824 Lite之九、EEPROM

#线上活动 #线上活动 2930 人阅读 | 0 人回复 | 2017-01-09

本帖最后由 toofree 于 2017-1-17 23:38 编辑

        【赚周年币】技术帖Week2-Day3——LPC824 Lite之九、EEPROM

          介于LPC824 Breakout 板上没有集成I2C EEPROM芯片,本贴用LPC824 Lite来实验。
          使用YL-LPC824光盘资料.rar中程序模板。程序在哪下载,不就多说了吧。论坛上有,在LPC824 Lite盒子上也有网址。

          板上集成EEPROM芯片型号 AT24C02CM ,关键参数,在下图中圈出。不要只看原理图,实际板上焊的芯片是这颗C系列,不是B的。
         

        容量256x8,即256字节;
        1.7V支持400KHz波特率,2.5V、2.7V、5V最大适用1MHz波特率;
        8字节页写模式;(一个页是8字节,超过8字节就跨页了,不重新指定页地址的话,仍会在本页循环。
        自定时5ms最大。(这个5ms非常重要。前一个写停止,到下一个写开始,必须有足够长的时间,这个时间理论最大值5ms;实际芯片可能比5ms要小,但是延时5ms是最保险的做法。
        I2C时序,这里不做解释,AT24C02手册中有。

        先跑个程序试试。打开工程“YL-LPC824光盘资料\SDK\peri_example\i2c\i2cm_eeprom\project_i2cm_eeprom.uvoptx”。
        


        直接编译,生成“i2cm_eeprom.bin”文件。把这个文件,直接拖到LPC824 Lite板卡在本地自建的MBED 模拟盘中,直到“i2cm_eeprom.bin”文件自动消失,表示程序下载成功。
        


       点仿真按钮,或CTRL+F5,进入仿真状态。
      


        在第264行处,设置断点,并把wrBuf、rdBuf添加到memory观察窗口。
        

        


        按F5全速跑程序,直到在断点处停止。对比,wrBuf、rdBuf的内容完全一致,变量testFail值为0,表示校验一致,读写测试成功。
        


        但是测试程序,只测试了240个单元。我们为何不把它全部测试呢,一共就256个字节,总不会有什么问题吧。那么修改一下程序,接着测试。
        将BUF_SIZE改为256。
        

        
        编译下载程序,依然是运行仿真。很不幸,测试失败。testFail值为1,rdBuf无内容。
        


        程序做了小改动,写的时候,wrBuf = i;读取的时候,按字节全部读回。这次校验成功,
        


这次校验成功,那么256字节全读写失败,可能就出在读函数上。查看代码,读字节数的参数类型竟然是uint8_t,uint8_t,uint8_t,重要的事情说三遍,我叻个去。
        

人家原函数,本来就是uint16_t类型的,非要封一层改成uint8_t。
        


果断改回来,改成uint16_t。
        


再次测试,校验通过。噢了!!!修改Bug一处,主程序打外包传上来。
main_i2cm_eeprom.rar (2.96 KB, 下载次数: 8)





关注下面的标签,发现更多相似文章

评分

参与人数 1 +9 收起 理由
EEboard爱板网 + 9 3周发帖养成记 奖励

查看全部评分

分享到:
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /3 下一条