OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9819|回复: 9

吐槽:关于STM32使用PCM1792芯片的问题

[复制链接]

5

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2014-3-28
在线时间
0 小时
发表于 2014-4-18 19:57:20 | 显示全部楼层 |阅读模式
小弟是个新手,第一次做STM32的项目。公司提出使用PCM1792做DA输出。
做了两个月,我突然发现项目的可行性,芯片选择问题有很大的问题。现在给各位分析下,求大牛给分析下,这个项目还能不能进行下去。
使用PCM1792做DA输出,这无可厚非。这款芯片是做音频解码的,可以播放音频文件。
但是我在调I2S驱动的过程中,就发现当你只发送单个数据的时候,DA是没有输出的。一开始百思不得其解,后来发现从机没有系统时钟,我就连续循环发送数据,这时发现有系统时钟了,而且发送到一两百次的时候,发现有数据输出,输出值无误。然后我有一个比较合理的解释,数据音频流是不能间断的,就如MP3文件之类的,都是下载好的,直接播放,肯定不能间断。
但是现在公司提出来,要先使用AD采样,然后对这个值做一定的算法处理后再送到PCM1792做输出。
最后我就纳闷就算使用双DMA循环模式,你边处理数据我边发送,我输出的速度(解码速度)也肯定是要快于你输入的DA值的速度(因为要做算法处理)的,那这个项目肯定是做不下去的。
由于是新手,一开始都是摸索着学习,遇到问题也不敢轻易怀疑项目决策层。只能自己捣鼓,但这是我思考半个月后得到的结论,各位怎么看?求大牛指导!!!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-4-18 23:01:44 | 显示全部楼层
回复【楼主位】herry2014:
---------------------------------
你一直循环发送单一的值给PCM1792,应该也会输出DA值。
然后数据需要变化的时候,再改变这个单一值的值,就可以了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2014-3-28
在线时间
0 小时
 楼主| 发表于 2014-4-19 00:37:19 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
考虑过这个,不过很担心时序不好控制,发送的数据格式是uint16[L1,L2,R1,R2],分别是左声道(L1,L2)32位,右声道(R1,R2)32位。DMA要对数据寄存器连续读取四次。当你改变传输值的时候,会不会发生错位呢?原子哥
回复 支持 反对

使用道具 举报

5

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2014-3-28
在线时间
0 小时
 楼主| 发表于 2014-4-19 00:57:04 | 显示全部楼层
听原子哥这么说后有点豁然开朗。如果我现在DMA传送一次数据,当DMA读取到R1时,我这个时候要传送的值可能已经被更改,然后换成新的值[l1,l2,r1,r2]了,可能这个右声道发送的值是有误差的,发的是[R1,r2],但是下次循环继续发的时候,该声道数据是正确的。这个应该不影响吧!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-4-19 16:01:08 | 显示全部楼层
回复【4楼】herry2014:
---------------------------------
不影响的,这个传输是很快的。。。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2014-3-28
在线时间
0 小时
 楼主| 发表于 2014-4-20 11:25:21 | 显示全部楼层
恩,谢谢原子哥。我还有个小疑问,我们用芯片播放音频文件的时候,都是把音频文件的头地址告诉DMA,然后DMA就一直发送音频流数据。那个音频流数据的发送应该不是像我们这个针对一个音频数据循环的发送的吧?这样说的话,我实在对这种芯片的用法感觉莫名其妙呀!!!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-4-20 13:17:09 | 显示全部楼层
回复【6楼】herry2014:
---------------------------------
你把解码后的音频数据,不停的送给I2S,就可以从DAC输出了。
没什么奇怪的啊。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2014-3-28
在线时间
0 小时
 楼主| 发表于 2014-4-20 22:51:40 | 显示全部楼层
回复【7楼】正点原子:
---------------------------------
解码的是一段音频流。音频流里每个数据是不一样的,而我现在项目做得是每一个数据都要用DMA循环的发送,用法不是很奇怪吗?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-4-20 23:12:25 | 显示全部楼层
回复【8楼】herry2014:
---------------------------------
这没办法啊,你们老大要用音频DAC来做,呵呵。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2014-3-28
在线时间
0 小时
 楼主| 发表于 2014-4-20 23:54:22 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
是呀,吐槽下,原子哥这么一说我有底气多了!呵呵!明天开会跟老大谈谈,谢谢原子哥了,这么晚还那么热心。注意休息呀!嘿嘿
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-10 03:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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