找回密码
 注册
搜索
查看: 760|回复: 1

[讨论] 求助:MCU通过IIC连续读取认证IC数据有问题?

[复制链接]
发表于 2008-8-21 21:42:36 | 显示全部楼层 |阅读模式
单片机是C8051F310,被控器为iPod的认证IC;通过IIC通信,现在单个读正常,可是连续读数据,读出的内容不对;

例如:0x04 寄存器对应4个连续字节,内容为 0x00000200, 读出为0x0FFFFFFF,代码如下。

请高人多多指点:

        unsigned char block_Counter;
        Iic_Start ();                //启动
        Iic_Sent_8_Bit (iic_Device_Address);                //发送器件地址
        if (F0 == 0)
        {
                return (0);
        }
        Iic_Sent_8_Bit (iic_Address);                //发送器件子地址
        if (F0 == 0)
        {
                return (0);
        }
        Iic_Stop ();                //释放
        Delay (1100);                //大于200US
        Iic_Start ();                //启动
        Iic_Sent_8_Bit (iic_Device_Address + 1);                //发送器件地址和读取标志
        if (F0 == 0)
        {
                return (0);
        }
        for (block_Counter = 0; block_Counter < (iic_Data_Num - 1); block_Counter ++)                //读取数据
        {
                *iic_Data_Point = Iic_Receive_8_Bit ();
                Iic_Ack (0);
                iic_Data_Point ++;
        }
        *iic_Data_Point = Iic_Receive_8_Bit ();
        Iic_Ack (1);
        Iic_Stop ();                //释放
发表于 2008-9-5 10:46:52 | 显示全部楼层
*iic_Data_Point = Iic_Receive_8_Bit ();
  Iic_Ack (0);
请问第二条语句是否应该改为Iic_Ack(1),因为某些IIC器件必须要主机发送应答位,如果没有读取到有效的ACK,IIC器件是不会动作的。所以你只能读取到第一字节。
这个情况我碰到过。
如果解决了希望分享经验。[em12]
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-10-8 01:20 , Processed in 0.044350 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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