TI中文支持网
TI专业的中文技术问题搜集分享网站

F28335串口中断发送波特率115200,连续给SCITXBUF赋值会丢数据,要每发一个字节,延时100us再发下一个字节,请问这个是TI芯片有问题吗

一连串数据一起发,串口助手只能接收到第一个字节和最后一个字节,而延时发送时没有问题,怀疑串口发送中断有问题,采用查询方式发送出现同样问题,

现在每发一个字节需延迟100us,这样数据才能发出去。有没有解决方案。

采用过 串口查询发送,没有作用

采用过 降低波特率9600 没有作用还是会丢数据,不是只有头和尾中间有一些数据,还是会丢。

现在只能发一个延时100us发。有没有解决方案谢谢。

void TransmissonData(Uint16 ID,Uint32 LEN,Uint8 *DATA)

{
Uint32 temp;
//Uint8 DAT;
Uint32 i;
SciaRegs.SCITXBUF = 'A';
ScibRegs.SCITXBUF = 'A';
//ScibXmit('A');
DELAY_US(100);
SciaRegs.SCITXBUF = 'A';
ScibRegs.SCITXBUF = 'A';
//ScibXmit('A');
DELAY_US(100);
SciaRegs.SCITXBUF = 'B';
ScibRegs.SCITXBUF = 'B';
//ScibXmit('B');
DELAY_US(100);
SciaRegs.SCITXBUF = 'B';
ScibRegs.SCITXBUF = 'B';
//ScibXmit('B');
DELAY_US(100);
temp = LEN&0xff000000;
SciaRegs.SCITXBUF = temp>>24;
ScibRegs.SCITXBUF = temp>>24;
//DAT = temp>>24;
//ScibXmit(DAT);
DELAY_US(100);
temp = LEN&0x00ff0000;
SciaRegs.SCITXBUF = temp>>16;
ScibRegs.SCITXBUF = temp>>16;
//DAT = temp>>16;
//ScibXmit(DAT);
DELAY_US(100);
temp = LEN&0x0000ff00;
SciaRegs.SCITXBUF = temp>>8;
ScibRegs.SCITXBUF = temp>>8;
//DAT = temp>>8;
//ScibXmit(DAT);
DELAY_US(100);
temp = LEN&0x000000ff;
SciaRegs.SCITXBUF = temp;
ScibRegs.SCITXBUF = temp;
//DAT = temp;
//ScibXmit(DAT);
DELAY_US(100);
SciaRegs.SCITXBUF = ID;
ScibRegs.SCITXBUF = ID;
//ScibXmit(ID);
DELAY_US(100);
for(i=0;i<(LEN-1);i++)
{
SciaRegs.SCITXBUF = DATA[i];
ScibRegs.SCITXBUF = DATA[i];
//ScibXmit(DATA[i]);
DELAY_US(100);
}
SciaRegs.SCITXBUF = 'C';
ScibRegs.SCITXBUF = 'C';
//ScibXmit('C');
DELAY_US(100);
SciaRegs.SCITXBUF = 'C';
ScibRegs.SCITXBUF = 'C';
//ScibXmit('C');
DELAY_US(100);
SciaRegs.SCITXBUF = 'D';
ScibRegs.SCITXBUF = 'D';
//ScibXmit('D');
DELAY_US(100);
SciaRegs.SCITXBUF = 'D';
ScibRegs.SCITXBUF = 'D';
//ScibXmit('D');
DELAY_US(100);
}

囧:

不会的,F28335的SCI在勘误手册上没有这个问题。你这里没有初始化代码,建议你先测试发送一个字符,然后慢慢增加,先不要打开FIFO。

一连串数据一起发,串口助手只能接收到第一个字节和最后一个字节,而延时发送时没有问题,怀疑串口发送中断有问题,采用查询方式发送出现同样问题,

现在每发一个字节需延迟100us,这样数据才能发出去。有没有解决方案。

