i2c通信 msp430g2553_msp430g2553的IIC通信

因为一个特殊的原因,必须用msp430g2553实现IIC通信,硬件的没弄出来,想软件模拟一下,结果本来预计一晚上的任务,硬生生变成了一晚上加一早上。。。。这块单片机IIC通信的主要槽点在于,你一旦把SDA引脚切换成输入模式进行ACK检测就会直接断开整个时序,我不是很懂为什么,反正我把它去了就好了,下面是根据山外的SCCB底层库改编的msp430g2553的IIC通信代码.

/**IIC.c**/

#include "MSP430G2553.h"

#include "IIC.h"

#define IIC_OUT P2OUT

#define IIC_DIR P2DIR

#define IIC_SEL P2SEL

#define IIC_IN  P2IN

#define SCL_H()         IIC_OUT|=BIT0

#define SCL_L()         IIC_OUT&=~BIT0

#define SCL_DDR_OUT()   IIC_DIR|=BIT0

#define SCL_DDR_IN()    IIC_DIR&=~BIT0

#define SDA_H()         P1OUT|=BIT4

#define SDA_L()         P1OUT&=~BIT4

#define SDA_IN()        P1IN&BIT4

#define SDA_DDR_OUT()   P1DIR|=BIT4

#define SDA_DDR_IN()    P1DIR&=~BIT4

static void SCCB_delay(uint16 i);

/*!

*  @brief      SCCB延迟函数

*  @param      time    延时时间

*  @since      v5.0

*/

static void SCCB_delay(volatile uint16 time)

{

while(time)

{

time--;

}

}

/*!

*  @brief      SCCB管脚配置

*  @since      v5.0

*/

void SCCB_GPIO_init(void)

{

IIC_SEL&=~BIT0;

P1SEL&=~BIT4;

//P2REN |=(BIT0+BIT1);

SCL_DDR_OUT();

SDA_DDR_OUT();

}

/*!

*

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值