找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2781|回复: 7
打印 上一主题 下一主题
收起左侧

stc8g1k08a单片机模拟IIC读取不到IIC信号

[复制链接]
跳转到指定楼层
楼主
ID:1012238 发表于 2022-3-22 16:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,我做的是从IIC(用的模拟IIC,引脚为SCl5.4,SDA5.5,因为硬件的不太会用,)读取信号,然后把信号通过uart传给电脑,但是一直传过来的信号都是FF,不知道为啥,求求大佬们救救孩子吧。设备地址是127

附件里有单片机代码

0.png (57.62 KB, 下载次数: 70)

这是单片机引脚图

这是单片机引脚图

1.png (10.67 KB, 下载次数: 68)

这是要读取的信号的时序

这是要读取的信号的时序

2.png (90.35 KB, 下载次数: 75)

这是目前读到的值

这是目前读到的值

STC8G1K08A模拟 IIC自己改(1).zip

132.42 KB, 下载次数: 26

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:688692 发表于 2022-3-23 01:16 | 只看该作者
我看到你将P5口设置为推挽输出,这显然有问题的。你的代码如下
void IO_init(void)
{
        P5M0 = 0XFF;
        P5M1 = 0X00;//设置P5口为推挽输出
       
        P3M0 |= 0X00;//0000 0000
        P3M1  = 0X00;//       

}

显然,应该设置为标准双向口或者SCL推挽SDA开漏然后外部加个上拉。
回复

使用道具 举报

板凳
ID:1012238 发表于 2022-3-23 09:28 | 只看该作者
cnos 发表于 2022-3-23 01:16
我看到你将P5口设置为推挽输出,这显然有问题的。你的代码如下
void IO_init(void)
{

P5M0 = 0x00; P5M1 == 0x00;       设置成这样嘛
SCL推挽SDA开漏咋设置呀,大佬能指点一下嘛
回复

使用道具 举报

地板
ID:401564 发表于 2022-3-23 17:01 | 只看该作者
P5只要设置成正常的模式就行了,但是要启用上拉电阻
IIC应答和写入部分我改了一下,你看一下没有看完所有程序,暂时没有看到其它问题
STC8G1K08A模拟 IIC自己改.rar (117.2 KB, 下载次数: 107)

回复

使用道具 举报

5#
ID:1012238 发表于 2022-3-31 18:34 | 只看该作者
Y_G_G 发表于 2022-3-23 17:01
P5只要设置成正常的模式就行了,但是要启用上拉电阻
IIC应答和写入部分我改了一下,你看一下没有看完所有程 ...

好的,谢谢大佬。
我已经弄好啦
回复

使用道具 举报

6#
ID:975054 发表于 2022-4-23 00:06 | 只看该作者
嗯 弄好了就好,我用的硬件I2C,稳定的要死! 就懒得去试软件模拟的代码了.
归根到底,按手册弄清楚 接口要求的时序就好了!
回复

使用道具 举报

7#
ID:960619 发表于 2022-4-25 21:45 来自手机 | 只看该作者
ax6808 发表于 2022-4-23 00:06
嗯 弄好了就好,我用的硬件I2C,稳定的要死! 就懒得去试软件模拟的代码了.
归根到底,按手册弄清楚 接口要求 ...

硬件的从机吗?我用官方的例程,读一遍后数据就被覆盖成从机地址了。
回复

使用道具 举报

8#
ID:1063561 发表于 2023-6-4 18:33 | 只看该作者
模拟IIC,引脚可以用SCl3.6,SDA3.7吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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