PIC18F452 UART帧问题

PIC18F452 UART帧问题,pic,uart,Pic,Uart,各位 我用的是PIC18F452微控制器。我在UART上接收数据,通过附加额外的同步字将其帧化并传输,我在按顺序发送同步字时遇到问题。我想要的是发短信说。。。EA 09 C3包含数据。现在我有了用MikroC编写的代码: int j=0; SPBRG = 129; TXSTA = 0b00100110; RCSTA = 0b10010000; while(1) { if(j == 0) { TXREG = 0xEA; } else if(j == 1) {

各位

我用的是PIC18F452微控制器。我在UART上接收数据,通过附加额外的同步字将其帧化并传输,我在按顺序发送同步字时遇到问题。我想要的是发短信说。。。EA 09 C3包含数据。现在我有了用MikroC编写的代码:

int j=0;
SPBRG = 129;
TXSTA = 0b00100110;
RCSTA = 0b10010000;
while(1)
{
   if(j == 0)
   {
     TXREG = 0xEA;
   }
   else if(j == 1)
   {
     TXREG = 0x09;
   }
   else if(j == 2)
   {
     TXREG = 0xC3;
   }
   else
   {
    TXREG = RCREG;
   }
   while(!TRMT); // wait for whole data frame to be ready for transmission
  if(j == 100)
     j = 0; // reset j after 100 bytes
  else
     j++;
   }
现在这里发生的是,同步字被传输,但顺序不一致,有时也会发生字节复制。 我想要的是,j应该只在传输一个字节后递增,这里我认为j的递增与传输无关

满怀期待地感谢

问候,,
哈桑

uart传输的隐藏问题是:

_在发送的每个字节之间加一点延迟

请注意,这是一个波特率独立的秘密;)

例如50微秒

由于发送方和接收方是异步工作的,所以它们在接收时需要花费太多的精力来同步每个字节,而您一直在填充它们。。。他们只是停滞不前。有时删除字节,有时在不清除接收寄存器的情况下删除字节,以便复制字节

所以,如果速度很关键,首先给出一个发送延迟,比如每字节50毫秒或更多,然后如果它能工作,就把它缩小到10微秒。继续缩小它,直到它再次开始失速,最好将延迟设置为故障保护限制的两倍

我希望不要匆忙或渴望速度,否则使用另一个通信通道而不是usart