OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 10335|回复: 8

求大神指点visual scope串口示波器怎么用?

[复制链接]

3

主题

6

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2013-3-17
在线时间
0 小时
发表于 2013-3-17 17:48:11 | 显示全部楼层 |阅读模式
        求大神指点怎么使用visual scope串口示波器,软件自带的协议看不懂,初学者,希望能详细的讲讲!如何利用协议实现STM32 的波形显示。
  
这是协议,求大神指点啊
Data send adapt CRC16 verification,The following is the function of CRC16,please refer
//-------------------------------------------------------------------------------------------
unsigned short CRC_CHECK(unsigned char *Buf, unsigned char CRC_CNT)
{
    unsigned short CRC_Temp;
    unsigned char i,j;
    CRC_Temp = 0xffff;

    for (i=0;i<CRC_CNT; i++){      
        CRC_Temp ^= Buf;
        for (j=0;j<8;j++) {
            if (CRC_Temp & 0x01)
                CRC_Temp = (CRC_Temp >>1 ) ^ 0xa001;
            else
                CRC_Temp = CRC_Temp >> 1;
        }
    }
    return(CRC_Temp);
}
//-------------------------------------------------------------------------------------------
The data from computer to MPU is like this:
Ch1_Addr_LL,Ch1_Addr_LH,
Ch1_Addr_HL,Ch1_Addr_HH,
Ch2_Addr_LL,Ch2_Addr_LH,
Ch2_Addr_HL,Ch2_Addr_HH,
Ch3_Addr_LL,Ch3_Addr_LH,
Ch3_Addr_HL,Ch3_Addr_HH,
Ch4_Addr_LL,Ch4_Addr_LH,
Ch4_Addr_HL,Ch4_Addr_HH,
CRC16_L,CRC16_H

//-------------------------------------------------------------------------------------------
The data from MPU to computer should be like this:
Ch1Data_L,Ch1Data_H,
Ch2Data_L,Ch2Data_H,
Ch3Data_L,Ch3Data_H,
Ch4Data_L,Ch4Data_H,
CRC16_L,CRC16_H


//-------------------------------------------------------------------------------------------
the following is MPU code,please refer.
//-------------------------------------------------------------------------------------------
#define RxCountMax 18
unsigned short RxBuf[RxCountMax];
unsigned short TxBuf[10];
unsigned short RxCnt;
unsigned short TxCnt;
unsigned short Rx50msCnt;
unsigned long pAddr1,pAddr2,pAddr3,pAddr4;

//Receive interrupt routine
void voRxIsr(void)        
{
        unsigned short i,CRC_RX,CRC_Tmp;
        RxBuf[RxCnt] = Rx.data;                                //acquire data
        RxCnt++;
        
        if(RxCnt == RxCountMax) {
                CRC_Tmp =  CRC_CHECK(RxBuf,16);          //CRC Calculation
                CRC_RX = ((unsigned short)RxBuf[RxCountMax-1]<<8) + RxBuf[RxCountMax-2];
                if(CRC_Tmp == CRC_RX){
                        pAddr1 = ((ULONG)(RxBuf[0x3])<<24)|((ULONG)(RxBuf[0x2])<<16)|((ULONG)(RxBuf[0x1])<<8)|RxBuf[0x0];
                        pAddr2 = ((ULONG)(RxBuf[0x7])<<24)|((ULONG)(RxBuf[0x6])<<16)|((ULONG)(RxBuf[0x5])<<8)|RxBuf[0x4];
                        pAddr3 = ((ULONG)(RxBuf[0xB])<<24)|((ULONG)(RxBuf[0xA])<<16)|((ULONG)(RxBuf[0x9])<<8)|RxBuf[0x8];
                        pAddr4 = ((ULONG)(RxBuf[0xF])<<24)|((ULONG)(RxBuf[0xE])<<16)|((ULONG)(RxBuf[0xD])<<8)|RxBuf[0xC];                
                }
                RxCnt = 0;  
        }
        Rx50msCnt = 0;
        //to add--Clear Receive Data Register Fll flag; //clear Receive Data Register Full flag
}
//-------------------------------------------------------------------------------------------
//Transfer interrupt routine
void voTxIsr(void)
{
     if(TxCnt <= 9){
                Tx.Register = TxBuf[TxCnt];
                //Clear Tx interrupt flag
                TxCnt++;
                if(TxCnt >= 10){
                        //send interrupt disable                
                }
     }
}
//-------------------------------------------------------------------------------------------
//Monitor routine Execute every T Period time
void voMonitor(void)
{
        unsigned short ChxData[4],CRC_Tmp,i;
        Rx50msCnt++;
        if(Rx50msCnt >=500) {
                RxCnt = 0;
                Rx50msCnt = 0;
        }
        
        ChxData[0].sw = *(unsigned short *)pAddr1;
        ChxData[1].sw = *(unsigned short *)pAddr2;
        ChxData[2].sw = *(unsigned short *)pAddr3;                
        ChxData[3].sw = *(unsigned short *)pAddr4;
        
        for(i=0;i<4;i++){                                
                TxBuf[2*i+0] = ChxData.sb.low;         // ch low byte
                TxBuf[2*i+1] = ChxData.sb.hi;          // ch hi byte
        }
        
        CRC_Tmp = CRC_CHECK(TxBuf,8);
        TxBuf[8] = CRC_Tmp&0xff;
        TxBuf[9] = CRC_Tmp>>8;
        //send first data        

        Tx.Register = TxBuf[0];                         //send begin
        //Enalbe TXD interrupt
        TxCnt = 1;
}
//-------------------------------------------------------------------------------------------
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-3-17 18:11:50 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2013-5-15
在线时间
0 小时
发表于 2013-5-15 05:02:08 | 显示全部楼层
回复【楼主位】从零开始:
---------------------------------
这是VisualScope 的技术交流群:321184302,
或许对你有帮助
回复 支持 反对

