那位大哥能给个CH452示例程序?

那位大哥能给个msp430的CH452示例程序,我有c51的,但一些地方看不懂,例如: unsigned char CH452_Read() //读取按键 { unsigned char key; CH452_I2c_Start(); /*启动总线*/ CH452_I2c_WrByte(0x6F); // 若有两个CH452并连,当ADDR=0时,此值为0x4F key=CH452_I2c_RdByte(); /*读取数据*/ CH452_I2c_Stop(); /*结束总线*/ return(key); } 中CH452_I2c_WrByte(0x6F); 为什么要写入0x6F?我在datasheet中也没有找到此地址的具体意义,有没有更详细的datasheet?

是这样的,手册中有提到两个CH452并联在一起的时候的地址发送地址的情况,您具体可以看一下时续图,DA0和DA1分别是0 1,B11-B8分别是 0 1 1 1,R/W在读的时候为 1 1.当ADDR=0时,CH452的地址是 0 1 0 0 1 1 1 1 ,即0X4F; 2.当ADDR=1时,CH452的地址是 0 1 1 0 1 1 1 1 ,既0X6F;


多谢“下雨的天” 还有这两句不明白: CH452_I2c_WrByte(((unsigned char)(command>>7)&0x3E)|0x60); CH452_I2c_WrByte((unsigned char)command); 这不是输出16位么?但我查了一下,一共是17位呀(难道I2C设备回送应答位不用输出么?) 再说command作为操作码应该是12位,怎么能用CH452_I2c_WrByte函数?(这个函数不是只能写8位么) 我的qq:26991361,高手加我一下吧,问起来更方便。


是这样的,这两条语句是出现在写命令的时候的,我们这样写的目的是让程序看起来更清爽. 您说的没有错,这是发送16个位的,命令也是12位的,其中也包含了我刚才对您说你设备地址的问题,这样加起来就正好2个字节! 如果您还是有点疑惑,那您也可以这样做: 1.Start IIC 2.发送设备地址和命令高4位 3.发送命令低8位. 4.Stop IIC


(1)CH452的命令为12位,在实际的发送过程中,这个12个位被分成两部分处理:高4位和低8位,其中高4位与命令标识位(DA0,DA1),地址位(ADDR),读写位(R/W)通过CH452_I2c_WrByte(((unsigned char)(command>>7)&0x3E)|0x60)组成一个字节并发送给CH452,低8位自成一个字节通过CH452_I2c_WrByte((unsigned char)command)发送CH452,这样总共是2个字节 (2)关于应答位,CH452本身不会发出应答位,也不接收应答位,只是兼容I2C时序,并不完全遵循该协议


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