MSP430F249的I2C模块与24CXX连接

[复制链接]
3125|15
 楼主| Linda_008 发表于 2013-4-29 16:07 | 显示全部楼层 |阅读模式
有做过大侠做过用MSP430F249的I2C模块与24CXX连接吗?
指导一下,或是给个例程参考下,看看寄存器的配置和时序操作
pmp 发表于 2013-5-3 00:16 | 显示全部楼层
你去参考网上例子就行的。
pmp 发表于 2013-5-3 00:17 | 显示全部楼层
你只要写出来iic的驱动,其他的都一样的。
 楼主| Linda_008 发表于 2013-5-11 10:30 | 显示全部楼层
网上找不到相关的例程,MPS430论坛找好久不见
两个引脚摸拟的I2C时序会
MSP430F249自带的I2C模块功能不知怎么用,怎么设置
1988020566 发表于 2013-5-12 23:42 | 显示全部楼层
Linda_008 发表于 2013-5-11 10:30
网上找不到相关的例程,MPS430论坛找好久不见
两个引脚摸拟的I2C时序会
MSP430F249自带的I2C模块功能不知怎 ...

你安装msp430来找,例程应该都差不多的。
1988020566 发表于 2013-5-12 23:42 | 显示全部楼层
如果只搜索249资料肯定少的。
u880 发表于 2013-5-13 22:36 | 显示全部楼层
查看相关的参考,别太局限了
huigoushang 发表于 2013-5-13 23:08 | 显示全部楼层
网上有相关的例子
G21372 发表于 2013-5-13 23:31 | 显示全部楼层
帮您顶一下
leadman 发表于 2013-5-13 23:37 | 显示全部楼层
在网上可以找个这类似的程序的
 楼主| Linda_008 发表于 2013-5-15 18:01 | 显示全部楼层
MSP430 系列 IIC模块与24CXX通信的例子很少,
大都是MSP430 IIC模块与其他IC,用中断的多
smilingangel 发表于 2013-5-15 21:58 | 显示全部楼层
24CXX是EEPROM么?这个资料很多的,I2C总线一般用模拟的
 楼主| Linda_008 发表于 2013-5-16 18:14 | 显示全部楼层
IO模拟IIC通信当然没问题
MSP430F249自带的IIC模块,
ATmega16、pic16f877自带的IIC模块的还好操作,MSP430F249,stast信号后,从地址自动发送
发完就没反应了,CLK没作用了,不知道哪出问题
/************************
I2C初始化
*************************/
void I2C_init()
{
    P3SEL = 0x06;                         //P3.1-SDA
   
    BCSCTL1 = CALBC1_1MHZ;                //设DCO频率
    DCOCTL = CALDCO_1MHZ;
   
    UCB0CTL0 |= UCMODE_3 + UCSYNC;        // 2C模式 + 同步,从机24C02地址为7位
    UCB0CTL1 |= UCSSEL_3 ;                // SCL_CLK = SMCLK为1M
    UCB0BR0 = 10;                         //CLK = 1000K/10 = 100K;SCL_H >= 5us,SCL_L >= 5us
    UCB0BR1 = 0;
    UCB0I2CSA = 0xa0;                     // 从机24C02地址0xa0
   
    UCB0CTL1 |= UCSWRST;                  //充许软件复位
}
/****************************************************
函数名称:i2c_write(uchar add,uchar dat)
输入参数:uchar add,uchar dat
输出参数:
函数功能:用MSP430F249的i2c总线,对24c02某地址写入数据         
****************************************************/
void i2c_write(uchar add,uchar dat)
{
    UCB0I2CSA = 0xa0;             //设置从机24C02地址0xa0
    UCB0CTL1 |= UCTR;             //设置主机发送
   
    UCB0CTL1 |= UCTXSTT;           //向24C02发送启始信号
    while(!(IFG2 & UCB0TXIFG));    //自动发送从机地址,检测发送是否为空
    P2OUT |= BIT0;                 //指示灯检测此步骤
    _NOP();
    _NOP();
    /*if(UCB0STAT & UCSCLLOW)
      P2OUT |= BIT7;               //检测CLK是否拉低,拉低24Cxx发出应答信号
    else
      P2OUT |= BIT6;               //检测CLK未拉低,24Cxx无应答
    */
    UCB0TXBUF = add;                //发送写入24Cxx的地址
    while(!(IFG2 & UCB0TXIFG));     //检测发送是否完成
    //while(!(UCB0STAT & UCNACKIFG));   //检测应答,UCNACKIFG=1应答
   
    _NOP();
    _NOP();
    P2OUT |= BIT1;                  //检测指示灯此步骤
    while(!(IFG2 & UCB0TXIFG));     //检测应答
    P2OUT |= BIT2;                  //指示灯检测此步骤
    UCB0TXBUF = dat;                //发送写入24Cxx的数据
    _NOP();
    _NOP();
    while(!(IFG2 & UCB0TXIFG));     //检测发送是否完成
    P2OUT |= BIT3;                  //指示灯检测此步骤
    UCB0CTL1 |= UCTXSTP;            //向24C02发送停止信号
    delayms(1);                     //延时等待完成
}
 楼主| Linda_008 发表于 2013-5-25 11:13 | 显示全部楼层
有大侠知道,跪求解答
qin552011373 发表于 2013-6-30 23:53 | 显示全部楼层
xiaox314 发表于 2013-7-2 15:44 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

170

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部