硬汉嵌入式论坛

 找回密码
 立即注册
查看: 7369|回复: 4
收起左侧

[有问必答] 求助示波器DispCh1Wave中两个问题

[复制链接]

3

主题

7

回帖

3

积分

新手上路

积分
3
发表于 2012-9-7 21:33:25 | 显示全部楼层 |阅读模式
在armfly原创示波器例程中的DispCh1Wave函数里,有两点不太明白。希望大家帮忙解答一下哦。
1、关于 iTemp = g_DSO.Ch1VOffset + (int16_t)((1872 - g_DSO.Ch1Buf[i + 1]) * 10) / g_DSO.Ch1Attenuation;这里面有注释说1872是0v输入时对应的量化的数字量,我查看了一下板子的原理图,示波器通道的前端调理电路将-2.5V~+2.5V电压抬高并线性压缩到了0~2.5V,然后又放大到3V(2.5V×5.7KΩ÷4.7KΩ),此时0V输入信号映射为1.516V,其和ADC参考电压Vref+的比值转化为数字量为1.516÷3.3×4096=1881,这个貌似接近1872。不知道这样思考是否正确。论坛里有一篇帖子http://armfly.5d6d.net/viewthrea ... ble&tid=117,其中一个同学的回答和作者: armfly的回复。
另外,想问一下为什么前端调理电路不将-2.5V~+2.5V调整到0~3.3V这样可以充分利用ADC的量程,板子上的电路在输入幅值2.6V、2.7V的正弦波时就会出现波形正半周显示正常,负半周峰值截止现象。
2、还有一点不清楚,第(i+10)个横坐标处的幅值py,为什么等于g_DSO.Ch1Buf[i + 1]这个通道1里的量化数据的i+1处的值,而不是i处的值呢?
是不是有这样的意思:在显示屏上看来,显示区域左边的垂直边框上的某点就代替了g_DSO.Ch1Buf的值呢?
求助,谢谢!

3、另补充 问一下InitDsoParam里面g_DSO.Ch1Attenuation = 23;    /* 设置缺省衰减系数 */,这里为什么设置为23呢?
而紧接着下面又有:g_DSO.Ch1AttId = 2;     g_DSO.Ch1Attenuation = g_AttTable[g_DSO.Ch1AttId][0];     g_DSO.Ch1VScale =  g_AttTable[g_DSO.Ch1AttId][1];
这不是又将g_DSO.Ch1Attenuation设置为280了吗?
回复

使用道具 举报

747

主题

1049

回帖

3295

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3295
发表于 2012-9-9 21:02:06 | 显示全部楼层
1. 你的分析是对的。   为何不直接放大到3.3V而是3V, 是为了保证输入2.5V的指标绝对不会出现削顶。如果放大到3.3V,那么硬件电路的差异可能导致2.5V信号出现轻微削顶

2. 还没明白你的问题

3.  = 23 那句话是多余的,你暂时不理吧。
回复

使用道具 举报

3

主题

7

回帖

3

积分

新手上路

积分
3
 楼主| 发表于 2012-9-10 09:30:21 | 显示全部楼层

回 armfly 的帖子

armfly:1. 你的分析是对的。   为何不直接放大到3.3V而是3V, 是为了保证输入2.5V的指标绝对不会出现削顶。如果放大到3.3V,那么硬件电路的差异可能导致2.5V信号出现轻微削顶

2. 还没明白你的问题

3.  = 23 那句话是多余的,你暂时不理吧。 (2012-09-09 21:02) 
嗯,非常感谢![s:143][s:143]
第2个问题我是想问在下面这段代码里:
for (i = 0; i < 300; i++)
    {
        px = 10 + i;
        iTemp = g_DSO.Ch1VOffset + (int16_t)((1872 - g_DSO.Ch1Buf[i + 1]) * 10) / g_DSO.Ch1Attenuation;

        if (iTemp > 220)
        {
            iTemp = 220;
        }
        else if (iTemp < 20)
        {
            iTemp = 20;
        }
        py = iTemp;
    }

计算iTemp公式中,i=0的时候,为什么用的是g_DSO.Ch1Buf中i+1=1的值呢?
回复

使用道具 举报

747

主题

1049

回帖

3295

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3295
发表于 2012-9-10 10:22:09 | 显示全部楼层
这个我也记不清楚为何是 i +1, 也许是个BUG.
我也认为应该用 [I] 。  [i + 1]确实是从第2个点开始,抛弃了第1个点,不太合理。
回复

使用道具 举报

3

主题

7

回帖

3

积分

新手上路

积分
3
 楼主| 发表于 2012-9-10 17:27:06 | 显示全部楼层

回 armfly 的帖子

armfly:这个我也记不清楚为何是 i +1, 也许是个BUG.
我也认为应该用  。  确实是从第2个点开始,抛弃了第1个点,不太合理。
 (2012-09-10 10:22) 
嗯。谢谢了。[s:143]
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-10 05:01 , Processed in 0.185567 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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