近期需要进行基于声音传播测距的实验,需要临时制作一款可以发送Chirp音频信号和接收信号的电路板。要求其中的内部RAM足够大,可以采集到音频信号进行后期处理。

电路硬件设计1

1.电路原理2

原理图设计-MCU及其接口

原理图设计-电源部分

 

2. 电路PCB版图

PCB版图

底部的两个接口的定义:

  1. 左4PIN接口:电源接口,PIN1,2:VCC(+5V), PIN3,4:GND
  2. 右8PIN接口:ADDA接口,见下面表格:
序号 符号 功能定义
1 AD0 AD输入0
2 AD0 AD输入0
3 AD0 AD输入0
4 AD0 AD输入0
5 GND 电源地
6 3.3VA 内部稳压模拟3.3V
7 DAC1 DA输出1
8 DAC2 DA输出2
  1. 顶部4PIN接口:SPI接口,从左到右分别是:MOSI,MISO,SCK,NSS
  2. 左侧4PIN接口:IO口,从上到下:IO1,2,3,4

调试错误:
(1)在第一版本中没有将UART3的管脚引出来。

  1. 顶部的4PIN另外功能定义:根据STM32F103cb管脚复用,顶部的4PIN还可以定义为TIME3,TIME2的PWM输出。

PSPI管脚重新定义为TIME3,TIME2的PWM输出

在PIO中的IO从上到下分别是PB15,PB14,PB13,PB12。在CONTROL.H中分别定义为:IO1,IO2,IO3,IO4。
它们的输入,输出功能请在Control.C的初始化程序中进行设置。

PIO中定义的输入输出口

3. 电路软件3调试以及调用命令

安装完毕元器件之后,下载初步的开发软件,便可以设置读取AD采集的信号波形了。

安装完毕后,下载程序进行调试
采集到的信号源典型波形

对F103内部的DA、AD模块初始化的语句。

    HAL_ADC_Start(&hadc1);HAL_ADC_Start(&hadc3);HAL_ADC_Start(&hadc2);//--------------------------------------------------------------------------HAL_TIM_Base_Start_IT(&htim1);g_nTime1InterruptCount = 0;g_nADC1BufferPoint = 0;extern DAC_HandleTypeDef hdac;HAL_DAC_Start(&hdac, DAC_CHANNEL_1);HAL_DAC_Start(&hdac, DAC_CHANNEL_2);

每个10ms通过如下语句赋值DAC1,DAC2相应的输出波形:

    //--------------------------------------------------------------------------if(++nShowCount >= 10) {nShowCount = 0;
//        printf("%d\r\n", g_nTime1InterruptCount);DACOutput1(GetADC1());DACOutput2(0xfff - GetADC1());}


 

产生Chirp声音

1. 使用Python产生仿真Chirp波形

具体产生Chirp信号的参数和方法见下面的代码。

