本帖最后由 一座城 于 2015-2-3 10:42 编辑
第十四章 宝马1768——IIC---- EEPROM
开发环境:集成开发环境μVision4 IDE版本4.60.0.0 主机系统:Microsoft Windows XP 开发平台:旺宝NXP LPC1768开发板
14.1 EEPROM 14.2 硬件描述 14.3 程序说明 14.4 实验现象 1、EEPROM: I2C总线是有飞利浦开发的两线制串行总线接口,现在被广泛地应用在很多单片机和其它芯片上,比如我们很熟悉的EEPROM存储芯片AT24Cxx、MMA7455加速度传感器、pcf85563 RTC实时时钟芯片等都可以用I2C总线对其进行控制。 LPC1768上集成了I2C0/1/2三个I2C接口。 2、硬件描述: 宝马1768开发板EEPROM硬件连接图 3、程序说明:LPC1768的PIN25,PIN24有三个功能。一个是GPIO引脚P0.27,P0.28;一个是USB_SDA,USB_SCL作外部OTG收发器;还有一个就是I2C通信用的SDA和SCL。我们要选择这个引脚作为什么功能,就需要用到引脚功能选择寄存器PINSEL1。 选择合适的I2C总线速率和占空比; 软件必须通过对I2SCLH和I2SCLL寄存器进行设置来选择合适的总线速率和占空比。I2SCLH定义SCL高电平所保持的PCLK_I2C周期数,I2SCLL定义SCL低电平的PCLK_I2C周期数。位频率由下面的公式得出 (PCLK_I2C是外围总线APB的频率): 因为我们要求在一定的PCLK_I2C时钟频率和I2C总线速率下通信,由此可得I2SCLH和I2SCLL之和。假如PCLK_I2C是50MHz,I2C总线速率是100k, 则I2SCLH和I2SCLL之和为500。在标准模式下,I2SCLH和I2SCLL的值可以相同。 #define I2SCLH_SCLH 0x000000FA // I2C SCL Duty Cycle High Reg #define I2SCLL_SCLL 0x000000FA // I2C SCL Duty Cycle Low Reg // 50MHz下传输速率大概是100k 以上程序是在i2c.c文件中定义的,限于篇幅,我们不一一贴出来。要实现读写AT24C02,要根据AT24C02的读写时序写好读写函数,读者可打开i2c.c文件浏览。 主函数实现原理: 向AT24C02的0x00地址写入8个数据,然后再从该地址读出来,以验证是否能正确读写数据。 4、实验现象: 程序编译无误后,即可进入Debug模式来验证我们写进去的数据和读出来的数据是否一致。
【14】宝马1768_EEPROM(2014.05.10).rar
(79.82 KB, 下载次数: 11)
|