willX 发表于 2015-3-10 18:30:53

FT232BL做的USB转TTL串口不能连续发0x00

        今天突然发现,前些年做的一款usb转TTL串口的转接板,不能连续大量发送0x00。
        测试环境是这样的,在单片机上调试好串口发送函数putch();单片机接收到任意一个数据,
单片机就开始往PC机发送99个0x00和一个标志计数,发100次,总共是9900个0x00,标志从1~99,这时候从串口sscom32却只能读到2800个左右的数据。
调试助手中看到的数据,可以发现丢了好多0x00,但是又不知道为什么丢。
        如果连续发送1~100这样的数,发送100次,却一个数也不丢。
        真心郁闷,恳请大神相助啊。
这个是我的函数:void main(void)
{
volatile unsigned int counter;
volatile unsigned int counter2;
volatile unsigned char temp;

sys_init();

while(1)
{
if(RI)
    {
       temp = getch();
       for(counter=0; counter<100; counter++)
          {
               for(counter2=0; counter2<99; counter2++)putch(0x00);
               putch(counter);
                }
       putch(temp);
        }
}

}

9509238 发表于 2015-3-10 20:08:51

确定不是你单片机的问题?

willX 发表于 2015-3-10 21:36:34

本帖最后由 willX 于 2015-3-10 22:10 编辑

9509238 发表于 2015-3-10 20:08
确定不是你单片机的问题?

波特率调整到15200bps(115200的十分之一速度),或者在每个putch()函数后增加nop(500)用来等待500个机器周期,发送数据就全部正常了。

另,这个是我在没有用单片机,直接将FT232发送、接收两个引脚短接时,看到的截图。

heyuncun 发表于 2015-3-10 23:42:36

这有可能是串口控件的问题,你换一个串口调试助手!

261854681 发表于 2015-3-11 08:35:04

确定没遇见过这种问题,可能是芯片问题

LinuxTux.China 发表于 2015-3-11 08:46:50

示波器跟踪收发线看看是否完全一致,明确是未发出去还是软件未收到。

modbus 发表于 2015-3-11 09:54:16

你至少要把putch函数贴出来吧

willX 发表于 2015-3-11 10:54:23

额(⊙o⊙)…问题找到了。多谢大家的关注。问题是这样的:我用的串口调试工具是sscom3.2,这个软件在使用串口控件的时候有BUG,接连续的0x00时,会出现漏接数据。如果使用STC-isp软件自带的“串口助手”就没有问题。哎,没想到是PC端软件的问题。再次感谢大家!

willX 发表于 2015-3-11 10:55:22

这次问题不是硬件故障,不是FT232的问题,是PC软件的毛病!
页: [1]
查看完整版本: FT232BL做的USB转TTL串口不能连续发0x00