#------------------------------------------------------------
startf = 50
endf = 1500
data_length = 2048
samplefrequency = 5e3
deltat = 1/samplefrequency
#------------------------------------------------------------
angle = 0
data_buffer = []
#------------------------------------------------------------
for i in range(data_length):data = int((sin(angle) + 1) * 0xfff)data_buffer.append(data)frequency = (endf - startf) * (i + 1) / data_length + startfangle = angle + frequency * deltat
t = linspace(0, data_length * deltat, data_length, endpoint=True)
plt.plot(t, data_buffer)
plt.xlabel('Time (s)')
plt.ylabel('Sample Value')
plt.show()```

数学产生的Chirp信号

2. F103 产生相同的Chirp信号并输出

使用单片机产生的Chirp信号在示波器上显示的波形


  1. DOP 文件 : D:\zhuoqing\DesignCenter\MyResearch\2020\ADDAF103RE\Hardware.dop ↩︎

  2. 电路原理图 : d:\zhuoqing\AltiumDesigner\Test\2020\ADDAF103RE\ADDAF103RE.SchDoc ↩︎

  3. 电路软件所在的目录:D:\zhuoqing\window\ARM\IAR\STM32\Application\Test\2020\ADDAF103RE\Src\main.c ↩︎

基于STM32F103RE ADDA板制作相关推荐

  1. 飞翔的小鸟游戏基于arm开发板制作

    在arm开发板上主要基于C语言 虚拟机的使用 .而在操作一个系统必须的 三大步骤 1.open 函数  打开文件         #include <sys/types.h>       ...

  2. 基于arduino uno 开发板制作的 智能书包项目

    基于arduino uno 开发板制作的智能书包,当时收短视频启发,集合自动售货机的代码和RC522 读卡模块代码结合制作,现基本功能可以实现 ,目前代码部分尚不稳定需要继续改进 //一个智能书包小发 ...

  3. 基于Arduino Uno开发板制作音乐播放器

    基于Arduino Uno开发板制作音乐播放器 本文将基于Arduino开发板实现一个音乐播放器. 利用Arduino Uno读取sd卡模块中内存卡的音乐,传输信号到扬声器进行播放. 一.项目软硬件简 ...

  4. 20165219王彦博《基于Cortex-M4的虚拟机制作与测试》课程设计个人报告

    20165219王彦博<基于Cortex-M4的虚拟机制作与测试>课程设计个人报告 一.个人贡献 参与课设题目讨论及完成全过程: 资料收集: 负责环境搭建,代码运行下载: 撰写小组结题报告 ...

  5. FPGA之道(19)以FPGA为核心的开发板制作

    文章目录 前言 开发板制作 前言 学习FPGA的初期,我们习惯到网上买一款FPGA开发板,这是新手学习FPGA开发的最佳途径,负责任的开发板制作者会提供相应的教程供练习,毕竟能动手操作上板子才是真正玩 ...

  6. 移植根文件系统到linux内核 s3c2440,u-boot-2011.06在基于s3c2440开发板的移植之引导内核与加载根文件系统...

    三.根文件系统的制作 我们利用busybox来制作根文件系统 1.在下列网站下载busybox-1.15.0.tar.bz2 在当前目录下解压busybox tar -jxvf busybox-1.1 ...

  7. 【RTOS】基于V7开发板的uCOS-III,uCOS-II,RTX4,RTX5,FreeRTOS原版和带CMSIS-RTOS V2封装层版全部集齐...

    RTOS模板制作好后,后面堆各种中间件就方便了. 1.基于V7开发板的最新版uCOS-II V2.92.16程序模板,含MDK和IAR,支持uC/Probe https://www.cnblogs.c ...

  8. 基于uFUN开发板和扩展板的联网校准时钟

    项目概述 上周在uFUN试用群里看到管理员说试用活动快结束了,要抓紧完成评测总结,看大家的评测总结也都写了,我也不能落后啊!正好最近做的扩展板到手了,于是赶紧进行调试,做了一个不用校准的时钟,时钟这种 ...

  9. 【Arduino】基于4*4键盘制作计算器

    实验现象 在4 * 4键盘输入简单的数学运算,如加法.减法.乘法和除法,实时在串口监视器显示答案. 实验准备 arduino主板-1 面包板-1 数据线-1 4 * 4键盘-1 跳线若干 连接电路 图 ...

最新文章

  1. php 汉字的首字母
  2. jdbc和mysql面试题_JDBC数据访问技术面试题(附答案)
  3. 答TOGAF企业架构的一些问题
  4. 图文直播:Pokémon Go真爱粉与“脑残粉”之间的爱恨情仇
  5. java小球碰撞实验报告_20155317 《Java程序设计》实验五网络编程与安全实验报告...
  6. 使用C语言----修改密码
  7. poj 2945 Find the Clones 用trie树实现
  8. PHP中等良好优秀,成绩优秀,中等,良好怎么分的啊?分为哪几个?
  9. 【NLP】近期必读ICLR 2021相关论文
  10. react router 路由守卫_React-router 路由守卫
  11. [现代控制理论]8.5_线性控制器设计_轨迹跟踪simulink
  12. 利用arcgis软件画地图
  13. prometheus使用cAdvisor监控容器
  14. OSChina 周日乱弹 ——欣欣像蓉!还我程序员公道!
  15. Android5.0系统下代码格式化sd卡方法
  16. Linux系统到底是什么?
  17. STM32添加以太网连接
  18. XXXXXXXXXXX学校“专家问诊课”活动方案
  19. 计算机培训考试内容,计算机等级考试的科目和内容解析
  20. 他教全世界程序员怎么写好代码,答案写在这里!

热门文章

  1. 模仿SDWebImage实现异步加载图片
  2. Exchange企业实战技巧(5)配置OWA域名简写
  3. Hadoop:The Definitive Guid 总结 Chapter 7 MapReduce的类型与格式
  4. GridView 类型公开的所有成员(公共属性、公共方法、私有属性.......)
  5. [SDOI2017]硬币游戏
  6. Django之BBS博客项目
  7. cmd文件内容添加到文件内容命令
  8. Elasticsearch Javascript API增删改查
  9. Python expandtabs() 方法
  10. Guava库学习:学习Guava EventBus(二)EventBus 事件订阅示例