changhai123 发表于 2011-3-12 10:09:53

stc51驱动cs4344播发wav

版主你好!!请教一个问题51上的软件模型问题,问题描述:1.目的:用stc12c5a60s2单片机加一片cs4344 dac来播发wav 2.状况:sd卡文件系统已做好,但是cs4344的i2s驱动还不工作(因单片机没有i2s总线接口,所以用的是i/o模拟,晶振24.576,1T的单片机,能输出3个colcok,可以实现2~512分频,另外中断什么的随便用,pwm口等),wav参数:48Khz,16bit、双声道      问题:怎样保证基于i2s总线的数据不断流(假设发送的数据全都取反,计算:数据速率为:768Khz,)请lz能给于指点,谢谢

LM1876 发表于 2011-3-12 11:02:23

版主不喜欢STC...................

90999 发表于 2011-3-12 11:04:41

回复【楼主位】changhai123
版主你好!!请教一个问题51上的软件模型问题,问题描述:1.目的:用12c5a60s2单片机加一片cs4344 dac来播发wav 2.状况:sd卡文件系统已做好,但是cs4344的i2s驱动还不工作(因单片机没有i2s总线接口,所以用的是i/o模拟,晶振24.576,1t的单片机,能输出3个colcok,可以实现2~512分频,另外中断什么的随便用,pwm口等),wav参数:48khz,16bit、双声道      问题:怎样保证基于i2s总线的数据不断流(假设发送的数据全都取反,计算:数据速率为:768khz,)请lz能给于指点,谢谢
-----------------------------------------------------------------------

用汇编写都不一定不断流~~~
你要保证读SD卡的速度远远快于伪I2S送出数据的速度。建议你把采样率降低到16K。

changhai123 发表于 2011-3-12 12:31:28

我可以接受单声道,但不能把采样调低

90999 发表于 2011-3-12 14:05:52

回复【3楼】changhai123
我可以接受单声道,但不能把采样调低

-----------------------------------------------------------------------

这也可以。

gzhuli 发表于 2011-3-12 14:22:51

CS4344没有单声道模式,48k 16b 2ch的码率是1.536M,24.576M 1T单片机模拟IO一位只能跑16条指令(貌似跳转指令还不止1T),不说读SD卡,就算数据已经在内存里,用汇编都不一定能实现。
I2S和USB不一样,虽然AVR模拟IO能做到1.5Mbps的USB LS,但是USB是包通讯,允许断流,I2S是流通讯,不能断流,除非读SD卡有DMA搞定,否则16个时钟周期不太可能完成读SD卡和模拟I2S输出的。

majia111222 发表于 2011-3-12 15:45:25

mark

changhai123 发表于 2011-3-12 15:49:49

如果添加硬件资源又该怎样解决,添加什么???

changhai123 发表于 2011-3-12 15:53:11

或者能帮忙写个cs4344的驱动吗?

gzhuli 发表于 2011-3-12 16:28:03

如果允许加硬件的话,可以考虑8位并口输出,定时器产生位时钟和字时钟,用74HC166做并串转换,DAC换Left Justified模式的CS4345。

jsjjccc 发表于 2011-3-12 16:38:55

这个单片机不是有SPI接口的么,上次看到一个帖子说SPI接口可以用到I2S上的

gzhuli 发表于 2011-3-12 16:43:17

回复【10楼】jsjjccc
这个单片机不是有spi接口的么,上次看到一个帖子说spi接口可以用到i2s上的
-----------------------------------------------------------------------

那SPI接I2S后,SD卡用模拟IO读么?还不是一个样?
AVR好歹也有个USART可以当另一个SPI用,STC这个是标准的UART,没S的,没办法当SPI用……

jsjjccc 发表于 2011-3-12 17:42:11

回复【11楼】gzhuli 咕唧霖
-----------------------------------------------------------------------

哦``

mcu_001 发表于 2011-3-12 18:21:23

SD卡可以用串口的同步移位模式提高速度,comboy有贴.

changhai123 发表于 2011-3-12 18:54:25

如果切换到spi口如何,我可以模拟spi,这里最关键的就是cs4344了

mcu_001 发表于 2011-3-12 19:57:22

回复【14楼】changhai123
如果切换到spi口如何,我可以模拟spi,这里最关键的就是cs4344了

-----------------------------------------------------------------------

SD卡和cs4344都必须不能IO模拟才可能实现,sd卡用同步串口来提高速度,cs4344用硬件spi来操作,也许可以实现.

gzhuli 发表于 2011-3-12 21:06:19

回复【15楼】mcu_001
回复【14楼】changhai123
如果切换到spi口如何,我可以模拟spi,这里最关键的就是cs4344了
-----------------------------------------------------------------------
sd卡和cs4344都必须不能io模拟才可能实现,sd卡用同步串口来提高速度,cs4344用硬件spi来操作,也许可以实现.
-----------------------------------------------------------------------

正解,不过STC貌似没有同步串口。
即使有同步串口和SPI,还是SPI读卡,PWM产生位时钟和字时钟,同步串口输出数据,而且用左对齐格式的DAC会比较方便,因为IIS的字时钟比数据提前一位跳变,需要额外处理才能模拟。

changhai123 发表于 2011-3-12 22:29:03

这个是国外网站下载到的,at32基于i2s做的wav播放器ourdev_622098HDMXCI.zip(文件大小:12K) (原文件名:I2S.zip)
这个是pc机软件,请大家帮忙看看,怎么样参考他的方法,把这做出来ourdev_622099HCLO61.zip(文件大小:342K) (原文件名:I2S_PC.zip)

wofei3344 发表于 2019-2-28 11:15:01

51破解确实速度不够,最后换16位或者32位,速度更快的

chinaboy25 发表于 2020-1-18 16:38:58

wofei3344 发表于 2019-2-28 11:15
51破解确实速度不够,最后换16位或者32位,速度更快的

挖啊挖啊挖

keil_c51 发表于 2020-1-19 03:37:10

这个草长得有几米了吧{:lol:}

lxa0 发表于 2020-1-27 18:58:51

我也不喜欢STC 。。。。。。。。。。。。
页: [1]
查看完整版本: stc51驱动cs4344播发wav