传感器类总结(一)MPU9250 3-2程序关于IIC的底层程序

本文详细介绍了IIC通信协议,包括起始信号、停止信号、有效数据、应答与非应答信号等,并提供了MPU9250传感器的IIC写读数据的底层程序实现,涵盖了从起始信号生成到停止信号结束的完整过程。
摘要由CSDN通过智能技术生成

关于IIC的逻辑和底层协议可以看之前总结的
#IIC 通信协议

1、读写数据

1.1、写数据

![在这里插入图片描述](https://img-blog.csdnimg.cn/3e
发送N个字节程序的流程:
1、发送起始信号
2、发送从机地址和写
3、等待从机发回应答信号
4、发送第一字节数据 等待应答
5、发送下一字节数据 等带应答或非应答信号
6、发送停止信号停止发送

1.2、读数据

在这里插入图片描述
读取N个字节程序的流程:
1、发送起始信号
2、发送从机地址和读
3、等待从机发回应答信号
4、读取到第一字节数据 发送应答信号给从机
5、读取下一字节数据 发送应答信号/非应答信号
6、发送停止信号停止读取

1.3起始信号

在这里插入图片描述

SCL 为高电平 SDA 产生下降沿

1.4停止信号

SCL 为高电平 SDA 产生上升沿

1.5有效数据

在这里插入图片描述

SCL为低电平时 SDA数据无效可进行数据交换。

1.6 应答信号和非应答信号

在这里插入图片描述
SCL的第九个时钟时SDA为高电平那个表示非应答信号,SDA为高低平那个表示应答信号

2 程序

void MPU_IIC_Start(void)
{
   
	MPU_SDA_OUT();     //sda线输出
	MPU_IIC_SDA=1;	  	  
	MPU_IIC_SCL=1;
	delay_us(4);
 	MPU_IIC_SDA=0;//START:when CLK is high,DATA change form high to low 
	delay_us(4);
	MPU_IIC_SCL=0;//钳住I2C总线,准备发送或接收数据 
}	 

产生起始信号流程:
1、配置SDA为输出信号
2、SDA设置为高电平
3、SCL设置为低电平
4、延时4us 等待两条线电平稳定
5、SDA设置低电平 此时在SCL为高时SDA产生一个下降沿。
6、拉低SCL 钳住I2C 总线,因为SCL为低电平SDA上数据无效。

//IIC发送一个字节
//返回从机有无应答
//1,有应答
//0,无应答			  
void MPU_IIC_Send_Byte(u8 txd)
{
                           
    u8 t;   
	MPU_SDA_OUT(); 	    
    MPU_IIC_SCL=0;//拉低时钟开始数据传输
    for(t=0;t<8;t++)
    {
                 
        MPU_IIC_SDA=(txd&0x80)>>7;
        txd<<=1; 	  
		delay_us(2);
		MPU_IIC_SCL=1;
		delay_us(2); 
		MPU_IIC_SCL=0;	
		delay_us(2);
    }	 
} 

写一个字节流程:
1、设置SDA为输出模式
2、将时钟线拉低
3、for循环8位数据
4、在其中一次循环中,首先取第七位然后右移7位,数据左移1位(第六位变为第七位),延时2us,保证数据正确,SCL产生2us高电平,然后拉低SCL延时2us,等待下次循环传输第六位使用。

  • 35
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值