尝试结合STM32F401的ADC, PWM, SPI(NRF24L01)和TIM, 试验了一下音频的无线传输(对讲机原型)
工作机制
音频采样
因为硬件的限制, 包括STM32F401片内存储, 内存大小, PWM频率, 以及之前实际测试NRF24L01得到的经验数据, 采样使用了最基础的8bit分辨率, 采样频率为16KHz附近
SYSCLK使用25MHz, APB2CLK使用一半频率, 即12.5MHz
ADC在APB2CLK基础上8分频, 所以ADC时钟为12.5MHz/8
ADC使用8bit分辨率, 对应11个ADC时钟, 采样周期设置为84, 所以每次采样为95个ADC周期, 这样实际采样频率为 12500000 / 8 / 95 = 16,447 Hz, 接近16KHz
使用ADC2DMA, DMA使用一个32byte大小的uint8_t数组
无线传输
使用fastwrite机制, 即一直保持在发状态, 只要FIFO TX队列未满就一直往里写, 如果满了就检查MAX_RT标志位, 如果置位则拉低再拉高CE重置发送状态
采样端使用DMA的传输完成中断, 对应32个byte的DMA内存, 每次采集满32个byte都会触发中断, 此时调用NRF24L01进行发送
接收端使用IRQ中断接收, 创建一个128Byte的接收数组, 循环写入. 每次接收中断就往里面写32个byte, 往后增长, 到右边界后再从0开始
音频输出
接收端也使用25MHz的SYSCLK
接收端启用PWM输出, 输出分辨率为8bit
接收端启用Prescaler=0, Period=1561的定时器TIM3, 这个配置对应的频率为 25000000 / (0 + 1)(1561 + 1) = 16,005 Hz, 接近16KHz. (注: 这里频率选择有些问题, 应该要比发送端频率略高, 这样才能保证在持续发送中, 播放不被接收打断)
每次定时器触发中断, 都会在128byte的接收数组中检查是否有新数据, 有则前进一格并以此值修改PWM占空比, 无则跳过. 如果已经到达数组右边界则返回到数组0下标.
电路
输入端电路
输入端使用一个驻极体二极管加S9014组成简单的放大电路.
输出端电路
输出端先经过以及RC低通滤波(R=20, C=10uF), 再使用PAM8403进行放大
项目代码
项目代码在Github: https://github.com/IOsetting/stm32f4-hal-projects/tree/main/Projects/WalkieTalkieDemo
可以使用Keil5 MDK打开和编译
测试记录
采样: 采样工作正常, 观察输出可以看到有动静时采样值的变化
传输: 仅在10米以内距离测试, 出现MAX_RT标志的比例很小, 至少从16KHz采样, 32byte一个package的发送速率看, 发送和接收都不是瓶颈. 当有墙体阻挡时错误率上升明显
播放: 背景噪音大, 在近距离时容易互相干扰产生啸叫. 播放效果较差, 沙沙声明显. 在加入低通滤波后能听清人声, 但是依然未能达到"能听"的水平.
电路部分原型
电路部分原型
发送端
下一步
因为传输不是瓶颈, 所以改进的方向主要是音质. 可能需要从几个方面进行排查:
播放方面. 这块是比较容易排查的, 比如使用单频音源输出, 使用预录的音源输出, 需要评估使用多高的PWM频率以及RC滤波参数能达到可接受的播放效果
采样方面. 如果有示波器会很方便, 没有示波器的话, 只能通过ADC采样的输出来判断, 需要写代码将数组输出到存储, 需要加一些片外存储
上一篇:Keil MDK STM32系列(五) 使用STM32CubeMX创建项目基础结构
下一篇:Keil MDK STM32系列(六) 基于抽象外设库HAL的ADC模数转换
推荐阅读最新更新时间:2024-11-13 11:34
设计资源 培训 开发板 精华推荐
- LTC1628、4 输出笔记本电脑电源
- LT1072HVIT 全隔离转换器的典型应用
- LT1021DCS8-5 用于处理更高负载电流的电压基准的典型应用
- NCV7694GEVB:FLASH IR LED DRV 评估板
- LTC3624IMSE 可调节输出电压、具有 800mA 突发钳位、fSW = 1MHz 的 2A 同步降压型稳压器的典型应用
- OP213FSZ 5V Only 18 位立体声运算放大器 DAC 的典型应用
- #第五届立创电子设计大赛#智能家居
- MIC5325 具有超低 I Q 的低 V IN /V OUT 400mA ULDO 的典型应用
- LTC3624IDD-2 可调输出电压、2A 同步降压型稳压器的典型应用,具有 800mA 突发钳位,fSW = 1MHz
- TDA7265B 30 W + 30 W 立体声功放静音待机典型应用
- 填问卷,解锁赢好礼!看泰克MDO4000C如何进行电源分析!
- 关注有礼:炎炎夏日,泰克原厂探头清凉大促,及时帮您解决精准测试的大问题
- 西门子电子书下载《PCB 制造流程 - 通过数字化转型进行优化》
- 是德科技(Keysight)感恩月,百台仪器免费送!
- 【有奖直播】 聚焦语音识别核心技术,走进Microchip Timberwolf™音频处理器研讨会
- 您的电源符合能耗标准吗?关注PI InnoSwitch3系列,答题赢好礼!
- ADI & WT ·世健 MCU 痛点问题探索季 ——第一站:征集 | 使用 MCU ,哪些问题最令你头大?
- 艾睿照明设计工具初体验:与LED设计的亲密接触!
- TI LM3S811 分组DIY,火热进行中......