您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> BF51X技术支持专区 -> BF512 TWI读取数据问题(2)   跪求版主
本帖共有355个阅读者
发表帖子 发表投票 回复主题
BF512 TWI读取数据问题(2) 跪求版主
ABC222(论坛新手)
ABC222
头衔:社区公民
帮派:无帮无派
帖数:5
金钱:143
积分:7
注册时间:2016/10/25
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
BF512 TWI读取数据问题(2) 跪求版主
在使用BF512 的TWI进行读取数据时,根据官方给定的汇编代码,改写成C语言代码;但是改编的C语言代码,在测试过程中,并没有读取到数值出来,烦请版主,在空闲的时候,帮助看一下,发现问题,望及时指正,谢谢,下述C代码,是我从官方用户手册的汇编代码改写而来:

int twi_init(void)
{
*pTWI_CONTROL = TWI_ENA | 0x000a;
*pTWI_CLKDIV = 0x2044;  //  CLKHI(0x20) | CLKLOW(0x44)
return 0;
}

int twi_write_data(int *buf)  //写一个字节数据
{
int tmp = 0, stat_tmp = 0;
*pMASTER_ADDR = 0x6a; //0x6a为TWI所要读取的MAX11617(ADC模块)的地址
tmp = 1;   //写八位数据
tmp <<= 6;
tmp |= 1;   //MEN
*pMASTER_CTL = tmp;

*pTWI_XMT_DATA8 = *buf;


do
{
stat_tmp  = *pTWI_INT_STAT;
}
while((stat_tmp & XMTSERV) != XMTSERV);
*pTWI_INT_STAT |= stat_tmp;  //循环判断发送缓存队列的状态

return 0;
}

void twi_read_adc_value(unsigned char adc_address, int *adc_buf_value, int adc_buf_length)
{
int temp = 0;
int fifo_stat_value = 0;
int int_stat_value = 0;

adc_address = (adc_address >> 1);
*pTWI_MASTER_ADDR = adc_address;   //从机地址 adc_address = 0x6a

temp = adc_buf_length;        //数据长度 adc_buf_length = 2
temp = (temp << 6);
temp = (temp | MDIR);  //MDIR
temp = (temp | MEN);   //MEN
*pTWI_MASTER_CTL = temp;

do
{
fifo_stat_value = *pTWI_FIFO_STAT;
fifo_stat_value = (fifo_stat_value & 0xc);
} while(fifo_stat_value != 0xc);  //循环判断接收缓存,是否已满
*adc_buf_value =  *pTWI_RCV_DATA16;


do
{
int_stat_value =  *pTWI_INT_STAT;  
} while((*pTWI_INT_STAT & MCOMP) != MCOMP); //循环判断,接收过程,是否已经完成
*pTWI_INT_STAT = int_stat_value;

}


下述三个函数,为主函数中依次调用的函数:

twi_init();
twi_write_data(&send_buf);
twi_read_adc_value(0x6a, &adc_receive_value, 2);

调用结束后,在adc_receive_value中,并未获取到任何值;还望楼主指正,接收函数twi_read_adc_value(unsigned char adc_address, int *adc_buf_value, int adc_buf_length);哪里改编有误,不胜感激。


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2016/10/25 20:57:30
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5187
金钱:34761
积分:6369
注册时间:2011/6/7
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
汇编高手,给你参考一下我们的正确的代码吧,我看汇编跟看天书一样。


我是OP...
等级:管理员 参考IP地址:*.*.*.*
2016/10/25 21:16:00
ABC222(论坛新手)
ABC222
头衔:社区公民
帮派:无帮无派
帖数:5
金钱:143
积分:7
注册时间:2016/10/25
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
十分感谢管理员的无私分享

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2016/10/25 22:33:31
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.154101 Call, 1 Queries, Processed in 0.031250 second(s),