hecklerkwan 发表于 2012-4-16 02:07:36

请教关于AVR TWI接口读取多个字节数据问题。

本帖最后由 hecklerkwan 于 2012-4-16 02:09 编辑

各位高手,请教一个问题。

看了AVR的DATASHEET中关于TWI主机接收过程:


我有点搞不明白的地方就是图中收到第一个数据后,单片机要设置0x50,以便让从设备继续发送下一个数据,直到我收够不收了,就发0x58。这个如何让AVR发这个状态出去呢?

我的读取函数:

unsigned char                        HMC5883_ReadXYZ(unsigned int * destX, unsigned int * destY, unsigned int * destZ)
{
        unsigned char        dummy;
        unsigned char        tmpCallResult;

        tmpCallResult=TWI_StartMT();
        if((tmpCallResult==TWI_STAT_STARTED)||(tmpCallResult==TWI_STAT_RESTARTED))
        {
                if(TWI_WriteByte(DEV_ADDR_HMC5883RD)==TWI_STAT_MR_SLARSENT_ACK)
                {
                        TWI_StartMR();
                        tmpData=TWDR;

//这里加入什么让从机继续发?例如,我要收6个字节的数据。求指点求指点

                        TWI_Stop();
                        return 0;
                }
                else
                {
                        return 5;
                }
        }
        else
        {
                return 4;
        }
        //
}

nichengyu1989 发表于 2013-2-14 14:47:02

不知楼主这个问题解决了么,陀螺仪数据是否正常?
页: [1]
查看完整版本: 请教关于AVR TWI接口读取多个字节数据问题。