MATRIX KEY 4*4触摸按键模块 VK36N16I芯片

大无语事件,本来有一块TTP229的4*4的触摸按键,之前调好了的,再次使用时发现用不了,误触发严重,然后想着再买一个,就买了一个外表一模一样的模块的。没想到驱动ic把ttp229换成了VK36N16I芯片,最可恨的就是客户给的资料还是TTP229的资料,结果一顿调啊调,连点反应都没有。

最后用放大镜看ic才发现,不是ttp229,然后再问客户拿资料,这个模块还没有mcu驱动的代码,都是arduino的历程,这对于我这种没接触过的arduino就很无语,网上找不到VK36N16I的资料和例程,这对于我这种CV大师很不友好。

还是找客服,给了VK36N16I的资料。

使用的简单的iic驱动方式

时序图就是这样子。

1.开始信号

2.读地址

2.应答

3.读取字节

4.应答

5读取字节

6.非应答

7.结束信号

这个是用stm32驱动的代码

//获取按键值
void Matrix_Key_Git_Vlaue(uint16_t * val)
{
	uint8_t byte_l=0;
	uint8_t byte_h=0;

	*val=0;

    //开始信号
	matrix_key_iic_start();
    //读地址
	matrix_key_iic_send_byte(0xcb);
    //应答
	matrix_key_iic_ack();
    //读字节
	byte_l=matrix_key_iic_read_byte(1);
	//读字节
	byte_h=matrix_key_iic_read_byte(0);
    //读字节
	matrix_key_iic_stop();

	printf("byte_l=%x, byte_h=%x \r\n",byte_l,byte_h);

	*val=((*val|byte_h)<<8);
	*val=*val|byte_l;

	printf("val=%x\r\n",*val);
}

看一下16位字节对于那个按键

按照资料给的,应该是按键1对于0x0001,2对于0X0002一次顺序才对

但是实际是按键1对于0x0001,按键4才对应0X0002,是列一次顺序,算了,有规律就行。

看下实际打印 16进制

逻辑分析仪抓的按键9 对于0x0400

注意:如果有返回值,数据乱码的情况下,降低IIC的频率,10k-50k就可以了

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值