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);
}
}
}
确定不是你单片机的问题? 本帖最后由 willX 于 2015-3-10 22:10 编辑
9509238 发表于 2015-3-10 20:08
确定不是你单片机的问题?
波特率调整到15200bps(115200的十分之一速度),或者在每个putch()函数后增加nop(500)用来等待500个机器周期,发送数据就全部正常了。
另,这个是我在没有用单片机,直接将FT232发送、接收两个引脚短接时,看到的截图。
这有可能是串口控件的问题,你换一个串口调试助手! 确定没遇见过这种问题,可能是芯片问题 示波器跟踪收发线看看是否完全一致,明确是未发出去还是软件未收到。 你至少要把putch函数贴出来吧 额(⊙o⊙)…问题找到了。多谢大家的关注。问题是这样的:我用的串口调试工具是sscom3.2,这个软件在使用串口控件的时候有BUG,接连续的0x00时,会出现漏接数据。如果使用STC-isp软件自带的“串口助手”就没有问题。哎,没想到是PC端软件的问题。再次感谢大家! 这次问题不是硬件故障,不是FT232的问题,是PC软件的毛病!
页:
[1]