CC2541 软件I2C

本文档详细介绍了在CC2541上由于硬件I2C的不稳定性,采用软件I2C的实现过程。内容包括宏定义、I2C的中断延时函数、初始化、起始和停止信号的生成,以及主机的无应答和应答信号发送、从机应答检测、读写字节等关键操作。提供了完整的头文件函数声明,并附带GitHub源代码链接。
摘要由CSDN通过智能技术生成

在CC2541上硬件I2C不是很稳定,因此写了个软件I2C例程

宏定义软件I2C中I\O及操作

#define SCL                             P1_5                //定义模拟IIC的时钟线
#define SDA                             P1_6                //定义模拟IIC的数据线

#define SDA_0                           (P1_6=0) //SDA=0
#define SDA_1                           (P1_6=1)  //SDA=1
#define SCL_0                           (P1_5=0) //SCL=0
#define SCL_1                           (P1_5=1)  //SCL=1

#define SDA_IN                          P1DIR &= ~BIT6 //SDA INPUT
#define SDA_OUT                         P1DIR |= BIT6  //SDA OUTPUT
#define SCL_IN                          P1DIR &= ~BIT5 //SCL INPUT
#define SCL_OUT                         P1DIR |= BIT5  //SCL OUTPUT

#define I2C_SDA_READ                    (P1 & BIT6)

I2C间断延时函数

void delay_1ms(void)    //误差 0us  延时1ms
{
    uint8 a,c;    
    for(c=4;c>0;c--)
    {
        //for(b=142;b>0;b--)
        {
            for(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值