采用过 串口查询发送,没有作用

采用过 降低波特率9600 没有作用还是会丢数据,不是只有头和尾中间有一些数据,还是会丢。

现在只能发一个延时100us发。有没有解决方案谢谢。

void TransmissonData(Uint16 ID,Uint32 LEN,Uint8 *DATA)

{
Uint32 temp;
//Uint8 DAT;
Uint32 i;
SciaRegs.SCITXBUF = 'A';
ScibRegs.SCITXBUF = 'A';
//ScibXmit('A');
DELAY_US(100);
SciaRegs.SCITXBUF = 'A';
ScibRegs.SCITXBUF = 'A';
//ScibXmit('A');
DELAY_US(100);
SciaRegs.SCITXBUF = 'B';
ScibRegs.SCITXBUF = 'B';
//ScibXmit('B');
DELAY_US(100);
SciaRegs.SCITXBUF = 'B';
ScibRegs.SCITXBUF = 'B';
//ScibXmit('B');
DELAY_US(100);
temp = LEN&0xff000000;
SciaRegs.SCITXBUF = temp>>24;
ScibRegs.SCITXBUF = temp>>24;
//DAT = temp>>24;
//ScibXmit(DAT);
DELAY_US(100);
temp = LEN&0x00ff0000;
SciaRegs.SCITXBUF = temp>>16;
ScibRegs.SCITXBUF = temp>>16;
//DAT = temp>>16;
//ScibXmit(DAT);
DELAY_US(100);
temp = LEN&0x0000ff00;
SciaRegs.SCITXBUF = temp>>8;
ScibRegs.SCITXBUF = temp>>8;
//DAT = temp>>8;
//ScibXmit(DAT);
DELAY_US(100);
temp = LEN&0x000000ff;
SciaRegs.SCITXBUF = temp;
ScibRegs.SCITXBUF = temp;
//DAT = temp;
//ScibXmit(DAT);
DELAY_US(100);
SciaRegs.SCITXBUF = ID;
ScibRegs.SCITXBUF = ID;
//ScibXmit(ID);
DELAY_US(100);
for(i=0;i<(LEN-1);i++)
{
SciaRegs.SCITXBUF = DATA[i];
ScibRegs.SCITXBUF = DATA[i];
//ScibXmit(DATA[i]);
DELAY_US(100);
}
SciaRegs.SCITXBUF = 'C';
ScibRegs.SCITXBUF = 'C';
//ScibXmit('C');
DELAY_US(100);
SciaRegs.SCITXBUF = 'C';
ScibRegs.SCITXBUF = 'C';
//ScibXmit('C');
DELAY_US(100);
SciaRegs.SCITXBUF = 'D';
ScibRegs.SCITXBUF = 'D';
//ScibXmit('D');
DELAY_US(100);
SciaRegs.SCITXBUF = 'D';
ScibRegs.SCITXBUF = 'D';
//ScibXmit('D');
DELAY_US(100);
}

YAOTING XUE:

回复 囧:

你好,我也存在上述问题,当连续发送十七个数据的时候是正常的

但是连续发送18个数据的话会造成第二个数据丢失

一连串数据一起发,串口助手只能接收到第一个字节和最后一个字节,而延时发送时没有问题,怀疑串口发送中断有问题,采用查询方式发送出现同样问题,

现在每发一个字节需延迟100us,这样数据才能发出去。有没有解决方案。

采用过 串口查询发送,没有作用

采用过 降低波特率9600 没有作用还是会丢数据,不是只有头和尾中间有一些数据,还是会丢。

现在只能发一个延时100us发。有没有解决方案谢谢。

void TransmissonData(Uint16 ID,Uint32 LEN,Uint8 *DATA)

