打印

F5438的硬件IIC问题

[复制链接]
3209|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
haidixibahe|  楼主 | 2012-8-31 13:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近几天在用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;之后就无法再次进入中断程序了

相关帖子

沙发
haidixibahe|  楼主 | 2012-8-31 13:51 | 只看该作者
有没有高手知道为什么呢?

使用特权

评论回复
板凳
chao11yue| | 2012-8-31 14:02 | 只看该作者
我觉得是由于待传数据并没有移出缓冲区,所以UCTXIFG没有重新置,但是什么原因呢?

使用特权

评论回复
地板
springspring| | 2012-9-17 21:58 | 只看该作者
我也没搞懂啊,可以跟着一起学习学习

使用特权

评论回复
5
figo20042005| | 2012-9-18 18:10 | 只看该作者
没用用过,STM32的硬件IIC搞过,烦死人

使用特权

评论回复
6
wjzx111056| | 2012-9-18 20:25 | 只看该作者
本帖最后由 wjzx111056 于 2012-9-18 20:30 编辑

这个啊?我没有用过硬件的IIC,我用的是msp4430F147使用两个普通的端口去访问24LC256存储芯片,感觉挺简单的啊!24LC256和FM24CL64都是差不多的,IIC通信协议中要注意的地方:
1. 当时钟线SCL 高电平时,如果把数据线SDA 从高电平拉到低电平,则表示通信开始(START);如果把数据线SDA 从低电平拉到高电平,则表示通信结束(STOP)。SDA数据不变,视为数据采样。
2. 前一个STOP 结束后。与下一个START开始要保证5ms的间隔。
3. 页写有字节限制,而页读没有,可以一次读出所有的数据。
4. SDA信号在FPGA为接受方时要设置为高阻态。
5. 应答信号永远是接收方发送的,这个很重要,我就是卡在这里几天没找到原因。单片机在读数据的时候,第9个周期是单片机发低电平给EEPROM的。

使用特权

评论回复
7
happy啦啦啦| | 2012-9-18 20:39 | 只看该作者
楼上说的挺有道理的

使用特权

评论回复
8
shenmu2012| | 2012-9-19 10:19 | 只看该作者
看来6楼也是高手啊,说的蛮不错的,我也顺便蹭下的

使用特权

评论回复
9
yifengbest| | 2012-9-19 11:38 | 只看该作者
看看  学习一下

使用特权

评论回复
10
mahua001| | 2012-9-19 11:40 | 只看该作者
我也看看,不大懂这方面:)

使用特权

评论回复
11
yifengbest| | 2012-9-19 11:42 | 只看该作者
学习一下

使用特权

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

本版积分规则

50

主题

908

帖子

0

粉丝