文号
887456
阅读
38843
回复
10
收藏
10
把之前的声卡SDR完善了一下,可以使用SDR#等软件控制
2020/10/26
原创
IP:四川

    之前发过一个使用USB声卡芯片来采集信号的SDR,但是控制频率只能手动旋转编码器,而且这样在软件上读频率很麻烦。当时考虑使用声卡芯片本身的IO口来控制频率。但是厂商给的资料很少,不好实现。前段时间便换了一种方案,使用一个USB-HUB芯片连接USB声卡和一个STM32,使用STM32来控制,USB声卡发送数据 。

    要实现使用SDR#或者HDSDR等软件控制频率,同时将采集到的数据发送给SDR软件,需要一个叫做EXTIO的工具。我们通过它,实现把频率发送给SDR设备,并让SDR软件可以取得采集到的数据。我将STM32的USB设置为一个虚拟串口设备。这样就可以通过串口API和音频API实现控制和采集数据的取得。编写程序后生成的extio-XXX.dll就可以加到SDR#等软件下,实现控制SDR硬件功能。简要的表示为下图所示。

     extio2.png

    实际上如果我使用了单片机后,可以使用FT232H这类芯片,配合单片机实现数据传输和控制。STM32可以直接使用音频codec采集信号同时进行控制。我使用USB声卡只是之前使用过USB声卡,偷懒了一下。

    同时,如果使用FT232H等芯片连接FPGA再使用一个高速ADC,便可以实现短波段直采。当然,FT232H的速度不够快,还要在FPGA内实现数字下变频等内容。之后同样的在extio中使用FT的API便可以取得数据和发送控制信号,实现短波SDR。如果再在ADC前面加入一个射频开关,连接R820T等芯片,可以拓宽频率接收范围。当然,已经有爱好者制作出了很多类似的方案,比如下面这个方案。

    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    下面是我制作出来的SDR接收时录制的视频


CM-SDR.mp4  点击下载 ‎

   下图为采集和控制的板子,声卡引出了两路ADC和两路DAC,通过IPEX和下面的射频板连接。STM32引出了一组IO,可以用来实现控制频率,控制滤波器切换和控制放大器增益等功能。

CMRX.png

    这次接收方案还是使用了开关混频的零中频,性能不咋样。不过实现了采集和控制之后,以后可以在这个的基础上尝试使用各种各样的接收方案,还是有一定的可玩性。既然使用了CM的USB声卡,就叫他CM-SDR吧😆。

    下面是EXTIO的文档

attachment icon Winrad_Extio.pdf 199.90KB PDF 344次下载 预览


6年1个月前IP:河北
887458
1楼

STM32自带的ADC有比声卡更高的采样率

引用
评论
6年1个月前IP:四川
887461
2楼

其实我一直没看明白用的什么方法处理射频,难道是MSI001…

楼主说的前序文章是这篇 https://www.kechuang.org/t/85219 

引用
评论(1)
5年11个月前IP:德国
888611
3楼

声卡SDR能做到窄带接收机的极致,但好的声卡也是很贵的

引用
评论
5年10个月前IP:山东
889196
4楼

开源吗 sticker

引用
评论
5年10个月前IP:广东
889486
5楼

看出来了,性能不咋样sticker

引用
评论
5年9个月前IP:四川
890119
6楼

天线附近有照明灯和空调外机,干扰下来效果是有点恶心。😂不过最近准备搞一个二次变频超外差的结构玩一下,再看下效果咋样。 sticker

引用
评论
5年9个月前IP:四川
890120
7楼
引用fei666888发表于5楼的内容
看出来了,性能不咋样[图片]

天线附近有照明灯和空调外机,干扰下来效果是有点恶心。不过最近准备搞一个二次变频超外差的结构玩一下,再看下效果咋样。 sticker

引用
评论
5年9个月前IP:河南
890132
8楼
引用永恒之桔发表于6楼的内容
天线附近有照明灯和空调外机,干扰下来效果是有点恶心。😂不过最近准备搞一个二次变频超外差的结构玩一下,再看下效果咋样。[表情]

msi001不就是二次变频超外差么。中短波干扰无处不在,用高速ADC+FPGA肯定要用dcdc,这样处理起来就比较麻烦了。

引用
评论
3年0个月前IP:浙江
926831
9楼

最新版的SDR#是不是取消了导入ExtIO的功能?

引用
评论
3年0个月前IP:四川
926833
10楼
引用vgegok发表于9楼的内容
最新版的SDR#是不是取消了导入ExtIO的功能?

如果没记错的话已经取消了五六年了,应该问最新是否恢复。。。

引用
评论
1
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的