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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1215

积分

金牌会员

Rank: 6Rank: 6

积分
1215
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,: I) W0 @0 Y* x' g% g, u+ B
input mcasp_ahclkx,
; n3 r) Y% g/ ]6 W( i6 J7 Kinput mcasp_aclkx,
7 W! D  Q3 }! f3 `; binput axr0,! T/ T3 d: B* _( c2 ~8 m0 q
- f; W' ]' U- ]; x- g
output mcasp_afsr,
! c" o3 Y4 B: M8 a% Eoutput mcasp_ahclkr,
" L; Z1 W% a  ?9 i( Y; U1 [output mcasp_aclkr,
/ \9 j) Y4 d" _' Q7 goutput axr1,
* G& N5 t  u9 q0 M( W) M
assign mcasp_afsr = mcasp_afsx;
  U4 W* ]  R$ E, E4 V0 V6 \assign mcasp_aclkr = mcasp_aclkx;+ d8 D& R: I* b5 d
assign mcasp_ahclkr = mcasp_ahclkx;2 Z6 a$ B4 O  V+ m
assign axr1 = axr0;

/ J) N/ Z8 {3 X% q  w' W, a; U
2 F$ j/ N1 b, {* j# m" s
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

+ t  B* }! b2 r6 {6 l# G: f$ k4 g
static void McASPI2SConfigure(void)+ x$ B% o9 p5 [! W7 U& l# H' A  O
{  n; y8 g  S7 u0 u
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
/ ^* ~, o$ s/ E5 F+ mMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */4 P) `+ @' B; a* _- l
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);; g! {1 e  E( {6 ^# _6 ^3 H
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
* P9 O; M9 S) X. B3 T) qMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,. m8 I. H4 x- f3 G7 K
MCASP_RX_MODE_DMA);  r% Y" J7 L. E5 X0 W
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
: y2 u6 P+ k6 G/ a' j8 ?* @4 l1 jMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
0 n( B( q1 H/ j& YMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 3 x4 u5 t9 E, K6 O0 Q
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);2 _' B9 e8 f( V
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ) s/ a# b, ?# j
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
! T5 _# r6 z$ i4 MMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
7 L0 V# L% \8 ]; v& M: oMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 3 `' g5 B8 O# Z, g
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,$ L; M# o* G2 J4 R! \8 L
0x00, 0xFF);
/* configure the clock for transmitter */1 u3 @0 s7 C, K# J" W4 y  K/ P
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);# h9 D4 d5 k/ j" e
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
& b3 Q! ?& w+ |: v! yMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,2 f/ B, a' k, J1 I- I3 p
0x00, 0xFF);* `/ Y! B( c7 u) P
  I4 V3 X) ~5 ]# ?
/* Enable synchronization of RX and TX sections */
, R& s8 M7 d) m+ E' N+ Y- mMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */1 E% P$ Q! n4 K2 r
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
% c% f6 N/ E+ ^# }8 @% ^4 QMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*$ ]5 G2 f$ u9 D
** Set the serializers, Currently only one serializer is set as
1 x2 [- v& K7 {4 @* K5 T/ e- a0 T** transmitter and one serializer as receiver.% z6 G, p# I# H" b5 w2 d
*/) J# V8 ~$ S7 U7 u  _
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);' {4 x8 K) X  d7 M5 x% s
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*2 t2 `* ]- `3 N/ w
** Configure the McASP pins , ?7 v$ C) S+ s, f, O' b& u1 R/ |
** Input - Frame Sync, Clock and Serializer Rx
8 D) y5 n6 l; N** Output - Serializer Tx is connected to the input of the codec 4 k2 z, e& U! Z( o; y: ~8 E
*/
' t6 X: p) f: D0 _McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
' T: b! ?: n0 M+ K, qMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));/ y4 `% Y- ?+ M' K3 |
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX" i6 T  `- ]" d0 h- [! J
| MCASP_PIN_ACLKX* d! B: ^1 _6 t0 g: u; \. ]
| MCASP_PIN_AHCLKX. B! U3 l% e. |# w/ C- D8 L8 q
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */& g, u! m/ n; j+ H  _* P2 T
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 4 d/ c& E5 o, ]; F' [$ R
| MCASP_TX_CLKFAIL 3 x& u, o0 ^- R( E% x+ o$ l9 s5 T
| MCASP_TX_SYNCERROR8 {3 L. X& v, j6 f  z& f9 ?& c
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
: t  Q8 }) F+ T6 h6 p| MCASP_RX_CLKFAIL
+ c3 d' x: L" K9 D1 E* l% C| MCASP_RX_SYNCERROR
' w/ t6 z" C& F| MCASP_RX_OVERRUN);  c% ~! |; S: \$ k. [5 e; o
}
static void I2SDataTxRxActivate(void)9 ?8 E4 c9 r" J' v  Y
{5 Y" J; G/ w. S7 p
/* Start the clocks */
4 j3 ^7 B" r) L: UMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);5 w* X& ?: ?5 n/ V: x2 K4 y* h$ K
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */! F1 Y, T# ?. l
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,. J7 K; m) t1 C! S
EDMA3_TRIG_MODE_EVENT);
% I$ h$ Z+ ~$ l" lEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, . Z! _, `2 |" l6 M; K+ Q; W
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
! \! n: T1 T7 M6 ~- q7 bMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
7 {, _3 E5 z8 M4 }& p, jMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */2 O2 i9 D; N4 X3 q- F/ D/ ]5 w
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */. t' f6 U& j: }1 a
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
5 l0 s1 c; f: L9 h+ s- RMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
/ n/ }, ?/ U( a$ E}
; W& S" m+ _7 y
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

# u" Q2 q' V! D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-31 11:50 , Processed in 0.040480 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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