一、布线原则:
1、触摸走线尽量短,多个触摸走线尽量保证走线长度一致,这样可以保证灵敏度基本一致,如果走线长度差距过大,就有可能超越了软件可调节灵敏度的范围,导致灵敏度不一致,使用效果不佳;
2、触摸走线建议使用地线包裹,走线与地的间距在0.5mm以上;另外,如果触摸线过长,建议走线与地的间距在1mm以上;
3、触摸走线尽量不要与其他线并行走线或交叉,如果客观原因必须并行走线,则相邻触摸走线并行间距要在0.5mm以上,且尽量简短并行走线的距离;
4、触摸走线的周围适当打几个GND过孔,减少寄生电容对触摸走线的影响;
5、触摸焊盘可以是任意形状(原则上最好使用规则形状),大小在8*8-15*15之间;
6、触摸按键底部不要放置元器件与走线。
二、软件调试:
1、JTW6C12上电初始化时间约为25ms,因此在JTW6C12上电后,需要等待25ms以上时间后,再与其通信;
2、规格书中给出的例程,在读取数据时与标准的IIC时序有区别,实测发现使用标准IIC时序可以与jtw6c12正常通信
三、例程:
(注:例程使用的IC为nrf52840,实测正常,具体按键灵敏度需根据实际项目调整)
1、jtw6c12.h文件
#ifndef _JTW6C12_H_ #define _JTW6C12_H_
#include "nrf_gpio.h"
#define TTP_SCK_PIN NRF_GPIO_PIN_MAP(1,9) #define TTP_SDA_PIN NRF_GPIO_PIN_MAP(1,8) #define TTP_INT_PIN 8
#define TTP_INT_Read() nrf_gpio_pin_read(TTP_INT_PIN)
#define JTW6C12_ADDR 0x50 #define W_ADDR 0xA0 #define R_ADDR 0xA1
void Jtw6c12Init(void); bool TTP_ReadKey(uint8_t *key);
#endif
2、jtw6c12.c文件
#include "jtw6c12.h" #include
static uint8_t d_u8Buf[4]; //TWI驱动程序实例ID,ID和外设编号对应,0:TWI0 1:TWI1 #define TWI_INSTANCE_ID 0
//TWI传输完成标志 static volatile bool m_xfer_done = false; //定义TWI驱动程序实例,名称为m_twi static const nrf_drv_twi_t m_twi = NRF_DRV_TWI_INSTANCE(TWI_INSTANCE_ID);
//TWI事件处理函数 void twi_handler(nrf_drv_twi_evt_t const * p_event, void * p_context) {
//判断TWI事件类型 switch (p_event->type){
//传输完成事件 case NRF_DRV_TWI_EVT_DONE: m_xfer_done = true;//置位传输完成标志 break; default: break; } }
//TWI初始化 void twi_master_init(void) {
ret_code_t err_co