在做项目的时候遇到的问题,IIC通信时读取数据始终为0XFF
下面从写数据开始介绍
向从机写数据步骤为:
开始信号->发送从机地址->等待应答->发送寄存器地址->等待应答->写数据->等待应答->停止信号
等待应答时,若SDA为0则代表成功应答
用示波器查看波形发现,在发送地址后SDA为高,无应答,说明未查询到从机
而从机数据手册中地址为0x6D,我最开始出错的代码如下
IIC_Write(0x6D,0x30,1,yali_ctrl);//在地址0x6D从机的0x30寄存器中写入yali_ctrl的指令
unsigned char IIC_Write(unsigned char addr, unsigned char reg, unsigned char len, unsigned char * data)
{
int i;
IIC_Start();
IIC_Send_Byte(addr | 0x00);
IIC_Wait_Ack();
IIC_Send_Byte(reg);
IIC_Wait_Ack();
for (i = 0; i < len;