我有一个使用 Arduino 或 Teensy 的项目,我需要从 SD 卡的二进制文件“字节”中不断读取字节,并以某个稳定的频率buf=file.read()
通过端口操作(PORTD = buf
...或循环内)进行输出。PORTD = file.read()
我读过由于SD卡延迟,file.read()
命令不会每次都同时执行,所以输出频率不会稳定。当我打开文件一次读取直到循环结束然后关闭文件时,是否会发生这种延迟?
如果是这样,另一种解决方案是从 SD 卡中读取每个 512 字节,并在 struct 的帮助下将它们存储到 buf 数组中。现在的问题是,每次我读取 512 字节时,我都必须等待它们的到来加上 SD 卡读取延迟。是否可以制作两个每个 512 字节的缓冲区数组 -> 填充第一个 -> 在频率为 10 或 20 Khz 或更高的定时器中断内使用第一个数组开始端口操作,因此输出始终具有稳定的频率而在另一个循环中,我尝试填充另一个数组?我的意思是可以file.read(buf, size of(512))
毫无问题地中断“”命令吗?
如果是这样,我怎样才能处理平滑的数据速率并拥有稳定的频率?
我相信微控制器音频播放器也会出现同样的问题。他们在哪里播放 SD 卡中的 wav 文件。请帮我。提前致谢!