gpio软件模拟IIC与硬件IIC驱动有什么区别
2017-03-01 21:11
896 查看
最近做一个项目,涉及到芯片级的通信方面的知识(IIC和SPI方面的通信)。但是方案选择的时候,发现自身对模拟IO口通信还是固件驱动通信一直没有一个很全面的认识,所以就在此记录一下。
所谓硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的;软件I2C一般是用GPIO管脚,用软件控制管脚状态以模拟I2C通信波形。
硬件I2C的效率要远高于软件的,而软件I2C由于不受管脚限制,接口比较灵活。
模拟I2C 是通过GPIO,软件模拟寄存器的工作方式,而硬件(固件)I2C是直接调用内部寄存器进行配置。如果要从具体硬件上来看,可以去看下芯片手册。因为固件I2C的端口是固定的,所以会有所区别。
至于如何区分它们
可以看底层配置,比如IO口配置,如果配置了IO口的功能(IIC功能)那就是固件IIC,否则就是模拟
可以看IIC写函数,看里面有木有调用现成的函数或者给某个寄存器赋值,如果有,则肯定是固件IIC功能,没有的话肯定是数据一个bit一个bit模拟发生送的,肯定用到了循环,则为模拟。
根据代码量判断,模拟的代码量肯定比固件的要大。
所谓硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的;软件I2C一般是用GPIO管脚,用软件控制管脚状态以模拟I2C通信波形。
硬件I2C的效率要远高于软件的,而软件I2C由于不受管脚限制,接口比较灵活。
模拟I2C 是通过GPIO,软件模拟寄存器的工作方式,而硬件(固件)I2C是直接调用内部寄存器进行配置。如果要从具体硬件上来看,可以去看下芯片手册。因为固件I2C的端口是固定的,所以会有所区别。
至于如何区分它们
可以看底层配置,比如IO口配置,如果配置了IO口的功能(IIC功能)那就是固件IIC,否则就是模拟
可以看IIC写函数,看里面有木有调用现成的函数或者给某个寄存器赋值,如果有,则肯定是固件IIC功能,没有的话肯定是数据一个bit一个bit模拟发生送的,肯定用到了循环,则为模拟。
根据代码量判断,模拟的代码量肯定比固件的要大。
相关文章推荐
- 模拟iic和硬件iic驱动的区别
- stm8 软件模拟IIC驱动PCF8563T,NOKIA5110液晶显示
- 4、CC2541芯片中级教程-OSAL操作系统(简单AT指令实现+IIC软件和硬件实现驱动MPU6050)
- 关于温湿度SHT20传感器,用普通GPIO口来模拟IIC实现驱动
- 防止GPIO模拟IIC驱动被其他线程打断的方法
- GPIO软件模拟IIC时序--转载
- IIC 时序分析,stm32软件模拟驱动编写
- 32位和64位的应用软件区别是什么
- GPS定位软件和定位器有什么区别?
- 软件插补跟硬件插补的区别
- 程序员在互联网公司和传统软件公司工作,有什么区别?
- GD32 模拟IIC程序驱动
- STM32F103单片机软件模拟IIC并读取TMP112数字温度传感器
- GPIO模拟IIC接口信号质量分析
- 嵌入式软件开发培训笔记——S5PC100接口开发(GPIO输入/输出、定时器、中断、UART、ADC、IIC)
- 软件模拟gpio 实现
- 旋转编码器的集电极开路输出、电压输出、互补输出和线性驱动输出之间的区别是什么
- 在互联网公司和行业软件公司上班,有什么区别?
- 软件是如何驱动硬件的,代码是怎样对计算机实现控制的?
- STM32中GPIO_ReadOutputDataBit及GPIO_ReadInputDataBit区别;上拉输入_IPU,下拉输入_IPD,模拟输入_AIN ;开漏输出_Out_OD, 推挽输出_O