IIC是很常见的通讯,我们先学会模拟IIC通讯,用单片机和QMA7981通讯来详解,
一:iic引脚为P3^3,P3^2,需要初始化为准双向口
P3M0 = 0x00; //设置P3.0~P3.7为双向口模式
P3M1 = 0x00;
/* I2C通信引脚定义 ,IIC通讯一共要使用2个io*/
sbit SDA = P3^3;
sbit SCL = P3^2;
二:IIC的时序,代码主要控制的就是这个时序,还要注意通讯速度。

1:延时函数,不同器件的iic通讯速率是不同的,qma7981是最快2.5us,即scl要大于2.5us转换一次电平,通讯才正常;
程序:Delay3us(); //延时3微秒
2:启动(START)SCL = 1; SDA为下降沿;但通常启动后也把SCL置低,为后面设置数据做准备,

3:停止(STOP)SCL = 1;SDA为上升沿;注意为了保证获得上升沿先给他置低,

4:应答(SACK)当单片机发出数据以后要等IIC从机应答,然后才继续下一步,应答即从机拉低SDA信号,

5:发送字节函数,一次发送8个位,用SDA脚发送。循环8次发送,发送是先发送BT7,然后BT6…BT0,先发最高位。多长发送组合好就是写命令了。

本文详细介绍了如何使用单片机通过模拟IIC通讯协议与QMA7981传感器进行交互,包括IIC引脚初始化、时序控制、延时函数、启动/停止信号、应答机制、发送与接收数据的步骤。同时,提到了硬件IIC的配置方法以及QMA7981的工作模式设置和读取ID号的过程。

8261

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



