利用STC8G1K08实现的数字信号合成模块

举报
tsinghuazhuoqing 发表于 2021/12/27 01:12:18 2021/12/27
【摘要】 简介 普通的电子学实验可以借助于面包板方便实现。其中会涉及到一些信号源、CM押镖、频率计等通用测量功能模块。在普遍要求对测量过程进行自动化的今天,这些设备往往需要能够直接通过有线,或者无限的方式连入计算...

简介

普通的电子学实验可以借助于面包板方便实现。其中会涉及到一些信号源、CM押镖、频率计等通用测量功能模块。在普遍要求对测量过程进行自动化的今天,这些设备往往需要能够直接通过有线,或者无限的方式连入计算机,形成自动测量的系统。

面包板可以比较方实现这些模块的灵活连接,使得测量系统在构建和拆解都比较方便。测量功能模块通过无线方式连入计算机,可以减少这部分的引线部署的步骤,提高系统搭建的效率。

▲ 基于面包板的测试系统

▲ 基于面包板的测试系统

下面显示了基于面包板进行测试被控对象频率小的的系统,其中信号源是由DDS芯片AD9833产生,另外一块单片机卡来获取输入输出信号的幅值,频率等参数。

▲ 实验电路板及其功能模块

▲ 实验电路板及其功能模块

在博文AD9833数字信号发生器模块中给出AD9833原来的控制方案。是基于ST公司的STM32F030制作的控制板,体积相对比较大。对于未来部署在面包板上形成测量系统有比较大的影响。本文提出了基于STC8G1K08-SOP16封装的单片机重新设计的方案。进一步简化电路,缩小体积。

设计方案

设计的目标是在保留电路的基本功能的基础上,减少整体的体积。
设计电路稳定:

D:\zhuoqing\AltiumDesigner\Tools\2020\DDSAD9833\DDSAD9833.PcbDoc *

1. 电路原理图

电路的核心即基于STC8G1k08单片机,开发方便,抗干扰能力强。

电路包括有三个接口:

  1. ISP端口,其中有电源和UART,以及信号输出端口;
  2. AD9833接口插座;
  3. ZIgBee串口模块。
    ▲ 设计系统原理图
    ▲ 设计系统原理图

2. PCB电路板

下图所示的是设计的PCB电路板以及焊接组之后的形式。
▲ PCB电路板

▲ PCB电路板

下面是将实验模块安装上AD9833数字信号发生器以及ZIGBEE无线串口通讯模块。该模块可以竖直安插在面包板上,提供信号源的功能。
▲ 组装有AD9833以及ZigBee无线通信模块

▲ 组装有AD9833以及ZigBee无线通信模块

对外的接口定义:

序号 符号 功能
1 VCC 电源
2 GND
3 TXD ISP串口输出
4 RXD ISP串口输入
5 GND 底线
6 OSVO 信号输出

3. 软件开发

软件所在的目录:

D:\zhuoqing\window\C51\STC\Tools\SSDAD9833\SSDAD9833.uvproj

控制命令

具体命令可以参见下面的代码。


void SerialDebugProcessBuffer(void) {
    double lfFrequency;
    SerialDebugBuffer2Argument();
    if(g_ucSDANumber == 0) return;
    if(strcmp("hello",                (char *)STD_ARG[0]) == 0)
        printf("%s is ready !\r\n", VERSION_STRING);
    else IFARG0("ad9833setfrequency") {
        sscanf(SDA(1), "%lf", &lfFrequency);
        AD9833SetFrequency(lfFrequency);
    } else IFARG0("ad9833sinusoidal") 
        AD9833SinusoidalOutput();
    else IFARG0("ad9833triangle")
        AD9833TriangleOutput();
    else IFARG0("ad9833square")
        AD9833SquareOutput();    
    else if(strcmp(SDA(0), g_szChipID) == 0) {
        IFARG1("sf") {    
            sscanf(SDA(2), "%lf", &lfFrequency);
            AD9833SetFrequency(lfFrequency);            
        } else IFARG1("sinusoidal") 
            AD9833SinusoidalOutput();
        else IFARG1("triangel")
            AD9833TriangleOutput();
        else IFARG0("square")
            AD9833SquareOutput();        
    }
    else printf("Error command : %s !\r\n", STD_ARG[0]);
}


特别请注意对于使用芯片的CHipID作为寻找的时候,可以同时驱动多个信号源来提供信号。


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

文章来源: zhuoqing.blog.csdn.net,作者:卓晴,版权归原作者所有,如需转载,请联系作者。

原文链接:zhuoqing.blog.csdn.net/article/details/105687761

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。