{
Uint32 temp;
//Uint8 DAT;
Uint32 i;
SciaRegs.SCITXBUF = 'A';
ScibRegs.SCITXBUF = 'A';
//ScibXmit('A');
DELAY_US(100);
SciaRegs.SCITXBUF = 'A';
ScibRegs.SCITXBUF = 'A';
//ScibXmit('A');
DELAY_US(100);
SciaRegs.SCITXBUF = 'B';
ScibRegs.SCITXBUF = 'B';
//ScibXmit('B');
DELAY_US(100);
SciaRegs.SCITXBUF = 'B';
ScibRegs.SCITXBUF = 'B';
//ScibXmit('B');
DELAY_US(100);
temp = LEN&0xff000000;
SciaRegs.SCITXBUF = temp>>24;
ScibRegs.SCITXBUF = temp>>24;
//DAT = temp>>24;
//ScibXmit(DAT);
DELAY_US(100);
temp = LEN&0x00ff0000;
SciaRegs.SCITXBUF = temp>>16;
ScibRegs.SCITXBUF = temp>>16;
//DAT = temp>>16;
//ScibXmit(DAT);
DELAY_US(100);
temp = LEN&0x0000ff00;
SciaRegs.SCITXBUF = temp>>8;
ScibRegs.SCITXBUF = temp>>8;
//DAT = temp>>8;
//ScibXmit(DAT);
DELAY_US(100);
temp = LEN&0x000000ff;
SciaRegs.SCITXBUF = temp;
ScibRegs.SCITXBUF = temp;
//DAT = temp;
//ScibXmit(DAT);
DELAY_US(100);
SciaRegs.SCITXBUF = ID;
ScibRegs.SCITXBUF = ID;
//ScibXmit(ID);
DELAY_US(100);
for(i=0;i<(LEN-1);i++)
{
SciaRegs.SCITXBUF = DATA[i];
ScibRegs.SCITXBUF = DATA[i];
//ScibXmit(DATA[i]);
DELAY_US(100);
}
SciaRegs.SCITXBUF = 'C';
ScibRegs.SCITXBUF = 'C';
//ScibXmit('C');
DELAY_US(100);
SciaRegs.SCITXBUF = 'C';
ScibRegs.SCITXBUF = 'C';
//ScibXmit('C');
DELAY_US(100);
SciaRegs.SCITXBUF = 'D';
ScibRegs.SCITXBUF = 'D';
//ScibXmit('D');
DELAY_US(100);
SciaRegs.SCITXBUF = 'D';
ScibRegs.SCITXBUF = 'D';
//ScibXmit('D');
DELAY_US(100);
}

user4661451:

1、我用中断做的,不会出现你这种情况;

2、使用100us 的延时->等待上一个Byte发送完成?

一连串数据一起发,串口助手只能接收到第一个字节和最后一个字节,而延时发送时没有问题,怀疑串口发送中断有问题,采用查询方式发送出现同样问题,

现在每发一个字节需延迟100us,这样数据才能发出去。有没有解决方案。

采用过 串口查询发送,没有作用

采用过 降低波特率9600 没有作用还是会丢数据,不是只有头和尾中间有一些数据,还是会丢。

现在只能发一个延时100us发。有没有解决方案谢谢。

void TransmissonData(Uint16 ID,Uint32 LEN,Uint8 *DATA)