使用道具 举报

1

主题

10

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
374
金钱
374
注册时间
2017-1-15
在线时间
55 小时
发表于 2017-4-18 21:52:44 | 显示全部楼层

原子哥,他说的协议是这个软件的协议 69ce6645f82b860e82435a0782162585_948.jpg
我最近也在研究这个,希望有大神帮忙讲一下这个软件的协议,怎么实现串口数据上传显示成波形,非常感谢!
回复 支持 反对

使用道具 举报

2

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
217
金钱
217
注册时间
2017-3-20
在线时间
34 小时
发表于 2017-6-30 11:18:31 | 显示全部楼层
我没去想他具体功能是怎么实现的,一开始我就是奔着直接用起来的想法去做。下完软件后我就开始找怎么用的资料,我先是找到一份别人可以用的协议(协议基本一样,有的网站下的时候就有给),简单看一遍后直接添加到我的工程里面,直接就调用里面的输出函数,结果什么波形都没有出现。我开始在网上搜索原因,有的说是地址的原因全部改成0就可以 QQ截图20170630111205.png ,改完之后还是没有波形出现,后来又查到可能是校验方式,要选择CRC校验,我又把校验方式改了,然后就开始出现波形了 2.png ,从找到能用我花了一个上午时间,然后我再返回去看它的协议内容,对着结果,两边一起理解,会快就想懂了,所以我觉得没必要纠结它的协议是怎么回事,看懂了能用就行
回复 支持 反对

使用道具 举报

2

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
217
金钱
217
注册时间
2017-3-20
在线时间
34 小时
发表于 2017-6-30 11:21:55 | 显示全部楼层
https://pan.baidu.com/s/1qWonefq#list/path=%2F
这是别人开源的协议在deal文件夹下面
回复 支持 反对

使用道具 举报

2

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
217
金钱
217
注册时间
2017-3-20
在线时间
34 小时
发表于 2017-6-30 11:23:31 | 显示全部楼层
VisualScope_Output();直接调用这个函数就可以输出波形
回复 支持 反对

使用道具 举报

2

主题

12

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
217
金钱
217
注册时间
2017-3-20
在线时间
34 小时
发表于 2017-6-30 11:27:50 | 显示全部楼层
3.png
修改校验方式在这修改,最后再附上野火的一个使用说明吧

野火平衡组站立调试指南(初级篇).pdf

1.32 MB, 下载次数: 532

回复 支持 反对

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2016-8-13
在线时间
3 小时
发表于 2018-3-23 21:00:13 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-8 04:35

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表