野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6848|回复: 17

I2C代码移植时,出错怎么办,求大神看看

[复制链接]
发表于 2022-2-23 21:33:44 | 显示全部楼层 |阅读模式
我的单片机是stcf10xrct6,是一个mini版来的,移植火哥的软件模拟i2c,出现图中错误,请问是怎么回事呢

出现这个错误怎么办

出现这个错误怎么办

main函数下的代码

main函数下的代码
回复

使用道具 举报

发表于 2022-2-25 08:56:04 | 显示全部楼层
移植的话,可以对比下原例程,是不是漏了什么,可以检查一下写入的地址和读取的地址是不是一样

回复 支持 反对

使用道具 举报

发表于 2022-2-26 08:00:50 | 显示全部楼层
移植大多出错是读写地址的问题,仔细IIC的相关内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-27 15:45:54 | 显示全部楼层
LF_laffy 发表于 2022-2-25 08:56
移植的话,可以对比下原例程,是不是漏了什么,可以检查一下写入的地址和读取的地址是不是一样

...

怎么检查自己的地址呢,我刚刚看了自己写入的地址和读出的地址都是由0开始,还有哪可以错吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-27 15:47:52 | 显示全部楼层
一级菜鸟 发表于 2022-2-26 08:00
移植大多出错是读写地址的问题,仔细IIC的相关内容

怎么检查自己的地址呢,我刚刚看了自己写入的地址和读出的地址都是由0开始,还有哪可以错吗
回复 支持 反对

使用道具 举报

发表于 2022-2-27 16:07:07 | 显示全部楼层
兄弟 你要放读写函数的内容 光main 看不出来的,看下SDA线 GPIO设置 和初始化对不对,当SCL正常,SDA没设时候.相当于 一直给SDA输出一个电平了一直给0x00或0xff.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-27 16:23:30 | 显示全部楼层
白鹭林暗旅 发表于 2022-2-27 16:07
兄弟 你要放读写函数的内容 光main 看不出来的,看下SDA线 GPIO设置 和初始化对不对,当SCL正常,SDA没设时 ...

兄弟方便加个微信或扣扣教一下我吗
wx:19832921134
qq:2432332089
回复 支持 反对

使用道具 举报

发表于 2022-2-27 16:42:10 | 显示全部楼层
邓玉胜 发表于 2022-2-27 16:23
兄弟方便加个微信或扣扣教一下我吗
wx:19832921134
qq:2432332089

晚上 我回去再加你 我也是刚入门一起学习而已
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-27 17:02:50 | 显示全部楼层
白鹭林暗旅 发表于 2022-2-27 16:42
晚上 我回去再加你 我也是刚入门一起学习而已

好,一起学习
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-27 20:39:51 | 显示全部楼层
白鹭林暗旅 发表于 2022-2-27 16:42
晚上 我回去再加你 我也是刚入门一起学习而已

请问能加个微信或qq吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-28 08:58:36 | 显示全部楼层
白鹭林暗旅 发表于 2022-2-27 16:07
兄弟 你要放读写函数的内容 光main 看不出来的,看下SDA线 GPIO设置 和初始化对不对,当SCL正常,SDA没设时 ...

你能给我qq或者微信号吗,我加你
回复 支持 反对

使用道具 举报

发表于 2022-2-28 10:52:38 | 显示全部楼层
邓玉胜 发表于 2022-2-27 15:47
怎么检查自己的地址呢,我刚刚看了自己写入的地址和读出的地址都是由0开始,还有哪可以错吗
...

你仔细阅读一下IIC通信的章节,读地址和写地址的规则
我记得IIC通讯读写地址是不一样的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-28 20:36:31 | 显示全部楼层
一级菜鸟 发表于 2022-2-28 10:52
你仔细阅读一下IIC通信的章节,读地址和写地址的规则
我记得IIC通讯读写地址是不一样的 ...

我32板子没有eeprom芯片,也没外接芯片,是要买个eeprom 模块吗
回复 支持 反对

使用道具 举报

发表于 2022-3-1 14:27:45 | 显示全部楼层
邓玉胜 发表于 2022-2-28 20:36
我32板子没有eeprom芯片,也没外接芯片,是要买个eeprom 模块吗

我的意思是对于其他存储外设也是一样的,读地址和写地址不能是一样的
要不就找不到硬件了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-2 16:19:35 | 显示全部楼层
一级菜鸟 发表于 2022-3-1 14:27
我的意思是对于其他存储外设也是一样的,读地址和写地址不能是一样的
要不就找不到硬件了 ...

那你做i2c的时候读和写分别用什么地址呢
回复 支持 反对

使用道具 举报

发表于 2022-3-2 17:25:36 | 显示全部楼层
EEPROM实物图
野火论坛202203021715294134..png

开发板原理图
野火论坛202203021718541589..png

零死角玩转-F103霸道.pdf第226页
野火论坛202203021720216934..png
由于原理图可知EEPROM A0 A1 A2接地都为0,而最低位控制读写方向
LSB位为0  这个地址就是1010 0000 = 0xA0 这个就是写操作地址
LSB位为1  这个地址就是1010 0001 = 0xA1 这个就是读操作地址
所以说对AT24C02这个EEPROM的读写地址是不一样的
回复 支持 反对

使用道具 举报

发表于 2022-3-3 08:11:09 | 显示全部楼层
邓玉胜 发表于 2022-3-2 16:19
那你做i2c的时候读和写分别用什么地址呢

看,梦落雨深的帖子
回复 支持 反对

使用道具 举报

发表于 2022-9-3 13:28:20 | 显示全部楼层
错误的原因多种多样,不贴代码很难分析。
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 22:10 , Processed in 0.037163 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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