{
Uint32 temp;
//Uint8 DAT;
Uint32 i;
SciaRegs.SCITXBUF = 'A';
ScibRegs.SCITXBUF = 'A';
//ScibXmit('A');
DELAY_US(100);
SciaRegs.SCITXBUF = 'A';
ScibRegs.SCITXBUF = 'A';
//ScibXmit('A');
DELAY_US(100);
SciaRegs.SCITXBUF = 'B';
ScibRegs.SCITXBUF = 'B';
//ScibXmit('B');
DELAY_US(100);
SciaRegs.SCITXBUF = 'B';
ScibRegs.SCITXBUF = 'B';
//ScibXmit('B');
DELAY_US(100);
temp = LEN&0xff000000;
SciaRegs.SCITXBUF = temp>>24;
ScibRegs.SCITXBUF = temp>>24;
//DAT = temp>>24;
//ScibXmit(DAT);
DELAY_US(100);
temp = LEN&0x00ff0000;
SciaRegs.SCITXBUF = temp>>16;
ScibRegs.SCITXBUF = temp>>16;
//DAT = temp>>16;
//ScibXmit(DAT);
DELAY_US(100);
temp = LEN&0x0000ff00;
SciaRegs.SCITXBUF = temp>>8;
ScibRegs.SCITXBUF = temp>>8;
//DAT = temp>>8;
//ScibXmit(DAT);
DELAY_US(100);
temp = LEN&0x000000ff;
SciaRegs.SCITXBUF = temp;
ScibRegs.SCITXBUF = temp;
//DAT = temp;
//ScibXmit(DAT);
DELAY_US(100);
SciaRegs.SCITXBUF = ID;
ScibRegs.SCITXBUF = ID;
//ScibXmit(ID);
DELAY_US(100);
for(i=0;i<(LEN-1);i++)
{
SciaRegs.SCITXBUF = DATA[i];
ScibRegs.SCITXBUF = DATA[i];
//ScibXmit(DATA[i]);
DELAY_US(100);
}
SciaRegs.SCITXBUF = 'C';
ScibRegs.SCITXBUF = 'C';
//ScibXmit('C');
DELAY_US(100);
SciaRegs.SCITXBUF = 'C';
ScibRegs.SCITXBUF = 'C';
//ScibXmit('C');
DELAY_US(100);
SciaRegs.SCITXBUF = 'D';
ScibRegs.SCITXBUF = 'D';
//ScibXmit('D');
DELAY_US(100);
SciaRegs.SCITXBUF = 'D';
ScibRegs.SCITXBUF = 'D';
//ScibXmit('D');
DELAY_US(100);
}

Jun Zhang10:

别人拼命的往你嘴里塞东西会不会噎死?

一连串数据一起发,串口助手只能接收到第一个字节和最后一个字节,而延时发送时没有问题,怀疑串口发送中断有问题,采用查询方式发送出现同样问题,

现在每发一个字节需延迟100us,这样数据才能发出去。有没有解决方案。

采用过 串口查询发送,没有作用

采用过 降低波特率9600 没有作用还是会丢数据,不是只有头和尾中间有一些数据,还是会丢。

现在只能发一个延时100us发。有没有解决方案谢谢。

void TransmissonData(Uint16 ID,Uint32 LEN,Uint8 *DATA)

{
Uint32 temp;
//Uint8 DAT;
Uint32 i;
SciaRegs.SCITXBUF = 'A';
ScibRegs.SCITXBUF = 'A';
//ScibXmit('A');
DELAY_US(100);
SciaRegs.SCITXBUF = 'A';
ScibRegs.SCITXBUF = 'A';
//ScibXmit('A');
DELAY_US(100);
SciaRegs.SCITXBUF = 'B';
ScibRegs.SCITXBUF = 'B';
//ScibXmit('B');
DELAY_US(100);
SciaRegs.SCITXBUF = 'B';
ScibRegs.SCITXBUF = 'B';
//ScibXmit('B');
DELAY_US(100);
temp = LEN&0xff000000;
SciaRegs.SCITXBUF = temp>>24;
ScibRegs.SCITXBUF = temp>>24;
//DAT = temp>>24;
//ScibXmit(DAT);
DELAY_US(100);
temp = LEN&0x00ff0000;
SciaRegs.SCITXBUF = temp>>16;
ScibRegs.SCITXBUF = temp>>16;
//DAT = temp>>16;
//ScibXmit(DAT);
DELAY_US(100);
temp = LEN&0x0000ff00;
SciaRegs.SCITXBUF = temp>>8;
ScibRegs.SCITXBUF = temp>>8;
//DAT = temp>>8;
//ScibXmit(DAT);
DELAY_US(100);
temp = LEN&0x000000ff;
SciaRegs.SCITXBUF = temp;
ScibRegs.SCITXBUF = temp;
//DAT = temp;
//ScibXmit(DAT);
DELAY_US(100);
SciaRegs.SCITXBUF = ID;
ScibRegs.SCITXBUF = ID;
//ScibXmit(ID);
DELAY_US(100);
for(i=0;i<(LEN-1);i++)
{
SciaRegs.SCITXBUF = DATA[i];
ScibRegs.SCITXBUF = DATA[i];
//ScibXmit(DATA[i]);
DELAY_US(100);
}
SciaRegs.SCITXBUF = 'C';
ScibRegs.SCITXBUF = 'C';
//ScibXmit('C');
DELAY_US(100);
SciaRegs.SCITXBUF = 'C';
ScibRegs.SCITXBUF = 'C';
//ScibXmit('C');
DELAY_US(100);
SciaRegs.SCITXBUF = 'D';
ScibRegs.SCITXBUF = 'D';
//ScibXmit('D');
DELAY_US(100);
SciaRegs.SCITXBUF = 'D';
ScibRegs.SCITXBUF = 'D';
//ScibXmit('D');
DELAY_US(100);
}

