您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> TWI问题
本帖共有602个阅读者
发表帖子 发表投票 回复主题
TWI问题
acc700(论坛新手)
acc700
头衔:社区公民
帮派:无帮无派
帖数:37
金钱:463
积分:47
注册时间:2012/12/18
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
TWI问题

摄像头ov9653例程TWI代码里有些疑问。。。请教下大家

void TWI0_MasterMode_Write(unsigned short DeviceAddr, unsigned short *TWI_Data_Pointer, unsigned short TX_Count, unsigned short TWI_TX_Length)
{
int i, j;

*pTWI0_FIFO_CTL = XMTFLUSH | RCVFLUSH;
ssync();

*pTWI0_MASTER_STAT = BUFWRERR | BUFRDERR | LOSTARB | ANAK | DNAK;
ssync();
    *pTWI0_FIFO_CTL = 0;    
*pTWI0_CONTROL = TWI_ENA | PRESCALE_VALUE;
*pTWI0_CLKDIV = ((CLKDIV_HI) << 8) | (CLKDIV_LO);  
*pTWI0_MASTER_ADDR = DeviceAddr;//I2C发送的地址包不是得包含读写位吗,为什么还要右移
for (i = 0; i < TX_Count; i++)
{
  delay(10000);
  *pTWI0_XMT_DATA8 = *TWI_Data_Pointer++;  
  *pTWI0_MASTER_CTL = (TWI_TX_Length<<6) | MEN;
  for (j = 0; j < (TWI_TX_Length-1); j++)
  {
   while (*pTWI0_FIFO_STAT == XMTSTAT)
   ssync();
   *pTWI0_XMT_DATA8 = *TWI_Data_Pointer++;
   ssync();
  }  
  while ((*pTWI0_INT_STAT & MCOMP) == 0)   //程序跑到这就一直跳不出循环了,TWI0_INT_STAT一直为0,请问有可能是哪有问题呢
  ssync();
  *pTWI0_INT_STAT = XMTSERV | MCOMP;    
}
asm("nop;");
asm("nop;");
asm("nop;");
}

现在在自己的板子上摄像头换成了HV7131R,这个器件地址和要写入的寄存器值表都改过了,运行的时候就是跳不出上面那个while循环,请教大家


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2013/4/18 22:42:53
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
你看一下器件地址是否正确,器件地址是7位的,不包含读写位

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2013/4/18 23:50:24
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159222 Call, 1 Queries, Processed in 0.015625 second(s),