主题中讨论的其他部件:SN65HVD230,controlSUITE
工具/软件:Code Composer Studio
大家好,
我正在使用F2.8335万实验板套件的CAN模块。 基本上我使用ADC获取传感器数据并通过CAN传输这些数据。 我尝试在一个连续的永久循环中执行此操作。 我正在使用SN65HVD230 CAN收发器。 我还 使用串行通信将传感器数据显示到LabVIEW上。 因此,我的代码由串行,ADC和CAN组成。
但这里的问题是我无法通过CAN持续传输传感器数据。 数据仅传输一次。 之后,传感器输出的任何变化都不会反映在CAN变速箱上。 尽管我能够在LabVIEW上看到连续的实时数据。
我特此附上我的代码的一部分,用于连续传输。 请建议所需的更改。
对于(;;)
{
用于(i=0;i<AVG;i++)
{
while (AdcRegs.ADCST.bit.INT_SEQ1= 0){}//等待中断
AdcRegs.ADCST.Bit.INT_SEQ1_CLR = 1;
SampleTable[i]=((AdcRegs.ADCRESULT0>>4));
Val = SampleTable[i];
f = val * 7.3260.0732万e-4;
G = f * 33.8.98305084亿 ;
浮子n = g;
ftoa (n,res,4);
浮子m = val;
ftoa (m,res1,4);
浮点o = 24.528 ;
ftoa (o,res2,4);
MSG =分辨率;
scia_msg (msg);
//while (SciaRegs.SCIFFRX.bit.RXFFST !=1){}//等待XRDY =1为空状态
//获取字符
// ReceivedChar[50]= SciaRegs.SCIRXBUF.ALL;
ECanaMbboxes.MBOX25.MDL.ALL = g;
ECanaMbboxes.MBOX25.MDH.all = f;
ECanaShadow.CANTRS.ALL = 0;
ECanaShadow.CANTRS.bit.TRS25 = 1;//为正在测试的邮箱设置TRS
ECanaRegs.CANTRS.ALL = ECanaShade.CANTRS.ALL;
做
{
ECanaShade.Canta.All = ECanaRegs.Canta.all;
} While (ECanaShade.Canta.bit.TA25 ==0);//等待设置TA5位。
ECanaShadow.Canta.all = 0;
ECanaShade.Canta.bit.TA25 = 1;//清除TA5
ECanaRegs.Canta.all = ECanaShade.Canta.all;
// loopcount ++;
}
}
}
ps. ftoa是 串行通信所需的浮点到字符串转换函数。