user5245182:

回复 YAOTING XUE:

我也有同样的问题,只能发送十七个数据,楼主怎么解决的这个问题?

一连串数据一起发,串口助手只能接收到第一个字节和最后一个字节,而延时发送时没有问题,怀疑串口发送中断有问题,采用查询方式发送出现同样问题,

现在每发一个字节需延迟100us,这样数据才能发出去。有没有解决方案。

采用过 串口查询发送,没有作用

采用过 降低波特率9600 没有作用还是会丢数据,不是只有头和尾中间有一些数据,还是会丢。

现在只能发一个延时100us发。有没有解决方案谢谢。

void TransmissonData(Uint16 ID,Uint32 LEN,Uint8 *DATA)

{
Uint32 temp;
//Uint8 DAT;
Uint32 i;
SciaRegs.SCITXBUF = 'A';
ScibRegs.SCITXBUF = 'A';
//ScibXmit('A');
DELAY_US(100);
SciaRegs.SCITXBUF = 'A';
ScibRegs.SCITXBUF = 'A';
//ScibXmit('A');
DELAY_US(100);
SciaRegs.SCITXBUF = 'B';
ScibRegs.SCITXBUF = 'B';
//ScibXmit('B');
DELAY_US(100);
SciaRegs.SCITXBUF = 'B';
ScibRegs.SCITXBUF = 'B';
//ScibXmit('B');
DELAY_US(100);
temp = LEN&0xff000000;
SciaRegs.SCITXBUF = temp>>24;
ScibRegs.SCITXBUF = temp>>24;
//DAT = temp>>24;
//ScibXmit(DAT);
DELAY_US(100);
temp = LEN&0x00ff0000;
SciaRegs.SCITXBUF = temp>>16;
ScibRegs.SCITXBUF = temp>>16;
//DAT = temp>>16;
//ScibXmit(DAT);
DELAY_US(100);
temp = LEN&0x0000ff00;
SciaRegs.SCITXBUF = temp>>8;
ScibRegs.SCITXBUF = temp>>8;
//DAT = temp>>8;
//ScibXmit(DAT);
DELAY_US(100);
temp = LEN&0x000000ff;
SciaRegs.SCITXBUF = temp;
ScibRegs.SCITXBUF = temp;
//DAT = temp;
//ScibXmit(DAT);
DELAY_US(100);
SciaRegs.SCITXBUF = ID;
ScibRegs.SCITXBUF = ID;
//ScibXmit(ID);
DELAY_US(100);
for(i=0;i<(LEN-1);i++)
{
SciaRegs.SCITXBUF = DATA[i];
ScibRegs.SCITXBUF = DATA[i];
//ScibXmit(DATA[i]);
DELAY_US(100);
}
SciaRegs.SCITXBUF = 'C';
ScibRegs.SCITXBUF = 'C';
//ScibXmit('C');
DELAY_US(100);
SciaRegs.SCITXBUF = 'C';
ScibRegs.SCITXBUF = 'C';
//ScibXmit('C');
DELAY_US(100);
SciaRegs.SCITXBUF = 'D';
ScibRegs.SCITXBUF = 'D';
//ScibXmit('D');
DELAY_US(100);
SciaRegs.SCITXBUF = 'D';
ScibRegs.SCITXBUF = 'D';
//ScibXmit('D');
DELAY_US(100);
}

