amobbs.com 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
回复: 21

stc51驱动cs4344播发wav

[复制链接]
(294002829)
发表于 2011-3-12 10:09:53 | 显示全部楼层 |阅读模式
版主你好!!请教一个问题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能给于指点,谢谢
(293999679)
发表于 2011-3-12 11:02:23 | 显示全部楼层
版主不喜欢STC...................
(293999541)
发表于 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。
(293994334)
 楼主| 发表于 2011-3-12 12:31:28 | 显示全部楼层
我可以接受单声道,但不能把采样调低
(293988670)
发表于 2011-3-12 14:05:52 | 显示全部楼层
回复【3楼】changhai123  
我可以接受单声道,但不能把采样调低

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

这也可以。
(293987651)
发表于 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输出的。
(293982697)
发表于 2011-3-12 15:45:25 | 显示全部楼层
mark
(293982433)
 楼主| 发表于 2011-3-12 15:49:49 | 显示全部楼层
如果添加硬件资源又该怎样解决,添加什么???
(293982231)
 楼主| 发表于 2011-3-12 15:53:11 | 显示全部楼层
或者能帮忙写个cs4344的驱动吗?
(293980139)
发表于 2011-3-12 16:28:03 | 显示全部楼层
如果允许加硬件的话,可以考虑8位并口输出,定时器产生位时钟和字时钟,用74HC166做并串转换,DAC换Left Justified模式的CS4345。
(293979487)
发表于 2011-3-12 16:38:55 | 显示全部楼层
这个单片机不是有SPI接口的么,上次看到一个帖子说SPI接口可以用到I2S上的
(293979225)
发表于 2011-3-12 16:43:17 | 显示全部楼层
回复【10楼】jsjjccc
这个单片机不是有spi接口的么,上次看到一个帖子说spi接口可以用到i2s上的
-----------------------------------------------------------------------

那SPI接I2S后,SD卡用模拟IO读么?还不是一个样?
AVR好歹也有个USART可以当另一个SPI用,STC这个是标准的UART,没S的,没办法当SPI用……
(293975691)
发表于 2011-3-12 17:42:11 | 显示全部楼层
回复【11楼】gzhuli 咕唧霖
-----------------------------------------------------------------------

哦``
(293973339)
发表于 2011-3-12 18:21:23 | 显示全部楼层
SD卡可以用串口的同步移位模式提高速度,comboy有贴.
(293971357)
 楼主| 发表于 2011-3-12 18:54:25 | 显示全部楼层
如果切换到spi口如何,我可以模拟spi,这里最关键的就是cs4344了
(293967580)
发表于 2011-3-12 19:57:22 | 显示全部楼层
回复【14楼】changhai123  
如果切换到spi口如何,我可以模拟spi,这里最关键的就是cs4344了

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

SD卡和cs4344都必须不能IO模拟才可能实现,sd卡用同步串口来提高速度,cs4344用硬件spi来操作,也许可以实现.
(293963443)
发表于 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的字时钟比数据提前一位跳变,需要额外处理才能模拟。
(293958479)
 楼主| 发表于 2011-3-12 22:29:03 | 显示全部楼层
这个是国外网站下载到的,at32基于i2s做的wav播放器ourdev_622098HDMXCI.zip(文件大小:12K) (原文件名:I2S.zip)
这个是pc机软件,请大家帮忙看看,怎么样参考他的方法,把这做出来ourdev_622099HCLO61.zip(文件大小:342K) (原文件名:I2S_PC.zip)
(42574921)
发表于 2019-2-28 11:15:01 | 显示全部楼层
51破解确实速度不够,最后换16位或者32位,速度更快的
(14561884)
发表于 2020-1-18 16:38:58 | 显示全部楼层
wofei3344 发表于 2019-2-28 11:15
51破解确实速度不够,最后换16位或者32位,速度更快的

挖啊挖啊挖
(14522392)
发表于 2020-1-19 03:37:10 | 显示全部楼层
这个草长得有几米了吧
(13775891)
发表于 2020-1-27 18:58:51 | 显示全部楼层
我也不喜欢STC 。。。。。。。。。。。。
回帖提示: 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号-1 )

GMT+8, 2020-7-5 05:37

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表