DLO-138是针对DSO138学习型示波器的开源代码,如果你希望对138软件进行修改(或者增加通道),那么基于这个工程应该是不错的。

步骤:

1 准备工作

下载开源代码DLO-138:

https://github.com/ardyesp/DLO-138

安装arduino1.8.5(高版本可能支持stm32有问题)

下载Arduino_STM32:

https://github.com/rogerclarkmelbourne/Arduino_STM32

准备一个DSO138的板子(淘宝有卖,建议买今越电子原厂的,支持下该公司)。

安装Arduino_STM32\drivers\win下面的驱动

2 配置:

Arduino_STM32放到目录:

C:\Users\yourname\Documents\Arduino\hardware

如果没有hardware目录就创建一个

启动Arduino,选择下面类别:

STM32 Boards / Generic STM32F103C; Variant: STM32F103C8

安装adafruit gfx lib:

 

安装Arduino SAM开发板(需要使用里面的编译环境)

配置正确后界面差不多这样:

 

3 更新bootloader :

Stm32里面的bootloader要更新为STM32duino bootloader才能通过arduino的应用下载。

 

下载:https://github.com/rogerclarkmelbourne/STM32duino-bootloader

我选用

STM32duino-bootloader\bootloader_only_binaries\dso138_boot20.bin,用st-link 通过st-link v2烧写进去,烧写成功后DSO138的usb口就变成usb串口被电脑认出而被arduino使用。

烧写boot界面如下:

 

烧写完成后Arduino 就可以用开发板虚拟出来的usb串口方式烧写程序了。

烧写画面:

 

烧写开源固件启动画面是这样的:

 

1k内置波形图:

 

这个开源程序支持按ok按键把数据通过串口上传给pc(程序使用的串口就是烧写程序的usb口):

 

Arduino 内建的串口绘图器也可以绘制波形图,要实现这个功能,需要略微修改下代码。

打开capture.ino,增加下面函数:

void dumpCh1(){

    for(uint16_t k = sIndex; k < NUM_SAMPLES; k++)

    DBG_PRINTLN((ch1Capture[k] - zeroVoltageA1) * adcMultiplier[rangePos]);

}

然后让dumpSamples()直接调用这个函数返回。

// ------------------------

void dumpSamples()  {

    return dumpCh1();

// ------------------------

 

这样改动每次按下ok按键后会上传一次波形(实时上传收传输速率瓶颈限制,会导致波形采样点丢失,所以只传历史数据),捕获波形如下图:

 

 

参考文档:

http://stm32duinoforum.com/forum/wiki_subdomain/index_title_Uploading_a_sketch.html

 

https://blog.csdn.net/bobo184/article/details/84349184

https://blog.csdn.net/ouening/article/details/81416148

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