BS814A触摸芯片用法,IIC(I2C)使用讲解以及实例代码基于C语言

一:了解触摸芯片的工作协议

       1:资料   BS814A(8SOP)为例:

2:数据讲解

        此芯片是通过IIC接收八位数据来判断四个按键是否按下的,

        bit0-3代表Key1-4脚位的触摸按键的状态,0代触摸按键按下,1则为没有按下。

         bit6-4代表按键上有几个按键按下,000表示没有按键按下,100表示四个按键全部按下。

         bit7为停止位,此位总是为“1”。

3:iic数据接收讲解

        BS814A芯片是作为从机使用的,在接收BS814A时,主机的配置为下:

        初始化配置:数据线和时钟线都配置为输出高。

        起始信号配置:时钟线输出高->数据线输出高->延时500us->数据线配置低->延时500us->时钟线配置低。

         停止信号:时钟线配置低->延时500us->数据线输出低->延时500us->数据线和时钟线配置为高。

         读取一个字节数据:发送其实信号->数据线设置为输入模式->时钟线配置为高是开始读数据,匹配为低时停止读数据,直到八位数据全部读取完成->判断bit7是否为1,为1则正确,为0则错误。示例代码如下:

//发送起始信号
void _user_iic_start(){		
	IIC_SCL_OUTMODE;        
	IIC_SCL_OPEN;                //时钟线配置输出高
	IIC_DATA_OUTMODE;
	IIC_DATA_OPEN;	            //数据线配置输出高
	DelayUs_M(500);            //延时500us
	IIC_DATA_CLOSE;	            //数据线配置低
	DelayUs_M(500);
	IIC_SCL_CLOSE;                //时钟线配置低
}

//发送停止信号
void _user_iic_stop(){	
	IIC_SCL_CLOSE;	
	DelayUs_M(500);
	IIC_DATA_OUTMODE;
	IIC_DATA_CLOSE;
	DelayUs_M(500);
	IIC_DATA_OPEN;
	IIC_SCL_OPEN;
}

//读取一个字节
uint8_t IIC_Read_Byte( ){
	uint8_t i = 0;        
    uint8_t receive = 0;       //用于存放读取的数据
	_user_iic_start();         //发送起始信号    
	IIC_DATA_INMODE;		   //数据线设置为输入模式
    for(i = 0;i < 8;i++) {
        IIC_SCL_CLOSE;
        DelayUs_M(500); 
		IIC_SCL_OPEN;		//时钟线拉高开始读数据
		DelayUs_M(250);
        if(user_gpio_get_value(IIC_IO_DATA) == 1){	//读取数据线的高低电平
        	receive |= (1<<i);
    	}else{
    		receive &= (0xFF^(1<<i));
    	}
		DelayUs_M(250);
    }
    IIC_SCL_CLOSE;    
    IIC_DATA_CLOSE;    //8位读取完成配置时钟线和数据线为低
    if((receive&0x80) == 0){		//停止位判断(bit7为0时数据错误,数据则恢复无按键状态)
    	receive = 0x8F;
    }
//    _user_iic_stop();	        //此芯片停止位为bit7所以不用发停止信号
    return receive;
}

int main(){
    int ret = 0;        //用于存放接收到的iic数据
    while(1){
        ret = IIC_Read_Byte();
        vTaskDelay(50);    //延时50ms(每隔50ms查询一次是否有按键按下)
        //其下为按键判断部分,需要的可以去看我之前发的按键判断部分。
    }  
}


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值