硬汉嵌入式论坛

 找回密码
 立即注册
查看: 7345|回复: 6
收起左侧

[有问必答] 请教模拟iic问题

[复制链接]

32

主题

115

回帖

211

积分

高级会员

积分
211
发表于 2021-4-25 11:13:57 | 显示全部楼层 |阅读模式
我移植了V5配套资料,标准库版本,V5配套资料\02.配套例程\02.高级篇例程(裸机)\V5-103_串行EEPROM读写例程\Project\MDK-ARM(uV4)
我用来读写铁电FM24V10,延时函数里也循环30次,修改了GPIO配置,但是在设备检查那里,waitack读到的都是1,就是没有应答,有什么调试思路吗?
  1. uint8_t I2C_CheckDevice(uint8_t _Address)
  2. {
  3.         uint8_t ucAck;

  4.         if (I2C_SDA_READ() && I2C_SCL_READ())
  5.         {
  6.                 I2C_Start();                /* 发送启动信号 */

  7.                 /* 发送设备地址+读写控制bit(0 = w, 1 = r) bit7 先传 */
  8.                 I2C_SendByte(_Address);
  9.                 ucAck = I2C_WaitAck();        /* 检测设备的ACK应答 */

  10.                 I2C_Stop();                        /* 发送停止信号 */

  11.                 return ucAck;
  12.         }
  13.         return 1;        /* I2C总线异常 */
  14. }
复制代码
这个ADDR的器件地址0xA0
  1. //检查铁电存储器的应答信号,1正常 0不正常
  2. uint8_t I2C_FR_Check(void)
  3. {
  4.         u8 i;
  5.         if(I2C_CheckDevice( ADDR ) == 0)
  6.         {
  7.                 return 1;
  8.         }
  9.         else
  10.         {
  11.                 I2C_Stop();
  12.                 return 0 ;
  13.         }
  14. }
复制代码



回复

使用道具 举报

0

主题

12

回帖

12

积分

新手上路

积分
12
发表于 2021-4-25 21:30:22 | 显示全部楼层
使用逻辑分析仪或示波器看下波形吧。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2021-4-26 11:27:51 | 显示全部楼层

回帖奖励 +5 个金币

先用示波器看下,然后根据需要调节下时序延迟
回复

使用道具 举报

32

主题

115

回帖

211

积分

高级会员

积分
211
 楼主| 发表于 2021-4-29 09:46:37 | 显示全部楼层
eric2013 发表于 2021-4-26 11:27
先用示波器看下,然后根据需要调节下时序延迟

硬汉你好,你代码里的delay  for循环30次就是测量出来的吗?我看手册没有说每个部分具体需要多少时间啊,谢谢
回复

使用道具 举报

32

主题

115

回帖

211

积分

高级会员

积分
211
 楼主| 发表于 2021-4-29 09:56:05 | 显示全部楼层
这是手册里的图,这就是时序图吧,我看都几百ns,而且标记的只有一小段,标的乱七八糟的



回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2021-4-30 09:11:03 | 显示全部楼层
伊森亨特 发表于 2021-4-29 09:46
硬汉你好,你代码里的delay  for循环30次就是测量出来的吗?我看手册没有说每个部分具体需要多少时间啊, ...

1、一般不用,I2C器件都有很大的容错性,单片机这块,主频差别不大,基本都通用。
2、不愿意使用这种方式的话,使用我之前搞的DWT时钟周期计数器

DWT实现一个精确微秒延迟的参考例程
https://forum.anfulai.cn/forum.p ... 9128&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

32

主题

115

回帖

211

积分

高级会员

积分
211
 楼主| 发表于 2021-4-30 12:14:19 | 显示全部楼层
eric2013 发表于 2021-4-30 09:11
1、一般不用,I2C器件都有很大的容错性,单片机这块,主频差别不大,基本都通用。
2、不愿意使用这种方 ...

我现在用的滴答定时器的延时,还可以。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-16 13:52 , Processed in 0.040547 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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