软件注册站
热情软件屋

 
单片机与PC通信误码
编号: QA000230    
建立日期: 1998年12月20日 最后修改日期: 2002年2月21日
所属类别: C/C++ - 网络与通信
C/C++ - DDK与硬件设备
   
    在单片机与PC及通信时,低速率时(2400bps)很正常,提高速率则遇到以下问题:PC机向单片机发送数据没有问题, 但是单片机向PC机发送时产生误码, 速率越高, 误码越多, 加大PC机串口缓冲区并且加上校验都不行, 提高接收线程优先级也不行, 望各位高手指点。(cuidongwei)
   
    PC机的波特率是将1.8432MHz的时钟输入频率采用分频的办法来得到要求的波特率,分频所用的除数是由CPU分两次写入除数锁存器的高位和低位,除数=1843200/(波特率X16)。单片机(以8031为例,串口工作方式3)波特率的设置由定时器1置方式2自动重新装入,波特率=2^SMOD×时钟振荡频率/(12×(2^N-TH1))/32。由于单片机晶振频率不是一些常用波特率的整数倍,分频后有误差,如采用特殊晶振如11.059MHz,则可降低误差,提高通信速率。
    
    附:波特率误差
    
波特率PC除数值8031TH1误差
110 04 17720.00%
60000 C0E60.16%
120000 60F30.16%
240000 30F96.09%
360000 20FC8.51%
480000 18FD8.51%

    
    lcl的意见:
    正常情况下,9600BPS通讯的误码应该是可以容忍的,你说的情况有可能是使用232通讯,距离过大或干扰比较严重,此外你的PC软件也有关系,你应该确认你的程序1毫秒能扫描一次串口。
    
    相关书籍:
    《串行端口大全》
    《Delphi 串口通信编程》

    

此问题由harpoon回答。

附加关键字:编程, 源程序, programming, source code, C/C++, MFC, C++ Builder, Borland C++, Turbo C, C, BCB, 网络与通信, network, communicate, com, com1, com2, DDK与硬件设备, hardware, ddk, vtoolsd, driver studio, winrt

   
 
把这个问题推荐给朋友
   
 
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio