关于串口数据用示波器分析的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于串口数据用示波器分析的问题相关的知识,希望对你有一定的参考价值。

哪位高手能帮我分析分析这个波形。
这个波形时通过RS485串口发出来的一段数据,(因为这是一台设备发出的,所以相关协议什么的都不知道)我想知道这个波形的波特率时57600吗?数据为是8bit吗?校验为是多少?还有停止位之类的东西。详细解释一下,或分析一下协议。先谢谢了。

    RS485 通讯波特率可选择 300,600,1200,2400,4800,9600,19200,38400, 57600;  

9600为最常用的速率。

2.奇偶校验方式包括 None-不校验,Odd-奇校验,Even-偶校验三种方式;图上应该是“不校验”

3. 数据位数可以选择7位或者8位(目前通讯都必须使用8位); 

4. 停止位可选择1位或者2位; 

5. 仪表序号(地址)可以设置为1~255,使用老通讯协议(兼容F77)时为1~99;这个与PC端上位机软件对应就可以了,自行设置。

默认设置 :

1. 通讯协议为2(=新485协议) 2. 仪表序号设为001 

3. 波特率为6,奇偶校验为n,数据位数为8,停止位为1(除非用户指明,否则不要

修改)  

通讯协议说明 :

1. 老协议:发送序号方式; 〔读数发送:B1 B0〕 

2. 新协议:7E…7E方式; 〔读数发送:7E 01 01 01 01 0100 21 00 0000 73E8 7E〕 3. MODBUS:目前支持RTU模式 〔读数发送:01 03 07 D6 00 06 25 44〕

参考技术A 是,从图上看你一位数据的时间宽度大概17us,所以波特率为1000000/17

Arduino中的串口通信!!Serial.print()是否带有打印的功能??

Arduino中的串口通信!!Serial.print()是不是带有打印的功能??如题。想用DataScope串口虚拟示波器显示Arduino中的数据。如果使用Serial.print()的话,用Arduino中的串口监视器确实可以看到数据,但是DataScope中并没有数据显示。所以Serial.print()函数是否真的只能用串口监视器读数??如果不是的话,想让虚拟示波器得到串口输出的数应该怎么写??

参考技术A #include
const int INTERVAL = 2;
const unsigned int EVERY = 1000; // 每一千次调用 ppp( )一次
double sum, sss; // 和, 平方和
unsigned long n = 0;
unsigned long m = 0;
void ppp( )
int average;
int stdErr;
average = sum / n;
stdErr = sqrt((sss - (sum/n*sum) ) / n );
Serial.print("average:");
Serial.print(average);
Serial.print(" ");
Serial.print("stdErr:");
Serial.print(stdErr);

int k;
unsigned int gg=0; // for check
void ggyy()
k = analogRead(A0);
++n;
sum += k; // 总和
sss += k*k; // 平方和
if(++gg == EVERY)
gg=0; // clear counter
ppp( );
m = millis();
Serial.print("#S|LOGTEST|[");
Serial.print("Time:");
Serial.println(m);


void setup()
Serial.begin(9600);
MsTimer2::set(INTERVAL,ggyy);
MsTimer2::start();

void loop()
delay(800000);
MsTimer2::stop(); delay(0); MsTimer2::start();

以上是关于关于串口数据用示波器分析的问题的主要内容,如果未能解决你的问题,请参考以下文章

基于瑞芯微RV1109 Linux串口驱动调试心得(给正点原子DS100示波器点赞!)

转载——串口通信数据位长度对传输数据的影响

小技巧 | 用示波器测量串口波特率

推荐一款我私藏已久的串口示波神器

推荐一款我私藏已久的串口示波神器

Arduino中的串口通信!!Serial.print()是否带有打印的功能??