本次目标RF54L15-DK通过auracst广播400k正弦音频,通过nRF52840 dongle电脑接收到音频,将其中正弦波音频播放出来,验证全链路是否打通。软件准备我们选择其中bap_broadcast_source作为我们的发送端的此次工程。查看其中的prf.conf
CONFIG_MAIN_STACK_SIZE=2048
CONFIG_BT=y
CONFIG_LOG=y
CONFIG_BT_AUDIO=y
CONFIG_BT_ISO_BROADCASTER=y
CONFIG_BT_BAP_BROADCAST_SOURCE=y
CONFIG_BT_ISO_MAX_CHAN=2
CONFIG_BT_BAP_BROADCAST_SRC_STREAM_COUNT=2
# Two streams in one subgroup (stereo)
CONFIG_BT_BAP_BROADCAST_SRC_SUBGROUP_COUNT=1
# Uncomment below to use Broadcast ISO interleaved packing
# CONFIG_ISO_PACKING_INTERLEAVED=y
CONFIG_BT_ISO_TX_BUF_COUNT=6
CONFIG_BT_ISO_TX_MTU=60
CONFIG_BT_DEVICE_NAME="Broadcast Audio Source"
CONFIG_BROADCAST_ID=0x123456
其中广播没有开启LC3的编码,在初始状态其中只广播了PCM的数据,之后我们需要修改一下其中,关闭其中的auracast的USB,因为我们的板卡不支持USB音频输入,默认有一个400K的正弦波音频.这里我们的conf添加为,因为LC3编码需要编码,所以需要开启FPU,这里我们不需要USB,需要走里面自带的正弦波测试
CONFIG_USE_USB_AUDIO_INPUT=n
CONFIG_FPU=y
CONFIG_LIBLC3=y
CONFIG_FPU_SHARING=y
其中正弦波在这里实现
static void fill_audio_buf_sin(int16_t *buf, int length_us, int frequency_hz, int sample_rate_hz)
{
const int sine_period_samples = sample_rate_hz / frequency_hz;
const unsigned int num_samples = (length_us * sample_rate_hz) / USEC_PER_SEC;
const float step = 2 * 3.1415f / sine_period_samples;
for (unsigned int i = 0; i < num_samples; i++) {
const float sample = sinf(i * step);
buf[i] = (int16_t)(AUDIO_VOLUME * sample);
}
}
将广播400K的广播音频出来,这里实际演示在最后一篇的视频演示出来。
电脑则根据上一篇文章,插入听电脑是否有播放滋滋滋的音频出现。