打印

MSP430F249的I2C模块与24CXX连接

[复制链接]
2383|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Linda_008|  楼主 | 2013-4-29 16:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
pmp| | 2013-5-3 00:16 | 只看该作者
你去参考网上例子就行的。

使用特权

评论回复
板凳
pmp| | 2013-5-3 00:17 | 只看该作者
你只要写出来iic的驱动,其他的都一样的。

使用特权

评论回复
地板
Linda_008|  楼主 | 2013-5-11 10:30 | 只看该作者
网上找不到相关的例程,MPS430论坛找好久不见
两个引脚摸拟的I2C时序会
MSP430F249自带的I2C模块功能不知怎么用,怎么设置

使用特权

评论回复
5
1988020566| | 2013-5-12 23:42 | 只看该作者
Linda_008 发表于 2013-5-11 10:30
网上找不到相关的例程,MPS430论坛找好久不见
两个引脚摸拟的I2C时序会
MSP430F249自带的I2C模块功能不知怎 ...

你安装msp430来找,例程应该都差不多的。

使用特权

评论回复
6
1988020566| | 2013-5-12 23:42 | 只看该作者
如果只搜索249资料肯定少的。

使用特权

评论回复
7
u880| | 2013-5-13 22:36 | 只看该作者
查看相关的参考,别太局限了

使用特权

评论回复
8
huigoushang| | 2013-5-13 23:08 | 只看该作者
网上有相关的例子

使用特权

评论回复
9
G21372| | 2013-5-13 23:31 | 只看该作者
帮您顶一下

使用特权

评论回复
10
leadman| | 2013-5-13 23:37 | 只看该作者
在网上可以找个这类似的程序的

使用特权

评论回复
11
Linda_008|  楼主 | 2013-5-15 18:01 | 只看该作者
MSP430 系列 IIC模块与24CXX通信的例子很少,
大都是MSP430 IIC模块与其他IC,用中断的多

使用特权

评论回复
12
smilingangel| | 2013-5-15 21:58 | 只看该作者
24CXX是EEPROM么?这个资料很多的,I2C总线一般用模拟的

使用特权

评论回复
13
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);                     //延时等待完成
}

使用特权

评论回复
14
Linda_008|  楼主 | 2013-5-25 11:13 | 只看该作者
有大侠知道,跪求解答

使用特权

评论回复
15
qin552011373| | 2013-6-30 23:53 | 只看该作者

使用特权

评论回复
16
xiaox314| | 2013-7-2 15:44 | 只看该作者
:lol

使用特权

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

本版积分规则

1

主题

170

帖子

1

粉丝