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.
工具/软件:Code Composer Studio
你(们)好 我正在运行 TMS320F28335。
现在、我尝试通过 SCI FIFO 通信将28335连接到 PC。
以上是我的系统配置。
在 MAX3232和 RS232到 USB 器件之间绞合 RX 和 TX。
我使用 SCI-B
实际上、几个月前、我成功地通过 SCI FIFO 和"蓝牙"(无线)将28335连接到 PC。
现在、我尝试通过线缆将28335连接到 PC。
由于数据丢失问题、但我尝试使用上述配置调试相同的代码、因此无法正常工作。
请帮帮我。
谢谢你。
下面是我的 SCI 代码。(ASCII 转换)
--------------------------------------------------------------------
ScibRegs.SCICCR.all =0x0007; // 1停止位, 无环回
//无奇偶校验,8个字符位,
//异步模式,空闲线协议
ScibRegs.SCICTL1.all =0x0003; //启用 TX、RX、内部 SCICLK、
//禁用 RX ERR、睡眠、TXWAKE
ScibRegs.SCICTL2.bit.TXINTENA=1;
ScibRegs.SCICTL2.bit.RXBKINTENA=1;
ScibRegs.SCIHBAUD = 0x0000;
ScibRegs.SCILBAUD = 0x0027;
ScibRegs.SCICTL2.bit.TXRDY=0;
ScibRegs.SCIFFTX.All=0xC020;
ScibRegs.SCIFFRX.All=0x0021;
ScibRegs.SCIFFCT.All=0x00;
ScibRegs.SCICTL1.all =0x0023; //从复位中撤回 SCI
ScibRegs.SCIFFTX.bit.TXFIFOXRESET=1;
ScibRegs.SCIFFRX.bit.RXFIFORESET=1;
소수점 6째 자리 μ s
void SendDataCal (double data1、double data2、double data3、double data4、double data5、 double data6、double data7、double data8、double data9、double data10、 double data11、double data12、double data13、double data14、double data15、 双数据16)
{ // PC와 통신용으로 ASCII 코드로 변환하는 함수 소수점 2번째 자리 수까지 가능(미사용)// 100의 자리,
静态无符号 char first_shot = 1;
if (data1<0)
{
Sdata[0]='-';
Data1*=-1;
}
否则 Sdata[0]=((int) data1%100)/10+48;
sdata[1]=((int) data1%10)/1+48;
Sdata[2]='.';
sdata[3]=(uint32)(data1*10)%10+48;
sdata[4]=(uint32)(data1*100)%10+48;
Sdata[5]=(uint32)(data1*1000)%10+48;
sdata[6]=(uint32)(data1*10000)%10+48;
sdata[7]=(uint32)(data1*100000)%10+48;
Sdata[8]=(uint32)(data1*1000000)%10+48;
Sdata[9]=',';
if (data2<0)
{
Sdata[10]='-';
Data2*=-1;
}
else Sdata[10]=((int)data2%100)/10+48;
sdata[11]=((int) data2%10)/1+48;
Sdata[12]='.';
sdata[13]=(uint32)(data2*10)%10+48;
sdata[14]=(uint32)(data2*100)%10+48;
sdata[15]=(uint32)(data2*1000)%10+48;
sdata[16]=(uint32)(data2*10000)%10+48;
sdata[17]=(uint32)(data2*100000)%10+48;
Sdata[18]=(uint32)(data2*1000000)%10+48;
Sdata[19]=',';
if (data3<0)
{
Sdata[20]='-';
Data3*=-1;
}
else Sdata[20]=((int)data3%100)/10+48;
Sdata[21]=((int) data3%10)/1+48;
Sdata[22]='.';
sdata[23]=(uint32)(data3*10)%10+48;
sdata[24]=(uint32)(data3*100)%10+48;
Sdata[25]=(uint32)(data3*1000)%10+48;
sdata[26]=(uint32)(data3*10000)%10+48;
sdata[27]=(uint32)(data3*100000)%10+48;
sdata[28]=(uint32)(data3*1000000)%10+48;
Sdata[29]=',';
if (data4<0)
{
Sdata[30]='-';
Data4*=1;
}
else Sdata[30]=((int) data4%100)/10+48;
sdata[31]=((int) data4%10)/1+48;
Sdata[32]='.';
sdata[33]=(uint32)(data4*10)%10+48;
Sdata[34]=(uint32)(data4*100)%10+48;
sdata[35]=(uint32)(data4*1000)%10+48;
sdata[36]=(uint32)(data4*10000)%10+48;
sdata[37]=(uint32)(data4*100000)%10+48;
Sdata[38]=(uint32)(data4*1000000)%10+48;
Sdata[39]=',';
if (data5<0)
{
Sdata[40]='-';
Data5*=-1;
}
else Sdata[40]=((int) data5%100)/10+48;
Sdata[41]=((int) data5%10)/1+48;
Sdata[42]='.';
sdata[43]=(uint32)(data5*10)%10+48;
sdata[44]=(uint32)(data5*100)%10+48;
sdata[45]=(uint32)(data5*1000)%10+48;
sdata[46]=(uint32)(data5*10000)%10+48;
sdata[47]=(uint32)(data5*100000)%10+48;
sdata[48]=(uint32)(data5*1000000)%10+48;
Sdata[49]=',';
if (data6<0)
{
Sdata[50]='-';
data6*=1;
}
else Sdata[50]=((int) data6%100)/10+48;
Sdata[51]=((int) data6%10)/1+48;
Sdata[52]='.';
sdata[53]=(uint32)(data6*10)%10+48;
sdata[54]=(uint32)(data6*100)%10+48;
sdata[55]=(uint32)(data6*1000)%10+48;
sdata[56]=(uint32)(data6*10000)%10+48;
sdata[57]=(uint32)(data6*100000)%10+48;
sdata[58]=(uint32)(data6*1000000)%10+48;
Sdata[59]=',';
if (data7<0)
{
Sdata[60]='-';
data7*=-1;
}
else Sdata[60]=((int) data7%100)/10+48;
sdata[61]=((int) data7%10)/1+48;
Sdata[62]='.';
sdata[63]=(uint32)(data7*10)%10+48;
sdata[64]=(uint32)(data7*100)%10+48;
sdata[65]=(uint32)(data7*1000)%10+48;
sdata[66]=(uint32)(data7*10000)%10+48;
sdata[67]=(uint32)(data7*100000)%10+48;
sdata[68]=(uint32)(data7*1000000)%10+48;
Sdata[69]=',';
if (data8<0)
{
Sdata[70]='-';
data8*=1;
}
else Sdata[70]=((int) data8%100)/10+48;
Sdata[71]=((int) data8%10)/1+48;
Sdata[72]='.';
sdata[73]=(uint32)(data8*10)%10+48;
sdata[74]=(uint32)(data8*100)%10+48;
sdata[75]=(uint32)(data8*1000)%10+48;
sdata[76]=(uint32)(data8*10000)%10+48;
sdata[77]=(uint32)(data8*100000)%10+48;
sdata[78]=(uint32)(data8*1000000)%10+48;
Sdata[79]=',';
if (data9<0)
{
Sdata[80]='-';
data9*=1;
}
else Sdata[80]=((int) data9%100)/10+48;
sdata[81]=((int) data9%10)/1+48;
Sdata[82]='.';
sdata[83]=(uint32)(data9*10)%10+48;
sdata[84]=(uint32)(data9*100)%10+48;
Sdata[85]=(uint32)(data9*1000)%10+48;
sdata[86]=(uint32)(data9*10000)%10+48;
sdata[87]=(uint32)(data9*100000)%10+48;
sdata[88]=(uint32)(data9*1000000)%10+48;
Sdata[89]=',';
if (data10<0)
{
Sdata[90]='-';
data10*=-1;
}
else Sdata[90]=((int) data10%100)/10+48;
Sdata[91]=((int) data10%10)/1+48;
Sdata[92]='.';
sdata[93]=(uint32)(data10*10)%10+48;
sdata[94]=(uint32)(data10*100)%10+48;
sdata[95]=(uint32)(data10*1000)%10+48;
sdata[96]=(uint32)(data10*10000)%10+48;
sdata[97]=(uint32)(data10*100000)%10+48;
sdata[98]=(uint32)(data10*1000000)%10+48;
Sdata[99]=',';
if (data11<0)
{
Sdata[100]='-';
data11*=1;
}
else Sdata[100]=((int) data11%100)/10+48;
Sdata[101]=((int) data11%10)/1+48;
Sdata[102]='.';
Sdata[103]=(uint32)(data11*10)%10+48;
sdata[104]=(uint32)(data11*100)%10+48;
sdata[105]=(uint32)(data11*1000)%10+48;
sdata[106]=(uint32)(data11*10000)%10+48;
Sdata[107]=(uint32)(data11*100000)%10+48;
sdata[108]=(uint32)(data11*1000000)%10+48;
Sdata[109]=',';
if (data12<0)
{
Sdata[110]='-';
data12*=1;
}
else Sdata[110]=((int) data12%100)/10+48;
sdata[111]=((int) data12%10)/1+48;
Sdata[112]='.';
sdata[113]=(uint32)(data12*10)%10+48;
sdata[114]=(uint32)(data12*100)%10+48;
sdata[115]=(uint32)(data12*1000)%10+48;
sdata[116]=(uint32)(data12*10000)%10+48;
sdata[117]=(uint32)(data12*100000)%10+48;
sdata[118]=(uint32)(data12*1000000)%10+48;
Sdata[119]=',';
if (data13<0)
{
Sdata[120]='-';
data13*=1;
}
else Sdata[120]=((int) data13%100)/10+48;
Sdata[121]=((int) data13%10)/1+48;
Sdata[122]='.';
Sdata[123]=(uint32)(data13*10)%10+48;
sdata[124]=(uint32)(data13*100)%10+48;
sdata[125]=(uint32)(data13*1000)%10+48;
sdata[126]=(uint32)(data13*10000)%10+48;
sdata[127]=(uint32)(data13*100000)%10+48;
sdata[128]=(uint32)(data13*1000000)%10+48;
Sdata[129]=',';
if (data14<0)
{
Sdata[130]='-';
data14*=1;
}
else Sdata[130]=((int) data14%100)/10+48;
sdata[131]=((int)data14%10)/1+48;
Sdata[132]='.';
sdata[133]=(uint32)(data14*10)%10+48;
sdata[134]=(uint32)(data14*100)%10+48;
sdata[135]=(uint32)(data14*1000)%10+48;
sdata[136]=(uint32)(data14*10000)%10+48;
sdata[137]=(uint32)(data14*100000)%10+48;
sdata[138]=(uint32)(data14*1000000)%10+48;
Sdata[139]=',';
if (data15<0)
{
Sdata[140]='-';
data15*=1;
}
else Sdata[140]=((int) data15%100)/10+48;
Sdata[141]=((int) data15%10)/1+48;
Sdata[142]='.';
sdata[143]=(uint32)(data15*10)%10+48;
sdata[144]=(uint32)(data15*100)%10+48;
sdata[145]=(uint32)(data15*1000)%10+48;
sdata[146]=(uint32)(data15*10000)%10+48;
sdata[147]=(uint32)(data15*100000)%10+48;
sdata[148]=(uint32)(data15*1000000)%10+48;
Sdata[149]=',';
if (data16<0)
{
Sdata[150]='-';
data16*=1;
}
否则 、Sdata[150]=data16/1000+48;
sdata[151]=((int) data16%1000)/100+48;
Sdata[152]=((int) data16%100)/10+48;
Sdata[153]=((int)data16%10)/1+48;
Sdata[154]='.';
sdata[155]=(uint32)(data16*10)%10+48;
Sdata[156]=(uint32)(data16*100)%10+48;
Sdata[157]= 0x0D;
if (first_shot = 1){
ScibRegs.SCIFFTX.bit.TXFIFOXRESET=1;
first_shot = 0;
}
否则、ScibRegs.SCIFFTX.bit.TXFFINTCLR = 1;
}
_interrupt void scibTxFifoIsr (void)
{
静态无符号 char send_cnt = 0;
unsigned char i;
if (send_cnt = 0){
for (i=0;i<16;i++)
ScibRegs.SCITXBUF = Sdata[i];
send_cnt++;
ScibRegs.SCIFFTX.bit.TXFFINTCLR = 1; //清除 SCI 中断标志
}
否则、如果(send_cnt = 1){
for (i=16;i<32;i++)
ScibRegs.SCITXBUF = Sdata[i];
send_cnt++;
ScibRegs.SCIFFTX.bit.TXFFINTCLR = 1; //清除 SCI 中断标志
}
否则、如果(send_cnt = 2){
for (i=32;i<48;i++)
ScibRegs.SCITXBUF = Sdata[i];
send_cnt++;
ScibRegs.SCIFFTX.bit.TXFFINTCLR = 1; //清除 SCI 中断标志
}
否则、如果(send_cnt = 3){
for (i=48;i<64;i++)
ScibRegs.SCITXBUF = Sdata[i];
send_cnt++;
ScibRegs.SCIFFTX.bit.TXFFINTCLR = 1; //清除 SCI 中断标志
}
否则、如果(send_cnt = 4){
for (i=64;i<80;i++)
ScibRegs.SCITXBUF = Sdata[i];
send_cnt++;
ScibRegs.SCIFFTX.bit.TXFFINTCLR = 1; //清除 SCI 中断标志
}
否则、如果(send_cnt = 5){
(i=80;i<96;i++)
ScibRegs.SCITXBUF = Sdata[i];
send_cnt++;
ScibRegs.SCIFFTX.bit.TXFFINTCLR = 1; //清除 SCI 中断标志
}
否则、如果(send_cnt = 6){
for (i=96;i<112;i++)
ScibRegs.SCITXBUF = Sdata[i];
send_cnt++;
ScibRegs.SCIFFTX.bit.TXFFINTCLR = 1; //清除 SCI 中断标志
}
否则、如果(send_cnt = 7){
对于(i=112;i<128;i++)
ScibRegs.SCITXBUF = Sdata[i];
send_cnt++;
ScibRegs.SCIFFTX.bit.TXFFINTCLR = 1; //清除 SCI 中断标志
}
否则、如果(send_cnt = 8){
(i=128;i<144;i++)
ScibRegs.SCITXBUF = Sdata[i];
send_cnt++;
ScibRegs.SCIFFTX.bit.TXFFINTCLR = 1; //清除 SCI 中断标志
}
否则、如果(send_cnt = 9){
(i=144;i<158;i++)
ScibRegs.SCITXBUF = Sdata[i];
send_cnt = 0;
f_dume++;
ScibRegs.SCIFFTX.bit.TXFFINTCLR = 1; //清除 SCI 中断标志
}
PieCtrlRegs.PIEACX.ALL |= PIEACK_group9; //发出 PIE ACK
}
您好、Joon、
[引用 user="Joon Woo Lee"]由于数据丢失问题,但我尝试使用上述配置调试相同的代码,因此无法正常工作。
请告诉我您已经尝试了哪些调试步骤吗? 当您说"它不起作用"时、您是否意味着您无法在 PC 上检测到设备、您可以检测到设备但没有传输数据、或者您在 PC 端观察到的数据不正确?
下面是一些常规调试步骤。 当我获得更多信息后、我们可以完成更具体的调试。
1) 1)您是否看到设备管理器的"端口(COM 和 LPT)"下列出的设备? (假设您使用的是 Windows PC)。 如果是、您是否能够连接到器件?
2) 2)我建议探测每个连接处的 TX 和 RX 引脚(如果可能)、以查看您是否可以观察所需的数据。 在每个连接上测量波特率也很好。
3) 3)我不会使用您实施的代码、而是尝试使用我们的示例程序之一、仅用于调试目的。 如果它与示例程序配合使用、则您可以排除硬件问题、我们可以专注于您的代码。 C:\ti\c2000\C2000Ware_Version\device_support\F2833x\examples\sci_echoback
此致、
Marlyn