搜索
bottom↓
回复: 19

关于使用单片机模拟I2C从机

[复制链接]

出0入0汤圆

发表于 2018-3-8 17:23:54 | 显示全部楼层 |阅读模式
做了一个单片机模拟I2C去读取温湿度传感器SHT30的程序,现在需要做一个使用单片机模拟I2C从机的程序,让主机读到不同的固定温湿度,有没有大神做过?

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2018-3-8 17:29:36 | 显示全部楼层
主机程序是用PIC做的

出0入0汤圆

发表于 2018-3-8 17:31:50 | 显示全部楼层
很多单片机的I2C都支持从机模式的啊

出0入0汤圆

发表于 2018-3-8 17:39:06 | 显示全部楼层
I2C转串口,在电脑上能不能模拟从机

出10入23汤圆

发表于 2018-3-8 17:41:12 来自手机 | 显示全部楼层
n76e003就支持从机啊

出0入0汤圆

发表于 2018-3-8 17:54:46 | 显示全部楼层
现在很多单片机都带硬件I2C的,实在没有软件模拟也很可以啊,只是速率不能太快

出0入9汤圆

发表于 2018-3-8 19:55:19 | 显示全部楼层
找个支持I2C从机模式的单片机比较简单

出0入0汤圆

发表于 2018-3-8 21:52:08 来自手机 | 显示全部楼层
不带iic控制器的单片机也不多见了吧!

出0入0汤圆

 楼主| 发表于 2018-3-12 10:43:09 | 显示全部楼层
bailangcn 发表于 2018-3-8 17:31
很多单片机的I2C都支持从机模式的啊

试过了单片机的从机模式,但是好像一直收不到数据,中断标志始终不能置一。所以就想模拟一个从机。

出0入0汤圆

 楼主| 发表于 2018-3-12 10:43:50 | 显示全部楼层
mo_fish 发表于 2018-3-8 17:54
现在很多单片机都带硬件I2C的,实在没有软件模拟也很可以啊,只是速率不能太快 ...

现在就是想模拟一个从机,但是无从下手,方便给个示例吗?

出0入0汤圆

发表于 2018-3-12 10:53:12 | 显示全部楼层
是我的逻辑有问题吗? 单片机读传感器。 不应该是单片机为主机,传感器为从机???
如果是上位机,为什么不用485接口?  I2C又不能拉很远

出0入0汤圆

 楼主| 发表于 2018-3-12 11:20:41 | 显示全部楼层
jiamingz 发表于 2018-3-12 10:53
是我的逻辑有问题吗? 单片机读传感器。 不应该是单片机为主机,传感器为从机???
如果是上位机,为什么 ...

是用单片机模拟一个温湿度传感器,发送固定的温湿度数据。

出0入0汤圆

发表于 2018-3-12 12:40:13 | 显示全部楼层
按照I2C从机的读写逻辑,一个bit一个bit顺着来就好了

出0入30汤圆

发表于 2018-3-12 13:21:04 | 显示全部楼层
模拟IIC从机应该很难,
都是用MCU自带的IIC功能,

出0入0汤圆

发表于 2018-3-12 13:24:30 | 显示全部楼层
N76E003、stm8s103支持从机的,也有官方从机demo,可直接用,资料网上有的

出0入0汤圆

发表于 2018-3-16 14:52:04 | 显示全部楼层
https://item.taobao.com/item.htm ... amp;id=545509364910
楼主用这个,绝对好用,支持I2C主机,从机,带界面程序

出0入21汤圆

发表于 2018-3-16 23:30:17 | 显示全部楼层
lz是想拿单片机做密码用?

出0入53汤圆

发表于 2018-3-17 05:12:29 来自手机 | 显示全部楼层
shenye6700 发表于 2018-3-12 10:43
试过了单片机的从机模式,但是好像一直收不到数据,中断标志始终不能置一。所以就想模拟一个从机。 ...

建议lz用逻辑分析仪,调试起来比较简单

出100入0汤圆

发表于 2019-10-31 20:19:35 | 显示全部楼层
mark      

出0入0汤圆

发表于 2019-11-1 08:51:26 | 显示全部楼层
单片机普通IO模拟I2C从机确实有一定的难度,尤其是当I2C总线上挂载多个设备时,且100KHz和400KHz共存时,如果不注意会拖死总线。最需要注意的是SCL和SDA一定要接外部上拉电阻,闲置状态和读状态时SCL和SDA要设为输入(无上拉和下拉),写状态时SDA一定要设为开漏输出或开集输出,SCL要视情况而定,如果主机速度太快,从机反应不过来,也可以转为开漏输出或开集输出,输出低电平延迟一点时间,反应过来后切回输入态。注意转态时可能对应IO会出现异常电平,这就可能需要看是什么MCU了,一般解决方法是先往IO口写某个电平,再转态。最后需要注意的是I2C的复位,当I2C总线被拖死后,主机检测到SDA拉低超过一定的时间,会在SCL上连着发9 个时钟脉冲,这时从机需要响应这个复位操作。I2C的起始条件可以用IO电平变化中断来做,这样效率会高些。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 20:36

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表