您好!
我目前正在处理6748LCDK 板上 RTOS 中提供的 McASP 示例。 我对代码有疑问:
1) 1)是否可以一次只从输入/麦克风端口获取一个样本、立即对其进行处理并将其转发到输出扬声器/音频端口? 如何做到这一点? 目前、代码被设置为将128个样本(总共128*4 = 512字节、因为每个样本是32位字)传入 Rx 缓冲区、并将相同数量的字节写入输出缓冲区。 如何将其更改为每次仅采样一次、即在缓冲器中一次只采样4个字节或32个位?
2) 2)我需要清楚地了解音频任务的控制流程。 我目前的理解是、McASP 从音频编解码器获取样本、并将其写入512字节存储器 Rx 缓冲器。 只有当这个缓冲器被512字节填满时、音频任务才能够处理采样并输出到 TX 缓冲器。 一旦512字节输出缓冲器被填满、McASP 为 TX 缓冲器提供服务并将样本发送到编解码器以将其输出到扬声器。 我不确定这是否正确。 但是、如果确实如此、则意味着必须先填充 Rx 缓冲器、然后才能处理样本、并且必须填充 TX 缓冲器才能输出样本。
现在、当我使用时间戳来确定将输入/ Rx 缓冲器复制到输出/ TX 缓冲器的每个周期所需的时间时、结果是2.73毫秒。 然而、鉴于采样率为44100Hz、128个采样应该至少需要2.9毫秒(128/44100)+一些开销才能将这些采样写入内存。 这里似乎存在差异。 我对事物工作方式的理解是否不正确? 即使在128个样本被写入缓冲存储器之前、Rx 缓冲器也开始被处理吗?
如果有人能为我提供准确的详细信息、那会更好。
谢谢。