|
本帖最后由 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;
}
//
}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|