This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TLC2543

专家您好,在这里向您咨询一些问题。以下是我的驱动2543的51单片机程序,分开运行采集数据的准确性和稳定性都很好,但是数据经由CAN总线发送,同时处理器也在接收数据时采集的数据就大范围摆动,经查初步确定是SJA1000的接收中断导致的,但无法解决,希望专家给予帮助,谢谢。

sbit EOC=P1^0;

sbit CLK=P1^1;

sbit INPUT=P1^2;

sbit OUT=P1^3;

sbit CS=P1^4;

unsigned char AD2543(uchar in_data,uchar j)//01 8b 00或10 12b 11 16b

{

uchar i;

uchar out_data=0;

while(!EOC);

OUT=1;

CS=0;

CLK=0;

for(i=0;i<j;i++)

{

delay(10);

OUT=1;

out_data=out_data<<1;

out_data=out_data|OUT;

in_data=in_data<<1;

INPUT=CY;

OUT=1;

CLK=1;

delay(10);

CLK=0;

}

CS=1;

return out_data;

}

  • 你好!

    可不可能你把ADC operation 中断的优先级设置高于 CAN的中断?你检查一下:

    1) 是否CAN中断的时间很长,你读的数是前后两次的数据?

    2) 另外,你检查一下是否CAN的数据地是否影响模拟信号?