您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> 用BF526的TWI出问题
本帖共有451个阅读者
发表帖子 发表投票 回复主题
用BF526的TWI出问题
zww1989(论坛新手)
zww1989
头衔:社区公民
帮派:无帮无派
帖数:7
金钱:165
积分:11
注册时间:2015/11/26
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
用BF526的TWI出问题
我就是主函数中调用twi_interface.c   给它的几个参数赋值就可以了吗??老是没有数据读出

你好
等级:论坛新手 参考IP地址:*.*.*.*
2015/11/26 12:38:50
zww1989(论坛新手)
zww1989
头衔:社区公民
帮派:无帮无派
帖数:7
金钱:165
积分:11
注册时间:2015/11/26
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

如何确定我要写的芯片的SCL SDA 两个引脚与dsp连接上了    


你好
等级:论坛新手 参考IP地址:*.*.*.*
2015/11/26 12:57:09
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
只需对TWI接口执行一下复位函数就可以了,如:
unsigned char AudioConfig[] = {
PWDC, 0x00FF,  
LLVC, 0x1d,
RLVC, 0x1d,
LHVC, 0x78,
RHVC, 0x78,
AAPC, 0xf5,
DAPC, 0,
PWDC, 1,
DAIF, MS|FOR|LRP,
SARC, 0,
DIAC, ACT|RES
};
Reset_TWI(); /* reset the TWI interface */

TWI_MasterMode_Write( AIC23B_ADDRESS>>1, AudioConfig, 11, 2);

你可以连续执行TWI_MasterMode_Write 函数,用示波器测量信号和数据线的波形,或者发送一次TWI_MasterMode_Write函数,测量数据线上有没有ACK应答信号。

TWI_MasterMode_Write函数中,有一段等待应答的错误判断机制:
for (j = 0; j < (TWI_Length-1); j++)
{
    /* # of transfers before stop condition */
while ((*pTWI_FIFO_STAT == XMTSTAT) && --timeout) /* wait to load the next sample into the TX FIFO */ // TAR37913
{
asm("nop;"); // TAR37913
asm("nop;");
asm("nop;");
ssync();
}
if(!timeout) // TAR37913
return;

*pTWI_XMT_DATA8 = *TWI_Data_Pointer++; /* load the next sample into the TX FIFO */
ssync();
}

如果你的代码每次都是超时跳出,那说明你的IIC还没有调通,检查硬件连接或者其他的什么。
另外你注意下IIC时钟和数据线上的上拉电阻。如果不行更换1.5K或者10K的试试,我遇到过这个情况。
个人感觉TWI接口用着不是很爽,感觉有BUG,不如IO模拟的好使,在一些官方例子代码中,你也会看到一些循环写入输入的代码,就是不断地写入配置数据,直到配置正确。感觉也是在避免这个BUG。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2015/11/29 9:00:23
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.160063 Call, 1 Queries, Processed in 0.017578 second(s),