STM32 的SPI总线问题,求助大侠!!
我有块板子,上面有SPI的flash芯片,还有SPI的vs1003MP3解码芯片,这两个设备的SPI总线均接到了STM32的同一个SPI口上(片选不同),由于板子固定,所...
我有块板子,上面有SPI的flash芯片,还有SPI的vs1003 MP3解码芯片,这两个设备的SPI总线均接到了STM32的同一个SPI口上(片选不同),由于板子固定,所以电路没法改,现在我想在flash中存入一首mp3,然后通过spi将flsh里的mp3文件读出,再通过spi送到vs1003去解码,这样用的是同一个spi口,大侠分析下这样可行么,会不会冲突,速率上,延迟上,会不会有问题呢。。。新手。。求教!
展开
2个回答
展开全部
VS1003和Flash的SPI接口速度可以达到Mbits/s。时间计算如下
1. 对Flash的操作,512字节在8Mbit/s的速率下,耗时仅仅0.5微秒左右。
2. VS1003内部有512字节的缓冲区,按照128kbps的播放速率,半个缓冲区至少可以播放30微秒。
操作步骤如下:
1. 为了能够及时响应VS1003的数据要求,需要先将数据缓冲到STM32的RAM中,即先从Flash读取一部分MP3数据到RAM中。然后写满VS1003的512字节缓冲,开始播放。
2. VS1003在有缓冲空闲时会产生中断请求,此时缓冲区中至少还能支撑30微秒。
如果此时SPI空闲,操作SPI,直接从RAM将数据写入VS1003
否则,等待SPI操作结束(最多1微秒),然后从RAM中将数据写入VS1003
3. 检查RAM中的MP3数据是否需要从Flash补充,如果需要,从Flash中读取MP3数据到RAM中。
4. 重复2,3直到播放结束。
以上只是比较粗略的过程,需要你自己进一步设计和规划。
1. 对Flash的操作,512字节在8Mbit/s的速率下,耗时仅仅0.5微秒左右。
2. VS1003内部有512字节的缓冲区,按照128kbps的播放速率,半个缓冲区至少可以播放30微秒。
操作步骤如下:
1. 为了能够及时响应VS1003的数据要求,需要先将数据缓冲到STM32的RAM中,即先从Flash读取一部分MP3数据到RAM中。然后写满VS1003的512字节缓冲,开始播放。
2. VS1003在有缓冲空闲时会产生中断请求,此时缓冲区中至少还能支撑30微秒。
如果此时SPI空闲,操作SPI,直接从RAM将数据写入VS1003
否则,等待SPI操作结束(最多1微秒),然后从RAM中将数据写入VS1003
3. 检查RAM中的MP3数据是否需要从Flash补充,如果需要,从Flash中读取MP3数据到RAM中。
4. 重复2,3直到播放结束。
以上只是比较粗略的过程,需要你自己进一步设计和规划。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询