在做项目的时候遇到的问题,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); &nbs

在IIC通信过程中遇到从机无应答问题,读取数据始终为0XFF。通过分析代码和从机手册,发现发送的从机地址错误。IIC通信中,地址的低 bit 用于指示读写操作,因此将0x6D更改为0xDA,确保正确地指示写操作,从而解决了通信问题。
最低0.47元/天 解锁文章
2936

被折叠的 条评论
为什么被折叠?



