请教关于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;
}
//
}
不知楼主这个问题解决了么,陀螺仪数据是否正常?
页:
[1]