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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
" E4 @3 E9 I7 b& A# tinput mcasp_ahclkx,* X- I5 P6 h5 G# {# f4 z
input mcasp_aclkx,5 T3 e6 v- b1 J7 W
input axr0,- j3 p' B. e  t6 ^' S! f7 x

) M8 A" W% a) r/ ^" W- P6 {output mcasp_afsr,& u# Y0 H( l1 N. e5 j6 z
output mcasp_ahclkr,$ o0 j. y6 d3 N" `5 g
output mcasp_aclkr,
4 O( i1 l% V& j+ woutput axr1,2 y6 |& q& n5 W) a; B, R3 r3 t9 Y
assign mcasp_afsr = mcasp_afsx;
. l1 t9 F6 S- `% o8 W3 e0 N& G+ xassign mcasp_aclkr = mcasp_aclkx;% d$ _, C$ l# g* Y4 J! [$ \
assign mcasp_ahclkr = mcasp_ahclkx;
8 q( k1 c8 G) g' B: Fassign axr1 = axr0;
1 B6 B3 ~4 I$ m) l1 ~

* b) e- d) q" \' |4 J6 V+ b! W
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
' L6 C' f- {: t+ B
static void McASPI2SConfigure(void)! d# J# R- R: i, w5 K
{" z+ g* `( C$ C; R; q) K/ Z7 ]# _
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
. [1 A, d+ t$ e2 B3 e5 cMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */! ?/ G0 g# L6 j- t+ X6 Y7 \2 S0 E
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
$ ~" j$ _) T3 w* t6 A: h- _6 QMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */" @% |" X- W! f# X: R
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
- F1 T) a* b3 v' Z- ^MCASP_RX_MODE_DMA);  W, D) u% k3 F# X
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,) |( K8 r2 ^& I
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
" ?. P' D0 X% |2 lMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, % |7 T# e% g8 p0 O) G# x
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
6 [$ Z- ?( }/ V) Y, E. fMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 9 V6 e1 P" [7 ~1 [1 ~( o
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */3 O5 ?3 |. b* Y3 e, g0 K
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
% J+ k: M' h) ?McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 8 f) L9 D+ r7 n5 [0 e9 q% N9 u/ V
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,2 {2 S9 [, q3 u- Y- z
0x00, 0xFF);
/* configure the clock for transmitter */
4 p. S3 n% P: L* fMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
& j) t7 A1 ?# Z0 P5 K5 ZMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
1 d% w( ]! P# L9 n& WMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
0 B) |3 H! D) ?$ G8 l9 d' W: K0x00, 0xFF);
0 T9 i) I( Y; u1 R# H& Y: T' \8 q; |; [9 C8 _  K) {
/* Enable synchronization of RX and TX sections */
: s( f. r' U! |' c$ y( sMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */, a; U( h( W, a# K6 f
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);. S4 H( b$ f" a3 p" e: o
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
$ i: D  J9 S& c, [** Set the serializers, Currently only one serializer is set as* }' ]% a3 ]8 M2 }" `! B
** transmitter and one serializer as receiver.
9 o# S8 E" _$ i+ U*/
# o4 `4 X( P8 GMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);! F$ ?: p5 `- _/ l% {
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*6 [" @, ?. Z, h- y# @. G
** Configure the McASP pins
5 T" i0 n% z4 ]1 A, @** Input - Frame Sync, Clock and Serializer Rx
' K" s2 a: d7 |: Z' ^** Output - Serializer Tx is connected to the input of the codec
' N7 y/ ]$ a% r, ^, W+ y*/
# B! M$ v+ m2 x: u* CMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);1 [2 e0 L  m( u/ k8 s- k
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));# d3 R% ~9 ]  Q& Y
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX& _( o% p2 q( L
| MCASP_PIN_ACLKX
/ v- g# X6 N/ z8 x/ t  S' L! T| MCASP_PIN_AHCLKX0 T# l, }- ?8 J5 ~, |( I
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */# g6 s- J3 Z) a. Z7 Y) V- K# v* Q
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
# A5 Q' _. {5 `: [$ w4 g+ Y| MCASP_TX_CLKFAIL : G2 t2 U  Z: I  `8 n; U3 P; o
| MCASP_TX_SYNCERROR6 V: x0 |1 M+ A( z; n# D' d* A: ]! Z
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
, x  b) E; ^7 O! Y) K" X  N| MCASP_RX_CLKFAIL# Z+ w, x6 [( I# C; L
| MCASP_RX_SYNCERROR ! }" f; w  O+ V) `1 S0 n, x3 ?
| MCASP_RX_OVERRUN);0 g3 K0 a, i9 F+ E' j" U
}
static void I2SDataTxRxActivate(void)
% \* g, P5 b$ V! u. T* c; A% o{& S& ?" u& j' s5 k" r; i$ @& {
/* Start the clocks */
+ @. }3 a( B5 n/ F5 PMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);- C  l; i* |+ [1 a% x
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */) O' B+ d7 O6 |3 ?2 R7 ~4 A- F- T
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,$ h; ~8 f& P* i( u/ T" ?. M; c
EDMA3_TRIG_MODE_EVENT);7 G8 |1 e% l9 i2 D6 Y
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
& h3 k$ [# R) I  |& iEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */( f4 t. z9 b4 J, |
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);& d/ r) Q8 I/ Y/ O) ?1 r4 ]
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */% K3 L" v2 Z' i7 q; x8 H
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
- C0 e" X" V6 J" L/ d0 s( eMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
4 F& v+ I# g) R0 {McASPTxEnable(SOC_MCASP_0_CTRL_REGS);. }" v7 Y, F( s; v
}
  s$ I& n) H9 w8 W. j0 c( }
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

& L1 @8 f8 b( [9 p1 X: |* ?8 U
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-11-13 18:33 , Processed in 0.042482 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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