msp430g2553 i2c程序标准i2c口后面不接有输出吗

MSP430G2553测试程序(串口程序,USCI模式)
11:16:24来源: eefocus
//******************************************************************************
//&& HW UART(J4)!!!!!! 特别注意,板子上J4有2个跳线要竖放,设为HW UART模式
//&& G2xx3 Demo - USCI_A0, 9600 UART Echo ISR, DCO SMCLK
//&& Description: Echo a received character, RX ISR used. Normal mode is LPM0.
//&& USCI_A0 RX
triggers TX Echo.
//&& Baud rate divider with 16MHz
//&& ACLK = n/a, MCLK = SMCLK = CALxxx_16MHZ = 16MHz
//&&&&&&&&&&&&&&& MSPG2xx3
//&&&&&&&&&&&& -----------------
//&&&&&&&& /|\|&&&&&&&&&&&&& XIN|-
//&&&&&&&&& | |&&&&&&&&&&&&&&&& |
//&&&&&&&&& --|RST&&&&&&&&& XOUT|-
//&&&&&&&&&&& |&&&&&&&&&&&&&&&& |
//&&&&&&&&&&& |&&&& P1.2/UCA0TXD|------------>
//&&&&&&&&&&& |&&&&&&&&&&&&&&&& | 9600 - 8N1
//&&&&&&&&&&& |&&&& P1.1/UCA0RXD|<------------
//助手,下载地址:
//&& Texas Instruments Inc.
//&& February 2011
//&& Built with& IAR Embedded Workbench Version: 5.40
//******************************************************************************
#include& "g2553.h"
void main(void)
& WDTCTL = WDTPW + WDTHOLD;&&&&&&&&&&&&&&&& // Stop WDT
& BCSCTL1 = CALBC1_16MHZ;&&&&&&&&&&&&&&&&&&& // Set DCO
& DCOCTL = CALDCO_16MHZ;
& P1SEL = BIT1 + BIT2 ;&&&&&&&&&&&&&&&&&&&& // P1.1 = RXD, P1.2=TXD
& P1SEL2 = BIT1 + BIT2;&&&&&&&&&&&&&&&&&&&&&&
& UCA0CTL1 |= UCSSEL_2;&&&&&&&&&&&&&&&&&&&& // SMCLK
& UCA0BR0 = 0x82;&&&&&&&&&&&&&&&&&&&&&&&&&&&&& // 16MHz 9600 UCA0BRX=2
& UCA0BR1 = 0x06;&&&&&&&&&&&&&&&&&&&&&&&&&&&&& // 16MHz 9600
& UCA0MCTL = UCBRS2 + UCBRS1;&&&&&&&&&&&&&& // Modulation UCBRSx = 6
& UCA0CTL1 &= ~UCSWRST;&&&&&&&&&&&&&&&&&&&& // **Initialize USCI state machine**
& IE2 |= UCA0RXIE;&&&&&&&&&&&&&&&&&&&&&&&&& // Enable USCI_A0 RX interrupt
& __bis_SR_register(LPM0_bits + GIE);&&&&&& // Enter LPM0, interrupts enab
// Echo back RXed character, confirm TX buffer is ready first
#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
& while (!(IFG2&UCA0TXIFG));&&&&&&&&&&&&&&& // USCI_A0 TX buffer ready?
& UCA0TXBUF = UCA0RXBUF;&&&&&&&&&&&&&&&&&&& // TX -> RXed character
关键字:&&&&&&
编辑:什么鱼
引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
微信扫一扫加关注 论坛活动 E手掌握
微信扫一扫加关注
芯片资讯 锐利解读
大学堂最新课程
TE工程师帮助将不可能变成可能,通过技术突破,使世界更加清洁、安全和美好。
TTI携TE传感器样片与你相见,一起传感未来
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
热门资源推荐
频道白皮书
何立民专栏
北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。查看: 1988|回复: 32
求大神帮助,MSP430G2553的IIC程序,在线等
主题帖子精华
初级会员, 积分 120, 距离下一级还需 80 积分
在线时间2 小时
调试时发现程序会停在 IIC_Wait_Ack() 的 while(READ_SDA)中,用示波器查看过是有波形的。求大神帮忙!!!感谢!!!
#include "msp430G2553.h"
#include "simulation_IIC.h"
#include "stdint.h"
void IIC_Init(void)
P1DIR |= BIT4 + BIT5;
P1OUT |= BIT4 + BIT5;
//产生IIC起始信号
void IIC_Start(void)
SDA_OUT(); & & //sda线输出
IIC_SDA_1;
IIC_SCL_1;
delay_us(5);
& IIC_SDA_0;//START:when CLK is high,DATA change form high to low
delay_us(5);
IIC_SCL_0;//钳住I2C总线,准备发送或接收数据
//产生IIC停止信号
void IIC_Stop(void)
SDA_OUT();//sda线输出
IIC_SCL_0;
IIC_SDA_0;//STOP:when CLK is high DATA change form low to high
& delay_us(5);
IIC_SCL_1;
IIC_SDA_1;//发送I2C总线结束信号
delay_us(5);
//等待应答信号到来
//返回值:1,接收应答失败
// & & & &0,接收应答成功
u8 IIC_Wait_Ack(void)
u8 ucErrTime=0;
SDA_IN(); & & &//SDA设置为输入
P1REN |= BIT4;
P1OUT |= BIT4; //上拉输入
delay_us(5);
IIC_SCL_1;
delay_us(5);
while(READ_SDA)
ucErrTime++;
if(ucErrTime&250)
IIC_Stop();
IIC_SCL_0;//时钟输出0
//产生ACK应答
void IIC_Ack(void)
IIC_SCL_0;
SDA_OUT();
IIC_SDA_0;
delay_us(5);
IIC_SCL_1;
delay_us(5);
IIC_SCL_0;
//不产生ACK应答
void IIC_NAck(void)
IIC_SCL_0;
SDA_OUT();
IIC_SDA_1;
delay_us(5);
IIC_SCL_1;
delay_us(5);
IIC_SCL_0;
//IIC发送一个字节
//返回从机有无应答
//1,有应答
//0,无应答
void IIC_Send_Byte(u8 txd)
SDA_OUT();
& & IIC_SCL_0;//拉低时钟开始数据传输
& & for(t=0;t&8;t++)
& & & & //IIC_SDA=(txd&0x80)&&7;
if((txd&0x80)&&7)
IIC_SDA_1;
IIC_SDA_0;
delay_us(5); & //对TEA5767这三个延时都是必须的
IIC_SCL_1;
delay_us(5);
IIC_SCL_0;
delay_us(5);
//读1个字节,ack=1时,发送ACK,ack=0,发送nACK
u8 IIC_Read_Byte(unsigned char ack)
unsigned char i,receive=0;
SDA_IN();//SDA设置为输入
& & for(i=0;i&8;i++ )
& & & & IIC_SCL_0;
& & & & delay_us(5);
IIC_SCL_1;
& & & & receive&&=1;
& & & & if(READ_SDA)receive++;
delay_us(5);
& & if (!ack)
& & & & IIC_NAck();//发送nACK
& & & & IIC_Ack(); //发送ACK
回复【16楼】两个人的烟火:
---------------------------------
嗯,弄两个4.7k的就可以了
绝望的下一秒就是机遇和希望!
主题帖子精华
中级会员, 积分 236, 距离下一级还需 264 积分
在线时间0 小时
回复【16楼】两个人的烟火:
---------------------------------
嗯,弄两个4.7k的就可以了
目前在玩STM32,BBB,RPi
主题帖子精华
金钱107094
在线时间697 小时
READ_SDA信号强制拉低,还死机么?
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子
主题帖子精华
初级会员, 积分 120, 距离下一级还需 80 积分
在线时间2 小时
回复【2楼】正点原子:
---------------------------------
强制拉低就不死机了
绝望的下一秒就是机遇和希望!
主题帖子精华
初级会员, 积分 120, 距离下一级还需 80 积分
在线时间2 小时
回复【2楼】正点原子:
---------------------------------
原子哥&这就是从你的32程序上移植过来的
绝望的下一秒就是机遇和希望!
主题帖子精华
新手上路, 积分 41, 距离下一级还需 9 积分
在线时间0 小时
你的ucErrTime有清0吗?
主题帖子精华
新手上路, 积分 41, 距离下一级还需 9 积分
在线时间0 小时
你的程序应该不会停在IIC_Wait_Ack()啊,不是ucErrTime&250就return了?
主题帖子精华
金钱107094
在线时间697 小时
回复【4楼】两个人的烟火:
---------------------------------
我们的例程好使的。
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子
主题帖子精华
初级会员, 积分 120, 距离下一级还需 80 积分
在线时间2 小时
回复【7楼】正点原子:
---------------------------------
在32上试过了没问题,可不知道为什么搬到430上就不行,各种延时都试过了,
绝望的下一秒就是机遇和希望!
主题帖子精华
初级会员, 积分 120, 距离下一级还需 80 积分
在线时间2 小时
回复【6楼】Limcy:
---------------------------------
最后return&1了,就是接受应答失败了
绝望的下一秒就是机遇和希望!
主题帖子精华
新手上路, 积分 41, 距离下一级还需 9 积分
在线时间0 小时
IIC的,输入和输出好像都要上拉。
主题帖子精华
初级会员, 积分 120, 距离下一级还需 80 积分
在线时间2 小时
回复【10楼】Limcy:
---------------------------------
不是这个问题额
绝望的下一秒就是机遇和希望!
主题帖子精华
在线时间218 小时
将发送一个字节函数去掉最后一个5us延时,再测试一下看下行不行
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
主题帖子精华
初级会员, 积分 120, 距离下一级还需 80 积分
在线时间2 小时
回复【12楼】Badu_Space:
---------------------------------
按照你说的,还是不行的样子,
绝望的下一秒就是机遇和希望!
主题帖子精华
初级会员, 积分 120, 距离下一级还需 80 积分
在线时间2 小时
回复【12楼】Badu_Space:
---------------------------------
我的430主频设置为了1Mhz,跟32比起来差太多了
绝望的下一秒就是机遇和希望!
主题帖子精华
中级会员, 积分 236, 距离下一级还需 264 积分
在线时间0 小时
你的有没有加上拉电阻?我记得430是需要加的
目前在玩STM32,BBB,RPi
主题帖子精华
初级会员, 积分 120, 距离下一级还需 80 积分
在线时间2 小时
回复【15楼】w0rmis20:
---------------------------------
你是说SCL和SDA先接个上拉电阻上拉到5V,再接到IO口吗?
绝望的下一秒就是机遇和希望!
主题帖子精华
初级会员, 积分 120, 距离下一级还需 80 积分
在线时间2 小时
回复【17楼】w0rmis20:
---------------------------------
我本来就是这么连的,之前玩32也是这么连的
绝望的下一秒就是机遇和希望!
主题帖子精华
中级会员, 积分 236, 距离下一级还需 264 积分
在线时间0 小时
回复【18楼】两个人的烟火:
---------------------------------
那就不知道了,以前只用过F149的。。如果是自己焊接的板子注意有没有焊实,我就吃过这亏
目前在玩STM32,BBB,RPi
主题帖子精华
初级会员, 积分 120, 距离下一级还需 80 积分
在线时间2 小时
回复【19楼】w0rmis20:
---------------------------------
我用的是Lauchpad&,调这个模拟IIC调了n天了,还是不行,诶
绝望的下一秒就是机遇和希望!
主题帖子精华
在线时间218 小时
回复【14楼】两个人的烟火:
---------------------------------
试移植这里3楼附件的试下,这个在51和32上面都已经调试通过了的
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
主题帖子精华
初级会员, 积分 120, 距离下一级还需 80 积分
在线时间2 小时
回复【21楼】Badu_Space:
---------------------------------
试了下,还是同样的问题,我跟AT24X64通信,问题都是出在了同样的位置,最后一个IIC_Wait_Ack()那里。
//在AT24CXX指定地址读出一个数据
//ReadAddr:开始读数的地址
//返回值:读到的数据
u8&AT24CXX_ReadOneByte(u16&ReadAddr)
{
u8&temp=0;
&&&&IIC_Start();
if(EE_TYPE&AT24C16)
IIC_Send_Byte(0XA0); &&&//发送写命令
IIC_Wait_Ack();
IIC_Send_Byte(ReadAddr&&8);//发送高地址
IIC_Wait_Ack();
}else&IIC_Send_Byte(0XA0+((ReadAddr/256)&&1));&&&//发送器件地址0XA0,写数据
IIC_Wait_Ack();
&&&&IIC_Send_Byte(ReadAddr%256);&&&//发送低地址
IIC_Wait_Ack();
IIC_Start();
IIC_Send_Byte(0XA1);&&&&&&&&&&&//进入接收模式
IIC_Wait_Ack();
&&&&temp=IIC_Read_Byte(0);
&&&&IIC_Stop();//产生一个停止条件
绝望的下一秒就是机遇和希望!
主题帖子精华
在线时间218 小时
回复【22楼】两个人的烟火:
---------------------------------
老规矩,抓IIC波形分析
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
主题帖子精华
初级会员, 积分 120, 距离下一级还需 80 积分
在线时间2 小时
回复【23楼】Badu_Space:
---------------------------------
能否具体点?单步调试下来是没问题的
绝望的下一秒就是机遇和希望!
主题帖子精华
在线时间218 小时
回复【24楼】两个人的烟火:
---------------------------------
全速有问题是吧?将频率降低一点试下
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
主题帖子精华
初级会员, 积分 120, 距离下一级还需 80 积分
在线时间2 小时
回复【25楼】Badu_Space:
---------------------------------
找到问题所在了,我用IIC_Start函数,拉低SDA时,IO输出是低电平,但芯片的SDA口依然是高电平,所以后来的应答位都收不到了,这时候SDA接地是可以强制拉低的。换了IO口,依然出现这个问题,大哥有什么想法么?
绝望的下一秒就是机遇和希望!
主题帖子精华
初级会员, 积分 120, 距离下一级还需 80 积分
在线时间2 小时
回复【25楼】Badu_Space:
---------------------------------
但也不是每个IIC_Start函数都这样,AT24CXX_ReadOneByte(u16&ReadAddr)的最后一个Start函数开始会出现这种问题,
绝望的下一秒就是机遇和希望!
主题帖子精华
在线时间218 小时
回复【27楼】两个人的烟火:
---------------------------------
延时一下再操作呢
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
主题帖子精华
在线时间218 小时
你这个估计是在2402芯片操作里面的问题,原子哥老版本的有bug
/posts/list/35740.htm这里有一个2402的驱动,或者你问原子哥要最新版本的试下
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
主题帖子精华
初级会员, 积分 120, 距离下一级还需 80 积分
在线时间2 小时
回复【7楼】正点原子:
---------------------------------
原子哥,有最新的24CXX程序吗?可否分享下
绝望的下一秒就是机遇和希望!
主题帖子精华
初级会员, 积分 120, 距离下一级还需 80 积分
在线时间2 小时
回复【25楼】Badu_Space:
---------------------------------
能私聊下么
绝望的下一秒就是机遇和希望!
主题帖子精华
在线时间218 小时
回复【31楼】两个人的烟火:
---------------------------------
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
主题帖子精华
金钱107094
在线时间697 小时
&回复【30楼】 两个人的烟火 :
---------------------------------
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子
Powered by

我要回帖

更多关于 i2c verilog标准代码 的文章

 

随机推荐