MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9591|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1214

积分

金牌会员

Rank: 6Rank: 6

积分
1214
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,. n7 j9 ~* Y1 n2 F: t/ X
input mcasp_ahclkx,
! c9 X% t+ A, Linput mcasp_aclkx,' L( u; i$ L7 e8 Y# b
input axr0,
$ E+ l, g2 c& J! n4 c
% Q) s4 X* N: R1 N  {: aoutput mcasp_afsr,8 z3 |- i7 i8 K9 T* y
output mcasp_ahclkr,1 z) s" `. H. q
output mcasp_aclkr," j5 }) u% y7 w3 {7 F
output axr1,# f! T1 M6 r# g
assign mcasp_afsr = mcasp_afsx;: h  g1 D8 E2 f0 A; e: Q. S) J& b
assign mcasp_aclkr = mcasp_aclkx;
: K2 A* X1 [9 s: W% passign mcasp_ahclkr = mcasp_ahclkx;: k$ ^( t9 |  v: a" |% P+ b
assign axr1 = axr0;
$ {$ |2 Y- f& J
, S% g5 h: e! {
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

% w6 W# O. F2 R5 L- W
static void McASPI2SConfigure(void)* ^  n# t' H8 z& w( B: e
{
' x/ A; F" E  g4 V" DMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
* w; e+ L  ^7 z) T# DMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
+ a2 }) v  `/ X+ m, j2 F% c9 \McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);! |* m( n$ `. H) c
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
- y4 {, S5 h0 g% P$ M9 }( w' dMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
1 T# N4 m2 a+ i9 f1 vMCASP_RX_MODE_DMA);5 h+ b) z# B- t. C2 O) a
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,2 o  D0 }1 |% O$ f' X. X- ~: k
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */0 K! I) A9 q) L: y& J& T( W4 E
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, & F. z# |: C9 T# c: F6 p4 G
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);; o* s( @8 W3 K" P* }" X! F
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 3 n) ~% \& w6 L! U! R
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
$ T. ^1 d  C( x3 c8 IMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
6 V5 z$ A( m" |McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); % R# K+ L! W9 i- a; h( _
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,4 ^7 H1 R: S' n( W
0x00, 0xFF);
/* configure the clock for transmitter */
( S$ P; p- J) H; {# T* HMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
( t# H# H% C) ]9 K  M1 r' AMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ) Z+ M9 ^5 ]+ [/ ~4 q% Q& v
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,  l0 K+ Q2 X8 T; z% D: L
0x00, 0xFF);3 i1 \, x9 f# w
: g' i" T$ L, L- h
/* Enable synchronization of RX and TX sections */
4 z5 Z  X- {0 F2 uMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
/ {; z0 J, Q+ N7 s4 `5 Z. i' CMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
* w" Q; d7 s9 y3 DMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*% I  ~& U. v7 W9 \' t
** Set the serializers, Currently only one serializer is set as! V* N( f3 y2 K8 k* i& E
** transmitter and one serializer as receiver.
+ b" P8 V, n1 Z9 y*/8 q4 Y, H6 s5 ~! |
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
2 Y) Z" Y; x$ ~9 |+ `# f: UMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*( v4 w9 V: u( y' }. j5 v" w/ C4 u
** Configure the McASP pins : C' z2 R; I; t0 H
** Input - Frame Sync, Clock and Serializer Rx
, b' J+ Z. C( B- p** Output - Serializer Tx is connected to the input of the codec
& Y' J" `6 \$ n1 L( E*/% ^( @, d4 E& W1 q( Z* D
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);* |1 h' h4 I' |; U! n! q' i* `' R
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
( f* L- D, D/ ~  H' W) AMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX, Z' J( H$ _( |( K+ `$ I
| MCASP_PIN_ACLKX
0 q" W# B! F) M' H- r, l| MCASP_PIN_AHCLKX# Q. f( Q2 S$ X7 A; y
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
$ C* Y& s- t! lMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
3 s$ }# w1 v4 a3 r| MCASP_TX_CLKFAIL
: n4 R* L7 ~1 S' k| MCASP_TX_SYNCERROR
) I# i" d) d8 C$ |( p| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ( ^9 T+ m1 o( ]+ ?
| MCASP_RX_CLKFAIL
5 A; n$ P! j  h, \: k| MCASP_RX_SYNCERROR ' l: C6 I4 q. |' ^0 \
| MCASP_RX_OVERRUN);4 e! D4 s' E% E( N# D$ s
}
static void I2SDataTxRxActivate(void)+ f* F( o' [- ~* I$ P
{& R4 E4 b+ E5 }9 [( k! s/ v( j4 X
/* Start the clocks */
! V) T1 b. I4 N2 G1 T- x, yMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);+ |  K. P8 Y4 ]' ]
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
3 }# ?2 U3 c8 N5 KEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,  _8 g  G- e0 W4 Y
EDMA3_TRIG_MODE_EVENT);
" f. I$ L; h3 j! w; e3 KEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ( r* Z8 f" x3 h. c% R
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */% _% N2 F, o% q7 c
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
! B5 O  h" @3 H, qMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */8 C5 I2 O! j4 E4 u/ L4 I
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
( b2 g& ]6 }' b! m3 nMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
. c# t) L% |) o! p: h3 m) ~McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
( c5 x0 Q0 S$ b( k}
; i- s' P- w6 o( ?( v
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

' b' a6 H* c" y0 n1 {8 O+ s( k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2026-1-14 19:59 , Processed in 0.044088 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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