打印

【分享TI LM3S811开发板使用心得24C02的操作】

[复制链接]
2384|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ddllxxrr|  楼主 | 2011-12-13 07:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
LM3S811用IIC的API十分方便,但一定注意顺序搞不好是搞不定的

对于IIC的读写一定要注意:

主机往IIC从模块里写或从IIC模块读出时一定要调下设地址函数,

I2CMasterSlaveAddveset()

另外,尽量用中断,若不用中断注意延下时。

我的这个程序是写8字节到24c02,然后读出,若一样则灯亮。

把这个下到LM3S811主板,按下rest最右下角那个。我地天啊居然亮了。

我这个程序是把流明库解到硬盘,然后在MDK里设路径到库文件所在目录。

为了减少麻烦。我把工程文件上传啥!


#define I2C_PIN         GPIO_PIN_2 | GPIO_PIN_3
#define LEDLED          GPIO_PIN_0                                      /*  数据判断指示灯的设置        */
#define writeaddr       0x00                                            /*  对24c02操作的子地址         */
#define readaddr        0x00
/*********************************************************************************************************
** Function name:        main
**
** Descriptions:            Main function of the project 工程的主函数
**
** Input parameters:        None 无
** Returned value:          None 无
**         
** Used global variables:   None 无
** Calling modules:         SysCtlClockSet,SysCtlPeripheralEnable,IntMasterEnable,GPIOPinTypeI2C,
**                          GPIODirModeSet,GPIOPadConfigSet,I2CMasterInit,IntEnable,I2CMasterIntEnable
**                          GPIOPinWrite
**                     
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
int main(void)
{
   
    unsigned long ulIdx;
    SysCtlClockSet (SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
                    SYSCTL_XTAL_6MHZ);                                  /*  设置晶振为系统时钟          */
    SysCtlPeripheralEnable (SYSCTL_PERIPH_I2C);                         /*  使能I2C外设                 */
    SysCtlPeripheralEnable (SYSCTL_PERIPH_GPIOB);                       /*  使能GPIO外设                */
    SysCtlPeripheralEnable (SYSCTL_PERIPH_GPIOD);                       /*  使能GPIO外设                */
    IntMasterEnable();                                                  /*  使能处理器中断              */
  
    GPIOPinTypeI2C (GPIO_PORTB_BASE, I2C_PIN);                          /*  配置相关引脚,以进行I2C操作 */
    GPIODirModeSet (GPIO_PORTD_BASE, LEDLED, GPIO_DIR_MODE_OUT);        /*  设置 GPIO PD0为输出口       */
    GPIOPadConfigSet (GPIO_PORTD_BASE, LEDLED,                          /*  GPIO Pd0的端口配置          */
                      GPIO_STRENGTH_4MA,                        
                      GPIO_PIN_TYPE_STD);
  
    I2CMasterInit (I2C_MASTER_BASE, false);                             /*  初始化I2C主机,设置主机为低速*/
    IntEnable (INT_I2C);                                                /*  使能I2C中断                 */
    I2CMasterIntEnable (I2C_MASTER_BASE);                               /*  使能I2C主机中断             */
    //GPIOPinWrite (GPIO_PORTD_BASE, LEDLED, LEDLED);
GPIOPinWrite (GPIO_PORTD_BASE, LEDLED, ~LEDLED);        /*  如果接收的数据出错,则蜂鸣
//GPIOPinWrite (GPIO_PORTD_BASE, LEDLED, ~LEDLED);  */
    while(1) {                                                          /*  数据串写入EEPROM的前8个字节 */
        for (ulIdx = 0; ulIdx < 8; ulIdx++) {
            pucData[ulIdx] = ulIdx;
     }
  EEPROMWrite (pucData, writeaddr, 8);                            /*  向EEPROM的00地址单元中写入8个
                                                                      数据(0~7)                 */
  Delays(5);                                                      /*  延时5~10ms写数据入24C02中*/
  EEPROMRead (pucData, readaddr, 8);                              /*  从EEPROM的00地址单元中读取8个
                                                                      数据                        */
  Delays(5);                                                      /*  延时5~10ms从24C02中独处数
                                                                      据                          */
  for (ulIdx = 0; ulIdx < 8; ulIdx++) {
   if (pucData[ulIdx] != ulIdx) {                              /*  判断接收到的数据是否正确    */
   
    GPIOPinWrite (GPIO_PORTD_BASE, LEDLED, ~LEDLED);        /*  如果接收的数据出错,则 LEDLED 不亮*/
        while(1) {
        ;
    }
   }
  }
  
  GPIOPinWrite (GPIO_PORTD_BASE, LEDLED, ~LEDLED);                /*  如果接收到的数据正确,LEDLED亮*/  
    Delays(3);   
  GPIOPinWrite (GPIO_PORTD_BASE, LEDLED, LEDLED);
  while(1) {
      ;
  }
}
}

myiic2.rar (702.82 KB)

附24C02的说明
24WC02[1].pdf (44.88 KB)

相关帖子

沙发
tianm| | 2011-12-13 08:35 | 只看该作者
;P我地天啊居然亮了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2392

主题

6936

帖子

66

粉丝