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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9983|回复: 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,
2 h" Z- l9 K+ Xinput mcasp_ahclkx,- c% B- U4 z6 q% Q% ?
input mcasp_aclkx,6 h$ y% U; W# D8 l' k/ Q6 B
input axr0,7 l5 l& m* }* C4 L! {' O
& S" m0 \" j. C- O3 Q
output mcasp_afsr,* D& `2 H" M2 a' u$ g* e# \
output mcasp_ahclkr,  B) c3 Q5 B' `8 [: B; F
output mcasp_aclkr,
/ @1 X7 ]) {) a+ L  boutput axr1,/ c' b2 G) S  b5 h, m# o
assign mcasp_afsr = mcasp_afsx;) n9 z/ I. H7 \- \/ a- W' A
assign mcasp_aclkr = mcasp_aclkx;
2 w5 H% U2 D( O# t" f! d9 y! Aassign mcasp_ahclkr = mcasp_ahclkx;- F0 T. x" [: i3 D
assign axr1 = axr0;
: p; r0 J1 z, O, n! E7 C+ w
  D- J7 `3 ]! a! M6 Z7 R1 j1 P+ D
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
( b" V  |7 [4 q8 p; w0 t2 j
static void McASPI2SConfigure(void)
0 j: J& ~; O- m8 Y0 x- g5 W7 m- y{1 g8 ]0 t+ w, D- g, H
McASPRxReset(SOC_MCASP_0_CTRL_REGS);* [3 F, {' L, U! w( G
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */) m* l$ L' J3 o0 D* ~% }8 o/ h
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
: T2 r# u# y: v% U5 n+ t( @/ e5 _, fMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
. C- B7 }8 x/ M# U  jMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
5 G* L) }# ~3 W0 `- {MCASP_RX_MODE_DMA);
. V, |0 @( S& N# ^+ P) x4 tMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
( c# }) Z, n5 f+ v$ D- X$ @MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
. ~# o$ N: D6 t* v& {* u- SMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
" P% \1 y' F4 Z# U! n& V! E, w2 [MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);0 e1 |: Q% A& u1 {
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
3 e; g4 |6 p% t3 [MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
# X" u3 Z6 ?' R3 [- [& s# X9 _McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
5 x; Y; k/ C; wMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); " }. z7 d; ~5 x
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,, p5 F) o/ S, O. R* D# B8 @- f
0x00, 0xFF);
/* configure the clock for transmitter */
7 i, J/ n9 ~' b/ HMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
# i: z) g- d* `* V) eMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
: S& O8 o+ G; ?0 TMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
/ C) z3 w! y1 Z+ v2 y0x00, 0xFF);
5 W8 L& j4 g6 u6 O
' v1 W8 [+ h" g; g7 g( G. n/* Enable synchronization of RX and TX sections */ ; T# i' @' f2 R% a
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */" ^% y5 Y! H3 z! J0 R
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
; a) ^! A& D" W8 W# C3 r+ L. C9 pMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*" i5 @% s9 \9 P7 |% G$ y/ L
** Set the serializers, Currently only one serializer is set as, b. D1 S1 T% J6 y
** transmitter and one serializer as receiver.
6 N: ^  P" V- p1 @9 H*/
# r* B' u; x& Y( s9 Y/ N$ \; pMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);7 \# j7 |/ g- B' j) F: ^
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*  @5 r% d" x) ?4 R7 z
** Configure the McASP pins
, ]. z9 J+ X( ], a6 k$ u** Input - Frame Sync, Clock and Serializer Rx: e9 m3 R9 P$ \8 b% H+ h
** Output - Serializer Tx is connected to the input of the codec
/ a4 L6 a1 x. a! b- c*/
# J8 z  g3 d; ?4 m" @) |4 KMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);8 ?. s& g5 {% ~, t( o
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
: W  u/ k0 [! o4 U8 C" J+ gMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX2 K$ H3 J0 D7 R* ^
| MCASP_PIN_ACLKX0 j& n: |$ ^5 m; ]# R& k
| MCASP_PIN_AHCLKX! H/ r: ^8 l3 J
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
  T* y& c( g3 s: HMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
; f# X' K& l" _1 I| MCASP_TX_CLKFAIL * }# T6 K( h7 b+ v8 u5 A& r
| MCASP_TX_SYNCERROR6 y  |! y, A: Y  `
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
2 U6 Q& R7 [& r' k, b| MCASP_RX_CLKFAIL
; d2 r. Q7 @# s5 p4 E$ Y6 W- h| MCASP_RX_SYNCERROR , e2 @0 x6 t9 t1 s
| MCASP_RX_OVERRUN);: D* _9 ]4 \* ~" U  |4 ?- u; I4 o
}
static void I2SDataTxRxActivate(void)
% \' A2 S2 U; M% J{" v0 I8 b8 v$ G& i
/* Start the clocks */3 n3 o5 T6 @( c
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
" f0 j6 i: k! l* }* F1 D, xMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */) ~0 F! u; h8 Q5 P' I
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
& Z" b! {" r# |. l  S% V5 AEDMA3_TRIG_MODE_EVENT);3 H' e/ f3 h  o9 k, r( {
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ! D; p- B5 h0 c; e* R4 @
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
% e4 b! m, j: }0 d! ]' h/ T5 IMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);9 X' J6 G! _  [
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */% @9 R4 r2 {4 I. \8 J0 E2 g
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
/ y$ E8 E8 Q- G( b8 I% LMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);1 D7 A; A5 W6 _% C' E# P
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);; ~, g) z) Y& p  o
}

0 H( u3 R* }0 o& q) v9 B
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
( w/ H% ^  h, V, W9 K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-25 19:40 , Processed in 0.040667 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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