设备之间的I2C和串行通信

时间:2018-07-22 06:05:49

标签: bluetooth arduino i2c baud-rate

我正在使用python套接字来连接PC的蓝牙HC-05模块。我想通过将wav文件转换为字符串数组来将音乐发送到HC-05,稍后再将其转换为在arduino上从0到65535的整数。 arduino和HC-05通过串口以9600波特进行通信。然后,这些整数将通过I2C传递到DAC。我想知道是否可能存在内存问题,从我的PC发送大量字符串。跨设备发送/接收数据的速率不同是否会导致声音的原始质量失真?还是仅在DAC上延迟声音信号?

1 个答案:

答案 0 :(得分:0)

  

arduino和HC-05通过串口以9600波特进行通信。

这太低了,无法用于音频。

9600波特每秒可提供7680位数据。以每个样本16位的速度,您正在寻找481 Hz的采样率,对于可理解的音频来说太低了。甚至根本无法再现声音。

您需要:

  1. 提高波特率。理想情况下,对于46 kbit / sec的数据,您至少需要57600波特。如果可以使用更高的波特率,请使用它们。

  2. 为每个样本使用更少的位。对于56 kbaud的每个样本使用4位,将为您提供11.5 kHz的可观采样率。音频在4位时听起来会有点细微,但可以理解。