STM32F407与ZLG7290芯片采用IIC通信协议进行通信的问题

2019-07-20 03:05发布

探索版与ZLG7290采用IIC协议进行通信,以控制矩阵键盘,在代码中,读取键值寄存器中的值时不太理解0x71指令是什么意思.另外,ZLG7290的数据手册上说它的从机地址是0x70.部分代码如下。望大神指点!


[mw_shl_code=c,true]u8 key_read(void)//读取键值函数
{
        u8 num=10;
        IIC_Start();
        //delay_us(30);
        IIC_Send_Byte(0x70);//从机寻址
        //delay_us(30);
        d=IIC_Wait_Ack();
        IIC_Send_Byte(0x01);//操作键值寄存器
        e=IIC_Wait_Ack();       
        IIC_Start();
        IIC_Send_Byte(0x71);//????????问题在这里
        f=IIC_Wait_Ack();

        //delay_us(30);
        num=IIC_Read_Byte(0);//不向zlg7290发送应答,读取键值寄存器的值
        //delay_us(30);
        IIC_Stop();
       
        return num;
}[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
yayayue
1楼-- · 2019-07-20 03:46
搞定了,应该是这样的!
u8 key_read(void)//读取键值函数
{
        u8 num=10;
        IIC_Start();
        //delay_us(30);
        IIC_Send_Byte(0x70);//从机寻址
        //delay_us(30);
        d=IIC_Wait_Ack();
        IIC_Send_Byte(0x01);//操作键值寄存器  此处相当于先锁定了目标寄存器,因为一旦进入读模式就没有办法再给从机发送寄存器的地址了
        e=IIC_Wait_Ack();       
        IIC_Start();//重新来一次起始信号以便之后进行读操作
        IIC_Send_Byte(0x71);//7位从机地址,最后一位为1表明要读,若为0则是写。
        f=IIC_Wait_Ack();

        //delay_us(30);
        num=IIC_Read_Byte(0);//不向zlg7290发送应答,读取键值寄存器的值
        //delay_us(30);
        IIC_Stop();
       
        return num;
}

一周热门 更多>