在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2466|回复: 0

[资料] 有关msp430g2553 io口模拟i2c的问题

[复制链接]
发表于 2014-10-25 14:22:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
我用msp430f5529控制ds3231时钟芯片,采用IO口模拟I2C,程序正确,时间可以正常工作,

当我用msp430g2553控制ds3231时,也是用IO口模拟I2C,程序基本一样,与5529的程序的唯一区别是时钟不一样,但是G2553却不行,显示为00;请问是什么原因?
5529的时钟程序如下:




  1. #define CPU_F          ((double)4000000)
  2. #define delay_us(x)      __delay_cycles((long)(CPU_F*(double)x/1000000.0))
  3. #define delayus(x)      __delay_cycles((long)(CPU_F*(double)x/1000000.0))
  4. #define delay_ms(x)         __delay_cycles((long)(CPU_F*(double)x/1000.0))
  5. #define DelayMS(x)         __delay_cycles((long)(CPU_F*(double)x/1000.0))
  6. void clk_init()
  7. {
  8.           P5SEL |= BIT2+BIT3;                       // Port select XT2

  9.           UCSCTL6 &= ~XT2OFF;                       // Enable XT2
  10.           UCSCTL3 |= SELREF_2;                      // FLLref = REFO
  11.                                                     // Since LFXT1 is not used,
  12.                                                     // sourcing FLL with LFXT1 can cause
  13.                                                     // XT1OFFG flag to set
  14.           UCSCTL4 |= SELA_2;                        // ACLK=REFO,SMCLK=DCO,MCLK=DCO

  15.           // Loop until XT1,XT2 & DCO stabilizes - in this case loop until XT2 settles
  16.           do
  17.           {
  18.             UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);
  19.                                                     // Clear XT2,XT1,DCO fault flags
  20.             SFRIFG1 &= ~OFIFG;                      // Clear fault flags
  21.           }while (SFRIFG1&OFIFG);                   // Test oscillator fault flag

  22.           UCSCTL6 &= ~XT2DRIVE0;                    // Decrease XT2 Drive according to
  23.                                                     // expected frequency
  24.           UCSCTL4 |= SELS_5 + SELM_5;               // SMCLK=MCLK=XT2
  25.           UCSCTL5 |= DIVS_2;
  26. }


复制代码




2553的时钟程序如下:




  1. #define CPU_F ((double)16000000)
  2. #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
  3. #define delayus(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
  4. #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
  5. #define DelayMS(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))


复制代码





  1. BCSCTL1 = CALBC1_16MHZ;                // Set DCO to 1, 8, 12 or 16MHz
  2.         DCOCTL = CALDCO_16MHZ;


复制代码


5529现象如下(工作正常):
IMG_20141024_214927.jpg

2553现象如下(一直显示00,i2c工作不正常):
IMG_20141024_212209.jpg
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-23 09:51 , Processed in 0.017702 second(s), 10 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表