3481|2

3

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

有关MSP430F5438的硬件IIC问题 [复制链接]

最近几天在用MSP430F5438的硬件IIC跟FM24CL64做通信,所用的程序基本就是用TI的官方例程改编的,实现的功能是不断往存储器地址为0x01的空间内写入数据0x01

代码如下:
#include "msp430f5438.h"

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;
  
  P3SEL |= 0x06;                            // Assign I2C pins to USCI_B0
  P3DIR |= 0xf0;
  P3OUT &= 0x0f;                            //p3.4 5 6 7 输出低电平 for A0 A1 A2 & WP
  
  UCB0CTL1 |= UCSWRST;                      // Enable SW reset
  UCB0CTL0 = UCMST + UCMODE_3 + UCSYNC;     // I2C Master, synchronous mode
  UCB0CTL1 = UCSSEL_2 + UCSWRST;            // Use SMCLK, keep SW reset
  UCB0BR0 = 255;                             // fSCL = SMCLK/12 = ~100kHz
  UCB0BR1 = 255;
  
  UCB0I2CSA = 0x50;                         // Slave Address
  
  UCB0CTL1 &= ~UCSWRST;                     // Clear SW reset, resume operation

while(1)
{

   while (UCB0CTL1 & UCTXSTP);             // Ensure stop condition got sent
   UCB0CTL1 |= UCTR + UCTXSTT;             // I2C TX, start condition
     
    while(!(UCB0IFG&UCTXIFG));               // Wait before interrupts
    UCB0TXBUF = 0x01;                   // Load TX buffer
                                                       //执行完这一句话之后UCTXIFG就自动清零了
   
    while(!(UCB0IFG&UCTXIFG));            


    UCB0TXBUF = 0x01;      

    while(!(UCB0IFG&UCTXIFG));
   
    UCB0CTL1 |= UCTXSTP;                  // I2C stop condition
    UCB0IFG &= ~UCTXIFG;                  // Clear USCI_B0 TX int flag
}
  
}

但实际跑起来发现第一次运行完UCB0TXBUF = 0x01; 之后UCTXIFG就自动清零了。如果换成标准例程那种利用中断的写法的话,UCB0TXBUF = 0x01;之后就无法再次进入中断程序了,有没有高手知道为什么呢?

最新回复

用中断把  详情 回复 发表于 2012-8-13 10:13
 
点赞 关注

回复
举报

3

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
我觉得是由于待传数据并没有移出缓冲区,所以UCTXIFG没有重新置,但是什么原因呢?
 
 

回复

55

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
用中断把
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表