msp430f5438硬件i2c问题

2019-03-24 11:36发布

请教一个问题,官网的资料上都是利用中断的,但是我不想使用中断,只想使用专断标志位帮助我判断状态,但是我发现很奇怪,首先发送完slave地址以后没有ack的clk出现使得ubxctrl1的开始条件位不能自动复位,另外在发送数据时都需要延时,不然不会有任何数据出现。请问大家有没有碰上过类似的情况 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
flywith
1楼-- · 2019-03-24 15:44
< UCB1I2CSA =WRITEADDR;               
      while (UCB1CTL1 & UCTXSTP);         
      UCB1CTL1 |=  UCTXSTT+UCTR ;   

// while(UCB1CTL1 & UCTXSTT) ;    uctxstt放在这里会死循环。

       while(! (UC1IFG & UCB1TXIFG) )  ;      
      UCB1TXBUF = addr;         
                  
     while(UCB1CTL1 & UCTXSTT) ;  放在这里就通过了
      while( !(UC1IFG & UCB1TXIFG) )  ;
      UCB1TXBUF =  data;
      while( !(UC1IFG & UCB1TXIFG) )  ;
      UCB1CTL1 |= UCTXSTP;               
      UC1IFG &= ~UCB1TXIFG;               
      delay_ms(1);


感觉像楼主说的,UCB1CTL1 |=  UCTXSTT+UCTR ;   
并没真的开始有应答,当有数据写入的时候,UCB1TXBUF = addr;  才会有ack,这个时候uctxstt才会清楚。
woshi2007a
2楼-- · 2019-03-24 21:09
 精彩回答 2  元偷偷看……
鸵鸟蝈蝈
3楼-- · 2019-03-25 02:23
你的丛机接的是什么啊?
woshi2007a
4楼-- · 2019-03-25 08:19
从机接的是气压传感器,在发地址的时候这个问题就存在了,主机少发了一个clk,没有给从机应答的机会
鸵鸟蝈蝈
5楼-- · 2019-03-25 09:45
 精彩回答 2  元偷偷看……
woshi2007a
6楼-- · 2019-03-25 14:56
见图,这是发出start后的波形,地址是0xee,写数据。可以看到没有ack的clk

一周热门 更多>

相关问题

    相关文章