本帖最后由 29447945 于 2016-1-20 23:02 编辑
增加触发后漂亮波形
简易示波器功能描述(参考安富莱示波器例程):
1.测量直流信号、交流信号的电压幅度;
2.测量交流信号的周期,并计算频率;
3.显示交流信号波形;
4.波形的放大和缩小;
5.···········
暂时就先实现以上几个简单的基本功能,STM32芯片是3.3V供电,AD采样也只有0-3.3V,前端没有做硬件电路,所以这些测量暂时都是0-3.3V;
目前实现功能:增加触发后波形显示
首先看一下效果:
1.首先证明这是实时测量:
2.不加触发显示效果:
3.增加触发显示效果(灯闪程序在运行):
大致实现过程:
a.首先定义三个变量,一个是否触发标志位,一个触发值,一个触发后数据位置
uint8_t g_usTrigFlag = 1;
uint16_t g_usTrigValue = 1024;
uint16_t g_usTrigPosit = 0;
b.在DMA中断处理中复制数据时判断触发位置:
因为采集的1024*6个数据中肯定有很多点满足触发条件,所以我们查找触发位置时只在前1024*4个数据中查找(这里其实可以在把位置设置在前一点);
for(i = 0; i < 1024*5; i++)
{
if((uhADCxConvertedValue[i+512] > g_usTrigValue) && (uhADCxConvertedValue[i+513] < g_usTrigValue)&&(g_usTrigFlag == 1)&&(i < 1024*4))
{
g_usTrigPosit = i;
}
y3 =400 - (80*3.3*uhADCxConvertedValue[i+512]/4095);
}
数据我们还是要复制1024*5个数据(i+512是因为采集的数据中前面512个数据舍弃,其实可以不用);
c.显示时根据是否触发标志位判断复制显示数据的起始位置显示波形。
附上程序工程,下载后打开直接可用