导航:首页 > 操作系统 > 单片机i2c驱动

单片机i2c驱动

发布时间:2022-06-08 11:47:10

⑴ 很纠结啊!I2C通信,为什么芯片有些要写“读写驱动程序”,有些则不要

楼主错了,51单片机是没有集成I2C模块的,那是用普通的IO口去模拟的I2C的时序,所以就需要把IO口随时的变化成需要的电平,而ARM或者其他的,单片机里集成了IIC模块,你只需要把寄存器设置好了,由模块自己按照标准的IIC协议执行。

⑵ 单片机中 I2C总线协议中的问题

SCL=0; //拉低时钟线,准备接收数据,否则后面循环中就无法出第1个上升沿了
delay(); //延时
SDA=1; //释放数据线(不驱动,悬浮)由发送方驱动此线
delay(); //延时
for(i=0;i<8;i++) //8次循环每次接收1位
{
SCL=1; //拉高时钟线,出一个上升沿,读取数据,发送方会保持数据在SDA线上
delay();
k=(k<<1)|SDA;//k的其他位左移,将数据线状态保存在k的最低位
SCL=0; //拉低时钟线,等待发送放在数据线上放下1位
delay();
}

⑶ i2c的驱动睡眠和恢复操作怎么被调用

I2C 有主机模式和从机模式,,所以有2个工程,,分别给2个单片机,,

也可以在一个工程中完成,,也就是1个单片机有时做主机 有时做从机

那你就要写一个主机和从机的判断函数了,,

所以楼主你先要搞清楚 谁是主机 谁是从机 谁给谁发数据!!!弄清楚再写代码!

至于为什么加nop延时,,主要是因为I2C协议SCL,SDA的高低电平持续时间要求 是有严格的规

定 特别是对频率晶振比较大的单片机 所以加NOP保证高电平 或者低电平 到位

一般规定5US 如果只持续1US 就不行

⑷ stc89c52单片机 实现i2c的引脚固定吗

stc89c52单片机 实现i2c的引脚固定吗?
第一种方式是固定的:如果使用stc89c52单片机I2C控制对EEPROM进行读写,读写访问寄存器就好了,不用编代码,这种情况下只能使用规定的两个引脚,否则实现不了读写;
第二种方式不是固定的:你可以任意使用stc89c52单片机两个引脚,作为数据和时钟,然后自己编写模块I2C代码,网上一大把,随便下载都可以用。

⑸ 51单片机I2C总线的问题。关于EEPROM

你刚把数据写进去立马从中读出来,硬件反应不过来,必须要延时一段时间,void delay1(int z)
{
intr x,y;
for(x=z;x>0;x--)
for(y=123;y>0;y--);
}
在写函数之后加delay1(1000);
就对了

⑹ 1602液晶显示屏在51单片机上用I2C协议驱动


去网络网页搜51虚拟I2C,有很多相关资料和程序可供参考。

⑺ 如何用51单片机模拟i2c协议

I2C 协议包含了起始条件,停止条件,串行移位;这里面包含了三段时序。
下面根据应用分析:
1,假如你要写一个ic的通信协议,而这个通信协议用的是I2C。
一般需要I2C通信的ic都会告诉你具体的时序图,你可以查看具体的IC技术手册,然后你根据时序图的高低电位和电平改变的先后顺序来写I2C协议就行了,注意速度。
2,你想做一个模拟 I2C 驱动协议。
你在网上搜索一下I2C时序图(有很多哦),然后你根据时序图上面的电平高低,电平改变顺序来写这个协议就行了。

⑻ 现在要写一个stm32的i2c驱动,以前没任何单片机基础,现学的,有软件编程基础

不理解你说的I2C驱动是什么意思,是指用stm32与其他设备进行I2C通信吗?还是用PC通过I2C控制stm32?
如果是后者,直接看I2C协议。
如果是前者,stm32有硬件I2C,但是都说不太好用bug多,建议用stm32模拟I2C。首先学习如何把程序下载到单片机,然后看stm32的时钟树图和官方库函数(主要看初始化部分),设备初始化完毕之后就可以执行你的I2C代码了。

⑼ 这是一个单片机I2C的程序,麻烦高手帮忙指点下;为什么有时显示不行呢,虽然概率很低,要隔很长

1、可能延时时间不够,器件读写速度慢,跟不上。

void delay()
{ ;; } //延迟5毫秒左右;

你用多少的晶振?12M的晶振标准51核,只能延时2个微秒。

2、write_byte(0xaa);
respons();
像这种写入数据的操作需要时间比较长,你的等待时间可能不够。查看你器件的datasheet,看它的写入时间需要多久。

3、拿示波器看一下你IIC总线的波形的上升时间和下降时间能不能满足IIC规范的要求。

4、嵌入式系统从稳定性考虑,最好对每个函数的操作成功与否进行判断,系统要对错误的情况进行处理。比如楼主的respons();函数,比较好的一种处理方式是:如果等待超时,那么返回错误码,由上层函数决定如何处理错误。重发or放弃,等等。 楼主刚刚开始学习不必要深究,可以思考下这方面的问题。

⑽ 请问I2C总线的驱动程序 要学会自己写嘛 还是平时写的时候只要复制过来,拿来用就可以 求指教啊!!!

如果你学单片机的哈,肯定是要学会自己写的,最起码你要能把别人的程序能调通,能通信,而且不同单片机的I2C协议是有部分的不同的,例如有的I2C在接收的时候会发两次,第一次不是数据而是要把它读空,第二次才是数据,如果你用正常的单片机协议肯定就读不到数据了

阅读全文

与单片机i2c驱动相关的资料

热点内容
手机云视频加密怎么关 浏览:72
北京文件夹加密多少钱 浏览:671
什么是车鉴定app 浏览:66
战地一私人服务器怎么买 浏览:497
陈天程序员 浏览:833
编译原理如何运用到编程中 浏览:17
linux选择数据库 浏览:376
php两个数组差集 浏览:978
迷你pdf阅读器下载 浏览:433
做一个python小程序 浏览:655
pythonossystem和 浏览:645
win2008如何搭建ftp服务器 浏览:53
安卓手机为什么不翻牌 浏览:546
删除pkpm及相关文件夹 浏览:481
房贷解压银行内部流程 浏览:734
安卓手机如何更改语音 浏览:601
android红包实现 浏览:734
苹果的nvme为什么安卓不用 浏览:32
python输入单词统计个数 浏览:998
脚本软件提取源码 浏览:281