GPIO模拟IIC接口信号质量分析

信号质量有问题的波形001:

信号质量有问题的波形002:

从上图可以看出,GPIO口模拟的I2C接口,电平都存在半高的情况。

因为MFI芯片的I2C采用的GPIO口模拟I2C接口来实现的此功能,原SCL采用的GPB7(内部默认为上拉状态),因为GPIO资源的调整,SCL改为GPD12(内部默认为下拉状态),因SCL对应的GPIO口内部有下拉电阻,导致在输出为高电平时,上升沿慢的台阶出现。软件后面把GPD12的内部下拉电阻disable之后,测试的波形如上图所示,从上图可以看出SCL时钟信号已经正常。

但是SDA存在小的脉冲尖峰和ACK的半高情况。具体见图中的红色圈所示。

后经软件分析,SDA小的脉冲尖峰是因为软件在SCL无效状态时,对SDA置为输入状态后,又对SDA置高处理,因硬件外部已有上拉电阻,SCL无效时,软件无需对SDA置高处理。后软件去除此部份操作后SDA小的脉冲尖峰消除了。

ACK半高电平,软件在停止位结束后,SCL从高到低反转一执行,马上把SDA从输出高电平改为输入状态,此时ACK就会马上生效,SDA从而直接变为低电平,剩下的半高状态,只有大约800us的时间。具体见下图。

测试结果:软件修改后,模拟SDA和SCL信号均满足要求。

时间: 2024-10-09 13:57:30

GPIO模拟IIC接口信号质量分析的相关文章

用s5pc100的GPIO模拟IIC

转载:http://blog.chinaunix.net/uid-26833883-id-3823530.html 一.硬件连线 先来看看LM75硬件的上的连线: 其中I2C_SDA0是数据线,I2C_SCL0是时钟线,它们分别接到s5pc100的GPD3和GPD4,如下图所示 在模拟IIC的时候,用GPD3引脚发送数据或读取数据,用GPD4引脚提供时钟信号即可. 二.数据结构 由于s5pc100的GPD这一组的引脚很多,不好单独对其中的某一个引脚操作,为了能单独对其中的某一个管脚单独操作,这里

关于接地:数字地、模拟地、信号地、交流地、直流地、屏蔽地、浮地

除了正确进行接地设计.安装,还要正确进行各种不同信号的接地处理.控制系统中,大致有以下几种地线: (1)数字地:也叫逻辑地,是各种开关量(数字量)信号的零电位. (2)模拟地:是各种模拟量信号的零电位. (3)信号地:通常为传感器的地. (4)交流地:交流供电电源的地线,这种地通常是产生噪声的地. (5)直流地:直流供电电源的地. (6)屏蔽地:也叫机壳地,为防止静电感应和磁场感应而设. 以上这些地线处理是系统设计.安装.调试中的一个重要问题. 下面就接地问题提出一些看法: (1) 控制系统宜采

lpc1788IO口模拟IIC

#ifndef __MYIIC_H_ #define __MYIIC_H_ #include "common.h" #include "delay.h" #include "debugserial.h" //sda 027 scl 028 //IO方向设置 #define IIC1_SDA_IN()  P0dir(27) = 0 #define IIC1_SDA_OUT() P0dir(27) = 1 //IO操作函数 #define IIC1_

使用GPIO模拟SPI总线进行通信

下面给出了模拟SPI总线在模式1下进行读写的伪代码,用以说明如何使用GPIO实现SPI通信:     #define SS      252                     //定义SS所对应的GPIO接口编号       #define SCLK    253                     //定义SCLK所对应的GPIO接口编号       #define MOSI    254                     //定义SCLK所对应的GPIO接口编号       

模拟IIC协议时序

IIC是飞利浦公司开发的两线式串行总线,主要应用在单片机和外围电子器件之间的数据通讯. IIC总线优点是节约总线数,稳定,快速,是目前芯片制造上非常流行的一种总线,大多数单片机已经片内集成了IIC总线接口,无需用户自己模拟,只需配置相关寄存器即可使用,但是,为了更好地理解IIC总线协议,可以自行按照IIC时序图进行模拟,加深理解. IIC总线有两条串行线,其一是时钟线SCK,其二是数据线SDA. 在寻常的应用之中,单片机常常作为主机,外围器件作为从机使用. 每一个从机器件都拥有唯一的一个地址,这

stm32软件模拟IIC读取PX4FLOW光流传感器数据

这段时间在做全国光电设计大赛,用到了px4的px4flow光流传感器,用软件模拟iic读取数据不定期会导致px4flow死机,查了资料和光流的源码,发现这个光流用了stm32的硬件iic,所以对软件模拟iic的时序要求可能更高一点所以在原子哥的iic程序上做了修改,代码测验后已经不会死机,做个笔记,保存一下. 1 #include "myiic.h" 2 #include "delay.h" 15 16 //初始化IIC 17 void IIC_Init(void)

信号完整性分析第一章小结

空间 5.为了发现.修正和防止信号完整性问题,必须将物理设计转化为等效的电路模型并这个模型来仿真出波形,以便在制造出产品之前预测器性能. 6.使用三种级别的分析累计算电气效应——经验法则,解析近视和数值仿真工具,这些分析都可以应用于建模和仿真. 7.测量无源器件的和互连线的电气性能的仪器一般有三种:阻抗分析仪.网络分析仪和时频反射仪. 8.这些仪器对减小设计风险.提高建模和仿真过程精度的可信度起着重要作用. 9.理解四种信号完整性的问题可以得出消除这些问题的最重要方法.下图总结了这四种信号完整性

单片机模拟 IIC 总线与 EEPROM(AT24C02)通信

数据有效性: 起始和终止信号时序: 设备地址: 写字节时序: 读数据时序: 函数模拟 IIC 总线 时序: /**************************************/ /******模拟I2C总线操作函数*************/ /**************************************/ //延时函数 void Delay() { ; ; } //初始化 void I2C_Init() { SDA = 1; SCL = 1; } //起始信号 vo

STM32F207 两路ADC连续转换及GPIO模拟I2C给Camera Sensor初始化参数

1.为了更好的方便调试,串口必须要有的,主要打印一些信息,当前时钟.转换后的电压值和I2C读出的数据. 2.通过GPIO 模拟I2C对镁光的MT9V024进行参数初始化.之前用我以前公司SP0A19芯片,是I2C是8位宽的,而镁光的地址是8位,而数据位是16个字节, 其实不管是8位还是16位,每次发送都是8个字节然后一个应答位,所以只要稍微改下代码即可. 3.实现两路ADC连续转换,两路ADC转换:一路是检测锂电池电压:一路是检测压力传感器,其实都是检测电压,当检测到压力为零,并累计多长时间后进