Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino 微控制器SD卡_Arduino_Binary_Sd Card_Audio Player_Teensy - Fatal编程技术网

Arduino 微控制器SD卡

Arduino 微控制器SD卡,arduino,binary,sd-card,audio-player,teensy,Arduino,Binary,Sd Card,Audio Player,Teensy,我有一个Arduino或Teensy的项目,我需要不断地从SD卡的二进制文件“byte”buf=file.read()中读取字节,并通过端口操作(PORTD=buf,…或PORTD=file.read()在循环中)以稳定的频率进行输出 我已经读到,由于SD卡延迟,file.read()命令不会每次同时执行,因此输出频率将不稳定。当我打开文件读取一次,直到循环结束,然后关闭文件时,是否会发生这种延迟 如果是这样,另一种解决方案是从SD卡读取每个512字节的数据,并在结构的帮助下将它们存储到buf数

我有一个Arduino或Teensy的项目,我需要不断地从SD卡的二进制文件“byte”
buf=file.read()
中读取字节,并通过端口操作(
PORTD=buf
,…或
PORTD=file.read()
在循环中)以稳定的频率进行输出

我已经读到,由于SD卡延迟,
file.read()
命令不会每次同时执行,因此输出频率将不稳定。当我打开文件读取一次,直到循环结束,然后关闭文件时,是否会发生这种延迟

如果是这样,另一种解决方案是从SD卡读取每个512字节的数据,并在结构的帮助下将它们存储到buf数组中。现在的问题是,每次读取512字节时,我必须等待这些字节的到来加上SD卡读取延迟。是否有可能在计时器中断内以10或20 Khz或更高的频率创建两个512字节的缓冲阵列->填充第一个->使用第一个阵列启动端口操作,以便在另一个循环中尝试填充另一个阵列时,输出始终具有稳定的频率?我的意思是,是否可以在没有问题的情况下中断“
file.read(buf,大小为(512))
”命令

如果是这样,我如何处理平滑的数据速率和稳定的频率


我相信微控制器音频播放器也会出现同样的问题。他们从SD卡播放wav文件的地方。请帮帮我。提前谢谢

我还没有编写代码,所以说得清楚一点,我有一个teensy 3.6,带有一个板载SD卡模块,可以使用204800字节的SRAM作为缓冲区,这意味着我可以为从SD卡读取的每个块使用400个512字节的缓冲区

然后我做一个定时器中断,它正在运行(例如在50KHz下),并一个字节一个字节地同时推出8个引脚(任何一个端口都可以用于端口操作)。同时,是否可以在进行端口操作的中断之外的剩余可用时间内从SD卡读取新块,以便始终有可用字节,而不等待SD卡


简而言之,当读取命令在某个时间启动时,它将被计时器中断功能中断,以推出字节,然后返回原来的位置。这可能吗?我认为麦克风音频播放器使用两个缓冲区的逻辑,一个被推出(DAC值),而另一个在第一个缓冲区结束之前再次填充。这就是为什么44.4 Khz是播放的最大8位wav,因此没有缓冲区因干扰输出频率而下溢。谢谢

您没有提到您使用的确切部件,因此这里没有人知道可用于执行任务的功能(例如SRAM、中断、I/O)。Arduino系列本身就具有广泛的功能。请把数据表拿出来,具体点,否则没人能帮上忙。