打印
[DSP编程]

I2C通信问题

[复制链接]
1639|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pengfulai|  楼主 | 2013-8-21 09:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教各位老师,DSP5505 I2C 与DAC通信,DSP为主设备向DAC发送数据,之前是能工作的,但自从把原来的DAC用热风枪吹下来换了一片DAC,程序运行一直卡在等待发送寄存器准备状态(红色标出),单步运行可以通过,请问有遇到此类问题的老师吗,是DSP的问题还是DAC的问题,难道是DSP虚焊了?请各位老师不吝赐教,小弟感激不尽~~~~


Int16 I2C_DAC_write(int chan_num, Uint16 data)
{
        Int16  timeout, i;
        Uint8  control_byte,data1,data2;
        Uint8  i2cdata[3] = {0,0,0};
        Uint16 len  = 3;                  // number of data word to be transmitted
        Uint8  i2c_addr = 0x4F;                  //DAC slave address
                //I2C_IER = 0x0000;
        I2C_CNT = len;                    // Set number of bytes(data word) to write
        I2C_SAR = i2c_addr;               // Set I2C slave address
        I2C_MDR |= MDR_STT                 // start
                  | MDR_TRX               // transmit
                  | MDR_MST               // master
                  | MDR_IRS               // Release from reset
                  | MDR_FREE;             // free run regardless of the breakpoint

        wait(5);                        // Short delay
     
        
/**************control byte to be transmitted**********************************************/
        switch(chan_num)
                        {
                                        case 0: control_byte = 0x10;
                                        break;
                                        case 1: control_byte = 0x12;
                                        break;
                                        case 2: control_byte = 0x14;
                                        break;
                                        case 3: control_byte = 0x16;
                                        break;
                                        default:
                                                while(1);
                        }
                       
                       
                       
/* *********change the 16bit word to 8 bit byte,MSB first to be transmitted **************/
            data1  = (data & 0x0FF0);
            data1  = data1 >> 4;
            data2 = (data & 0x000F);
            data2 = data2 << 4;
        
        i2cdata[0] = control_byte;  //control byte
            i2cdata[1] = (Uint8)data1; //MSB data
            i2cdata[2] = (Uint8)data2; //LSB data
        
   
        

/***********发送数据***********************************************/
        for ( i = 0 ; i < len ; i++ )
        {
           I2C_DXR = i2cdata;            // Write
           while ( ( I2C_STR & STR_XRDY ) == 0 ); //wait for TX ready
           
        }
      
        
        I2C_MDR |= MDR_STP;             // Generate STOP

                wait(100);

        return 0;

}

相关帖子

沙发
zhangmangui| | 2013-8-21 13:54 | 只看该作者
应该是DAC没有响应了   我觉得最大的可能是你换的DAC有问题   
建议你检查硬件电路和焊接问题

使用特权

评论回复
板凳
pengfulai|  楼主 | 2013-8-21 14:06 | 只看该作者
zhangmangui 发表于 2013-8-21 13:54
应该是DAC没有响应了   我觉得最大的可能是你换的DAC有问题   
建议你检查硬件电路和焊接问题 ...

DAC我换了好几片了,都是同一现象,引脚用万用测试过没有虚焊

使用特权

评论回复
地板
zhangmangui| | 2013-8-21 14:13 | 只看该作者
pengfulai 发表于 2013-8-21 14:06
DAC我换了好几片了,都是同一现象,引脚用万用测试过没有虚焊

你把那一句屏蔽了看看    就发一次   或者再两次发送之间延时一下

使用特权

评论回复
5
pengfulai|  楼主 | 2013-8-21 15:47 | 只看该作者
zhangmangui 发表于 2013-8-21 14:13
你把那一句屏蔽了看看    就发一次   或者再两次发送之间延时一下

屏了之后能完整运行,但DAC输出是错误的

使用特权

评论回复
6
tianwen_4524| | 2013-8-21 16:10 | 只看该作者
观望,请问TMS320F2000系列里哪个有I2C接口???

使用特权

评论回复
7
zhangmangui| | 2013-8-21 17:22 | 只看该作者
tianwen_4524 发表于 2013-8-21 16:10
观望,请问TMS320F2000系列里哪个有I2C接口???

28335应该有  2812是没有的

使用特权

评论回复
8
zhangmangui| | 2013-8-21 17:24 | 只看该作者
tianwen_4524 发表于 2013-8-21 16:10
观望,请问TMS320F2000系列里哪个有I2C接口???

看看我这儿的分享和对比
https://bbs.21ic.com/icview-590203-1-1.html

使用特权

评论回复
9
tianwen_4524| | 2013-8-22 10:13 | 只看该作者
zhangmangui 发表于 2013-8-21 17:24
看看我这儿的分享和对比
https://bbs.21ic.com/icview-590203-1-1.html

非常感谢!!!!!!!

使用特权

评论回复
10
zhangmangui| | 2013-8-22 11:16 | 只看该作者
tianwen_4524 发表于 2013-8-22 10:13
非常感谢!!!!!!!

不谢  同时也感谢你的支持

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

13

帖子

0

粉丝