RS232发数问题

000juli   2007-9-16 16:01 楼主
很奇怪,我发0x55,0x33,0xf0都是好的,但是在示波器上看0xaa 或者 0xa0 0x0a 就不对。是什么问题?我用的是MAX232转的。示波器上看少了一个1。

回复评论 (7)

是否没有发送完成就再写发送寄存器?
点赞  2007-9-16 16:42
能不能把整个过程,包括你操作的过程描述的清楚点
还有数据的收发
点赞  2007-9-16 18:12
0x55  01010101
0x33  00110011
0xf0  11110000

0xaa  10101010
0xa0  10100000
0x0a  00001010

单对照数据没有明显的相同点
最好给程序段看一下

点赞  2007-9-17 08:17
在示波器上从右往左数
点赞  2007-9-17 09:25
我曾经遇到过类似的情况,我是因为MAX232用的国产劣质的,失真太大.换块MAX3232,或者好点的MAX232试一下
点赞  2007-9-20 15:12
是否没有发送完成就再写发送寄存器?
--------------------------------------------------
这个不太可能,pc发送是用微软那个控件做的。另外就算是没发完再写发送寄存器,
应该也是可以的吧?UART一般都是双缓冲的。不会出现把移位寄存器的值冲掉吧?

能不能把整个过程,包括你操作的过程描述的清楚点
还有数据的收发
--------------------------------------------------
void Serial::senddata(UCHAR data){
  CByteArray byte;
  byte.SetSize(1);
  byte[0] = data;
  mycomm->SetOutput(COleVariant(byte));
}

在示波器上从右往左数
--------------------------------------------------
少个1从哪边数肯定都是少。另外从哪边数要看是MSB还是LSB了。
我用的是MSB 所以自然是从左到右

我曾经遇到过类似的情况,我是因为MAX232用的国产劣质的,失真太大.换块MAX3232,或者好点的MAX232试一下
---------------------------------------------------
这个可以尝试一下,谢谢
点赞  2007-9-27 11:51
一般来说,要避免用 示波器 来看这个波形,如果一定要看波形,该用逻辑分析仪。
示波器通常用来看很规则的周期信号的波形,用来看逻辑电路的波形是不合适的。

分析RS232的发送和接收,用一条交叉电缆在一台电脑上做就很方便
点赞  2007-9-27 13:10
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复