YAOTING XUE:

回复 user5245182:

办法就是加一个20us的延时,就可以解决了,10us的延时会偶尔错误,没有延时绝对出错,但是出错原因还是没能弄明白

一连串数据一起发,串口助手只能接收到第一个字节和最后一个字节,而延时发送时没有问题,怀疑串口发送中断有问题,采用查询方式发送出现同样问题,

现在每发一个字节需延迟100us,这样数据才能发出去。有没有解决方案。

采用过 串口查询发送,没有作用

采用过 降低波特率9600 没有作用还是会丢数据,不是只有头和尾中间有一些数据,还是会丢。

现在只能发一个延时100us发。有没有解决方案谢谢。

void TransmissonData(Uint16 ID,Uint32 LEN,Uint8 *DATA)

{
Uint32 temp;
//Uint8 DAT;
Uint32 i;
SciaRegs.SCITXBUF = 'A';
ScibRegs.SCITXBUF = 'A';
//ScibXmit('A');
DELAY_US(100);
SciaRegs.SCITXBUF = 'A';
ScibRegs.SCITXBUF = 'A';
//ScibXmit('A');
DELAY_US(100);
SciaRegs.SCITXBUF = 'B';
ScibRegs.SCITXBUF = 'B';
//ScibXmit('B');
DELAY_US(100);
SciaRegs.SCITXBUF = 'B';
ScibRegs.SCITXBUF = 'B';
//ScibXmit('B');
DELAY_US(100);
temp = LEN&0xff000000;
SciaRegs.SCITXBUF = temp>>24;
ScibRegs.SCITXBUF = temp>>24;
//DAT = temp>>24;
//ScibXmit(DAT);
DELAY_US(100);
temp = LEN&0x00ff0000;
SciaRegs.SCITXBUF = temp>>16;
ScibRegs.SCITXBUF = temp>>16;
//DAT = temp>>16;
//ScibXmit(DAT);
DELAY_US(100);
temp = LEN&0x0000ff00;
SciaRegs.SCITXBUF = temp>>8;
ScibRegs.SCITXBUF = temp>>8;
//DAT = temp>>8;
//ScibXmit(DAT);
DELAY_US(100);
temp = LEN&0x000000ff;
SciaRegs.SCITXBUF = temp;
ScibRegs.SCITXBUF = temp;
//DAT = temp;
//ScibXmit(DAT);
DELAY_US(100);
SciaRegs.SCITXBUF = ID;
ScibRegs.SCITXBUF = ID;
//ScibXmit(ID);
DELAY_US(100);
for(i=0;i<(LEN-1);i++)
{
SciaRegs.SCITXBUF = DATA[i];
ScibRegs.SCITXBUF = DATA[i];
//ScibXmit(DATA[i]);
DELAY_US(100);
}
SciaRegs.SCITXBUF = 'C';
ScibRegs.SCITXBUF = 'C';
//ScibXmit('C');
DELAY_US(100);
SciaRegs.SCITXBUF = 'C';
ScibRegs.SCITXBUF = 'C';
//ScibXmit('C');
DELAY_US(100);
SciaRegs.SCITXBUF = 'D';
ScibRegs.SCITXBUF = 'D';
//ScibXmit('D');
DELAY_US(100);
SciaRegs.SCITXBUF = 'D';
ScibRegs.SCITXBUF = 'D';
//ScibXmit('D');
DELAY_US(100);
}

user5346396:加一句while(ScibRegs.SCICTL2.bit.TXRDY != 1) // 发送缓冲器寄存器准备好标志位.有此句,可以连续发送数据

一连串数据一起发,串口助手只能接收到第一个字节和最后一个字节,而延时发送时没有问题,怀疑串口发送中断有问题,采用查询方式发送出现同样问题,

现在每发一个字节需延迟100us,这样数据才能发出去。有没有解决方案。

采用过 串口查询发送,没有作用

采用过 降低波特率9600 没有作用还是会丢数据,不是只有头和尾中间有一些数据,还是会丢。

现在只能发一个延时100us发。有没有解决方案谢谢。

void TransmissonData(Uint16 ID,Uint32 LEN,Uint8 *DATA)

{
Uint32 temp;
//Uint8 DAT;
Uint32 i;
SciaRegs.SCITXBUF = 'A';
ScibRegs.SCITXBUF = 'A';
//ScibXmit('A');
DELAY_US(100);
SciaRegs.SCITXBUF = 'A';
ScibRegs.SCITXBUF = 'A';
//ScibXmit('A');
DELAY_US(100);
SciaRegs.SCITXBUF = 'B';
ScibRegs.SCITXBUF = 'B';
//ScibXmit('B');
DELAY_US(100);
SciaRegs.SCITXBUF = 'B';
ScibRegs.SCITXBUF = 'B';
//ScibXmit('B');
DELAY_US(100);
temp = LEN&0xff000000;
SciaRegs.SCITXBUF = temp>>24;
ScibRegs.SCITXBUF = temp>>24;
//DAT = temp>>24;
//ScibXmit(DAT);
DELAY_US(100);
temp = LEN&0x00ff0000;
SciaRegs.SCITXBUF = temp>>16;
ScibRegs.SCITXBUF = temp>>16;
//DAT = temp>>16;
//ScibXmit(DAT);
DELAY_US(100);
temp = LEN&0x0000ff00;
SciaRegs.SCITXBUF = temp>>8;
ScibRegs.SCITXBUF = temp>>8;
//DAT = temp>>8;
//ScibXmit(DAT);
DELAY_US(100);
temp = LEN&0x000000ff;
SciaRegs.SCITXBUF = temp;
ScibRegs.SCITXBUF = temp;
//DAT = temp;
//ScibXmit(DAT);
DELAY_US(100);
SciaRegs.SCITXBUF = ID;
ScibRegs.SCITXBUF = ID;
//ScibXmit(ID);
DELAY_US(100);
for(i=0;i<(LEN-1);i++)
{
SciaRegs.SCITXBUF = DATA[i];
ScibRegs.SCITXBUF = DATA[i];
//ScibXmit(DATA[i]);
DELAY_US(100);
}
SciaRegs.SCITXBUF = 'C';
ScibRegs.SCITXBUF = 'C';
//ScibXmit('C');
DELAY_US(100);
SciaRegs.SCITXBUF = 'C';
ScibRegs.SCITXBUF = 'C';
//ScibXmit('C');
DELAY_US(100);
SciaRegs.SCITXBUF = 'D';
ScibRegs.SCITXBUF = 'D';
//ScibXmit('D');
DELAY_US(100);
SciaRegs.SCITXBUF = 'D';
ScibRegs.SCITXBUF = 'D';
//ScibXmit('D');
DELAY_US(100);
}

Xiao Dong:串口速度很慢,往SCITXBUF里面写数据的时候,要判断数据是否已经发送完成准备接收数据,否则就会丢数据。

赞(0)
未经允许不得转载:TI中文支持网 » F28335串口中断发送波特率115200,连续给SCITXBUF赋值会丢数据,要每发一个字节,延时100us再发下一个字节,请问这个是TI芯片有问题吗
分享到: 更多 (0)