首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
硬件i2c和模拟i2c的区别
2024-11-02
I2C硬件与模拟的区别
硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的,因而效率要远高于软件模拟的I2C:一般也较为稳定,但是程序较为繁琐. 硬件(固件)I2C是直接调用内部寄存器进行配置:而软件I2C是没有寄存器这个概念的. 软件I2C一般是使用GPIO管脚,用软件控制SCL,SDA线输出高低电平,模拟i2c协议的时序. 主要对比: 1.硬件IIC用法比较复杂,模拟IIC的流程更清楚一些. 2.硬件IIC速度比模拟快,并且可以用DMA 3.模拟IIC可以在任何管脚上,而硬件只能
STM32F10x_模拟I2C读写_硬件I2C读写
STM32F10x_模拟I2C读写EEPROM STM32F10x_硬件I2C读写EEPROM(标准外设库版本) STM32F10x_硬件I2C主从通信(轮询发送,中断接收)
S5PV210之GPIO模拟I2c时序之pcf8591与at24xx linux3.0.8驱动
目录:一. 说明 二. 驱动程序说明及问题 三. 案例一 四. 案例二 一. 说明 mini210开发板上带了at24c08, 看了linux内核自带的at24.c的驱动程序,编译下载到看发板,读写都行:通过增加一些调试信息,对linux i2c驱动其中的编写方法之一有了一定了解,在我的另外一篇博文有详细说明.但同时对在linux下GPIO模拟i2c产生了兴趣,于是就写这篇博文来记录驱动编写过程中遇到的问题.如果想了解了i2c时序,请google或百度一下. 本篇博文通过misc驱动
STM8S 模拟I2C程序
STM8S的硬件I2C还是存在问题,不敢贸然使用. 于是决定用模拟I2C. #define SCL PE_ODR_ODR1 #define SDA PE_ODR_ODR2 #define SDAM PE_IDR_IDR2 #define SET_SCL_OUT() {PE_DDR_DDR1=1; PE_CR1_C11 = 1; PE_CR2_C21 = 0;} #define SET_SDA_OUT() {PE_DDR_DDR2=1; PE_CR1_C12 = 1; PE_CR2_C22 = 0
C51单片机模拟I2C总线驱动程序设计
/********************************** I2C总线驱动 ******************************** 模块名:I2C总线驱动 型号:I2C 功能描述: 此模块包括发送数据及接收数据,应答位发送,并提供了几个直接面对器件的操作 函数,能很方便的与用户程序进行连接并扩展.需要注意的是,函数是采用延时方法产 生 SCL 脉冲,对高晶振频率要做一定的修改!!在写E2PROM的时候一定要延时!!! 说明: 1us机器周期,晶振频率要小于12MHz 返回
STM32F207 两路ADC连续转换及GPIO模拟I2C给MT9V024初始化参数
1.为了更好的方便调试,串口必须要有的,主要打印一些信息,当前时钟.转换后的电压值和I2C读出的数据. 2.通过GPIO 模拟I2C对镁光的MT9V024进行参数初始化.之前用我以前公司SP0A19芯片,是I2C是8位宽的,而镁光的地址是8位,而数据位是16个字节, 其实不管是8位还是16位,每次发送都是8个字节然后一个应答位,所以只要稍微改下代码即可. 3.实现两路ADC连续转换,两路ADC转换:一路是检测锂电池电压:一路是检测压力传感器,其实都是检测电压,当检测到压力为零,并累计多长时间后进
I2C软件模拟协议与电容触摸控制
I2C 与 Touch slide 最近做了一个与触摸滑条相关的测试,利用I2C通讯协议来配置触摸控制芯片的相关寄存器,读取触摸读数,并通过STM Studio动态显示触摸读数的变化过程.这个测试相对简单,只要搞定I2C通讯协议,后面的触摸控制芯片的相关寄存器配置就变得很简单了,所以我就简单地总结一下I2C通讯部分笔记. 实验平台:IAR 及 STM Studio 实验主芯片:自制STM8L051/101评估板 触摸控制芯片:ProxSense IQS263 使用硬件触摸滑条(Touch sli
STM32F10x_模拟I2C读写EEPROM
Ⅰ.写在前面 说到IIC,大家都应该不会陌生,我们初学单片机的时候或多或少都知道或了解过,甚至使用I2C控制过器件.但是,有多少人真正去深入理解,或者深入研究过I2C通信协议呢? 1.我们有必要学习I2C通信吗? I2C作为常见串行通信的其中一种,在嵌入式领域中占有很重要的地位.原因在于我们嵌入式开发的产品中有很多设备都是使用I2C进行通信的.我们开始学习单片机开发的时候最先接触的应该是使用I2C操作EEPROM(如AT24C08)通信,这也是典型的I2C通信例子.其实还有很多常见的I2C通信设
MSP430的IO口模拟I2C总线对AT24C25进行读写程序
功能: 实现MSP430口线模拟I2C总线协议与24C04通信. ** 描述: 主系统工作时钟为12MHz,I2C工作时钟频率为1MHz.给某地址写入一个数据 ** 再读出来,如写入前和读出后的数据一致,则P1.0输出高电平,否则输出低电 ** 平.
模拟I2C从机
模拟I2C主机的比较多,但是从机相对主机而言要难很多,这个供大家借鉴. 这个从机程序支持主机对它的随机写和随机读,连续读和连续写没做,有兴趣的可以完善下,呵呵. //Microcontrol CODE #include <msp430x22x4.h> #define SDA BIT1 #define SCL BIT2 #define SEG_A 0xA0 //0x0200---0x027F #define SEG_B 0xB0 //0x0280---0x02FF #define SEG_C 0
硬件和软件兼容i2c协议的24Cxx系列EEPROM存储器(转)
源:硬件和软件兼容i2c协议的24Cxx系列EEPROM存储器 硬件上由于24c01的A0A1A2管脚不允许悬空,故暂时的想法是兼容24c02 ---24c16 使用一个dip8封装的芯片插座,A0 A1 A2管脚都悬空即可,换芯片方便 软件上24c02地址只有8位,而其他型号是大于8位的,故地址参数使用16位 256个字节作为一个大页,即largePage,测试芯片24c04空间有512字节 上代码,求测试和讨论 #include "MY51.H" //转载请注明:http://xo
【转载】GPIO模拟i2c通信
I2C总线的通信过程(见图4-8)主要包含三个主要阶段:起始阶段.数据传输阶段和终止阶段. 1. 起始阶段 在I2C总线不工作的情况下,SDA(数据线)和SCL(时钟线)上的信号均为高电平.如果此时主机需要发起新的通信请求,那么需要首先通过SDA和SCL发出起始标志.当SCL为高电平时,SDA电平从高变低,这一变化表示完成了通信的起始条件. 在起始条件和数据通信之间,通常会有延时要求,具体的指标会在设备厂商的规格说明书中给出. 2. 数据传输阶段 I2C总线的数据通信是以字节(8位)作为基本单位
关于模拟I2C的一些问题???
1.在调试BH1750时发现stm32f103rb单片机用模拟I2C通讯时引脚使用开漏模式能正常读出来数据,使用推挽模式则完全无法通讯,发送地址后从机没有应答? https://blog.csdn.net/qq_24025329/article/details/81218030 上面这篇文章有详细讲解
STM32F4XX中断方式通过IO模拟I2C总线Master模式
STM32的I2C硬核为了规避NXP的知识产权,使得I2C用起来经常出问题,因此ST公司推出了CPAL库,CPAL库在中断方式工作下仅支持无子地址 的器件,无法做到中断方式完成读写大部分I2C器件.同时CPAL库在多个I2C同时使用时,经测试也有问题,因此我们项目中放弃了使用ST公司的CPAL库以及标准外设库 访问I2c器件,用IO模拟I2c总线,同时也是支持中断方式完成I2C读写. 目前网上绝大部分IO模拟I2c总线的程序都是查询方式,浪费大量CPU周期用于循环等待,本文的程序使用定时器中断推
GPIO实现I2C协议模拟(2)
接着上一节继续补充 结合上一节的描述 写Slave的过程如下(BYTE) 读Slave的过程如下(BYTE) 分为两段 第一段 ,写OFFSET,第二段读数据 WORD的方式与BYTE大同异 读行为 读到一个BYTE就需要发一次ACK,最后一次不发ACK,而是发NACK 写行为 后面 Slave Data写两次,每次都需要检查ACK 再附一个GPIO模拟I2C实际读WORD的行为,波形图
GPIO实现I2C协议模拟(1)
最近需要用GPIO模拟I2C协议,如果是在Linux下面比较简单,但在Windows下面,是否有没Linux那么简单了. 索性自己对I2C协议还有一些了解,翻了SPEC并结合示波器量出的实际信号分析,总算有些成就,在这里以做记录 I2C是什么,这里不做介绍,网上资料太多. 要用GPIO模拟I2C协议,就是控制GPIO的High与Low,复制出与I2C通信协议一样的波形出来. 由于标准的I2C频率在10K到100kHz之间,所以用GPIO模拟还是需要考虑一个IO动作时间问题. 个人推荐整个模拟动作
openwrt 模拟i2c驱动(一)
一:加载i2c driver kmod-i2c-core................................................ I2C support kmod-i2c-algo-bit............................. I2C bit-banging interfaces kmod-i2c-algo-pca................................ I2C PCA 9564 interfaces kmod-i2c-algo
gpio模拟i2c驱动
前段时间做项目,需要gpio模拟i2c通信,最后参考了一些资料,然后编写了一个程序.现在发出来,以免以后忘记,也为一些需要的朋友提供参考.不喜勿喷哈. /* 说明:该程序是基于atmel公司的sama5d35 MCU 用其中两个GPIO引脚模拟i2c通信. * 其中两个引脚连接到了hd1650上面.然后检测按键扫描的驱动 * */ 该程序可以作为gpio模拟i2c程序的参考.不同的平台,函数实现不同,但是i2c通信的时序和原理是相同的.希望对一些朋友有帮助. #include<linux/ini
Linux驱动编程--基于I2C子系统的I2C驱动
代码中,我添加了很多注释,应该不难理解,有错误大家可以指出来,我再改正 #include <linux/kernel.h> #include <linux/module.h> #include <linux/slab.h> #include <linux/cdev.h> #include <linux/i2c.h> #include <linux/fs.h> #include <asm/uaccess.h> #define
STM32模拟I2C
之前为了测试, 拿最小板做了一个I2C的主发跟主读, 一开始当然是尝试用硬件I2C, 结果弄了很久, 时间紧迫, 只好用了模拟, 结果发现, 哎, 真特么挺好用的, 现在1片儿顶过去5片儿. 硬件I2C, 用库函数的方法如下: void WriteData2OBD(u8 TxLength){ u8 Tx_Idx=0; I2C_GenerateSTART(I2C2, ENABLE); //起始信号 while(!I2C_CheckEven
LPC4370使用学习:GPIO的引脚功能使用,和12864OLED模拟I2C驱动
一: 手中有块LPC4370的开发板,因为便宜,所以引脚引出的不多,而且只有基本的底板资源驱动代码和例程. 看着手册和例程看了老半天,写程序写了半天,结果GPIO老是驱动不起来,因为引脚配置寄存器中有个MODE(选择引脚功能)的选项中8个function功能不知道到底啥意思,其中一个手册 LPC4350_30_20_10_User_manuall_CN( 下载地址:http://www.waveshare.net/w/upload/d/d9/LPC4350_30_20_10_User_manua
热门专题
nginx导致session失效
nginx js 不更新 重启都没用
go gocolly 可以爬取动态网站嘛
线性最小二乘法的Python代码来解决线性回归问题
centos7远程无法登录什么原因
efcore 类中属性默认值
rgba 转换 十六进制 在线
sse 统计灰度直方图
maildrop文件夹占用过大
jq中数组重新就删除
运行.net4.0注册动态库 未能从程序集中加载类型
小程序flexshrink可以为小数吗
如何查看nginx是否正常
android HttpURLConnection 超时
银河麒麟安装wps 飞腾cpu
wpf ellipse 数据接入 显示
vs JavaScript插件
网页需要用cookie怎么scrapy爬取
pdgcnteditor怎么编辑目录
java map和数据库区别