关于CH452的读写方式(3线接口)

以下是贵公司的写例程: /* ********************************************************************** ** CH452_Write 写命令 ********************************************************************** */ void CH452_Write(Int16U cmd) { CH452_I2C_Start2(); CH452_WriteByte((Int8U)(cmd >> 7) & CH452_I2C_MASK | CH452_I2C_ADDR1); CH452_WriteByte((Int8U)cmd); CH452_I2C_STOP(); } 以下是我自己修改的写例程: void CH452_Write(Int16U cmd) { CH452_I2C_Start2(); CH452_WriteByte((Int8U)(cmd >> 8)); CH452_WriteByte((Int8U)cmd); CH452_I2C_STOP(); }

以下是对CH452参数做出的修改: /* 常用命令 */ #define CH452_CMD_NOP 0x0000 /* 空操作 */ //#define CH452_CMD_RESET 0x0201 /* 复位 */

#define CH452_CMD_RESET 0x6401 /* 复位 */ // //0110 0100 0000 0001

#define CH452_CMD_SLEEP 0x0202 /* 进入睡眠状态 */ #define CH452_CMD_SYSOFF 0x0400 /* 关闭显示,关闭键盘 */ //#define CH452_CMD_SYSON0 0x0402 /* 关闭显示,开启键盘 */

#define CH452_CMD_SYSON0 0x6802 /* 关闭显示,开启键盘 */ // //0110 1000 0000 0010

#define CH452_CMD_SYSON1 0x0403 /* 开启显示,开启键盘 */

//#define CH452_GET_KEY 0x0700 /* 获取按键代码 */

#define CH452_GET_KEY 0x6fff /* 获取按键代码 */ // //0110 1111 1111 1111

#define CH452_CMD_ACK 0x07FF /* 使能I2C返回ack应答 */ 其他部分未做改动,按我的理解这样是可以对其进行读写的,按键按下也可以接收到CH452的按键中断,为什么我接收不到正确的数据呢????无论哪个按键按下我接收到的都是“FF”,求指点迷津???

您好,对于CH452_WRITE(UINT16 COMMAND)的修改是不正确的,建议您仔细看一下CH452写命令时序,详见手册第9页。 CH452_WriteByte((Int8U)(cmd >> 7) & CH452_I2C_MASK | CH452_I2C_ADDR1; 这条语句不只是把命令码分两次发出去,还有选择芯片,设置写操作的功能。读到的键值错误,是不读函数也有这个问题呢?


只有登录才能回复,可以选择微信账号登录