单片机/MCU论坛
直播中

wq

8年用户 224经验值
擅长:电源/新能源 嵌入式技术 接口/总线/驱动
私信 关注
[问答]

TLC2543采集错误,一直发送错误数据

      使用TLC2543芯片采集电压,通过串口发送数据,但是现在发现在串口调试助手一直出现错误值,并且这个错误值一直跳动。      还有一个问题,TLC2543芯片我使用了AIN1,AIN2,AIN3。供电后,没接电压信号,我发现除了这三个口,其他AIN4~AN10的电压都是0.89V左右,请问这种现象正确吗。

      下边是程序。
uint read2543(unsigned char port)
{
        unsigned int i;
        uint ad = 0;
        clock = 0;
        cs = 0;
        eoc = 1;
        port <<= 4;
        for(i=0;i<12;i++)
        {
                if(out)
                        ad |= 0x01;
                in = (bit)(port&0x80);
                clock = 1;
                _nop_();_nop_();_nop_();
                clock = 0;
                _nop_();_nop_();_nop_();
                port = port << 1;
                ad = ad << 1;
        }
        cs = 1;
        ad = ad >> 1;
        return ad;
}



void main ()
{
        u8 i = 0;
        uint temp   ;
        uint result ;
        P3M0 =  0X20;                                //强制推挽输出P35
        P3M1 =         0X00;

        P2M0 =  0X01;                                //强制推挽输出P21
        P2M1 =         0X00;

        RS485_enable = 1;                        //485使能,不影响程序
                       
        usart_init();                                //串口初始化

        while(1)
        {
               
                i = 0;
                result = 0;
                temp  = 0;
                                       
                read2543(1);
                       
               
                j++;
                if(j >= 7)
                        j=0;
                result = read2543(1);
       
                temp = result;
                //temp =(uint)(result*1.0/4096*2496);                //        此指令不再使用,因测试时无法进行运算//基准电压2.496V
                //temp = (uint)(temp*6/10);                                                //                                        0.6094
                                       
                delay_ms(100);
                TX1_Buffer[0] = (u8)(temp>>24);
                TX1_Buffer[1] = (u8)(temp>>16);
                TX1_Buffer[2] = (u8)(temp>>8);
                TX1_Buffer[3] = (u8)(temp);
                delay_ms(100);
       
                while(TX1_Buffer[i] != 'x')
                {
                        SBUF = TX1_Buffer[i];        //发一个字节
                        while(!ti);
                                TI=0;
                        i++;
                       
                }
        }
               
}


回帖(6)

wq

2016-12-8 10:58:34
求大神告知~                  
举报

wq

2016-12-8 14:21:45
问题得到解决,是因为2543芯片的data_in脚虚焊,导致芯片工作异常,硬件调试全是坑,没示波器不行
举报

王栋春

2016-12-8 20:39:40
引用: 小可乐cc 发表于 2016-12-8 14:21
问题得到解决,是因为2543芯片的data_in脚虚焊,导致芯片工作异常,硬件调试全是坑,没示波器不行

最后一句话是真理  没有示波器在调试一些电路时就是睁眼瞎呀
举报

wq

2016-12-20 11:26:19
引用: 王栋春 发表于 2016-12-8 20:39
最后一句话是真理  没有示波器在调试一些电路时就是睁眼瞎呀

没有示波器真的没办法调试。我遇到的问题是 在线路一端可以收到信号。传到另一端就没信号,但是用万用表测,线路是通的。这种问题没示波器一万年也弄不出来,因为硬件检测是通的。
举报

王栋春

2016-12-20 20:03:24
引用: 小可乐cc 发表于 2016-12-20 11:26
没有示波器真的没办法调试。我遇到的问题是 在线路一端可以收到信号。传到另一端就没信号,但是用万用表测,线路是通的。这种问题没示波器一万年也弄不出来,因为硬件检测是通的。

说的太对了  我深有体会 不知坛友可有
举报

执剑守心

2017-4-15 14:52:58
学习看看,,,,,,,
举报

更多回帖

发帖
×
20
完善资料,
赚取积分