MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
" e; A; ]$ i& l8 s9 E& i) v# Binput mcasp_ahclkx,
2 |# F9 L/ e/ r' {/ b3 ~/ z: tinput mcasp_aclkx,$ d! _& x) ^1 q4 h' a
input axr0,; b. n& a, u2 q1 a. {

9 J+ ?0 `' S" S( goutput mcasp_afsr,( W( q" U8 O0 U- S! `
output mcasp_ahclkr,
( I5 B3 l7 C4 ?& S1 c  f# i9 Poutput mcasp_aclkr,2 K6 W2 P0 K& ^- U( i5 Y6 n. c
output axr1,
' `& G, n7 B$ ^, A5 H
assign mcasp_afsr = mcasp_afsx;, l$ V+ a3 W* J1 r5 m
assign mcasp_aclkr = mcasp_aclkx;
4 u  u) |% A, F- ~$ Q& j( X2 lassign mcasp_ahclkr = mcasp_ahclkx;
, Q. Y5 Y( P! I3 V! ]assign axr1 = axr0;

  |* i4 A  {' _! n7 Z7 Z
+ Z/ P- G) J/ u4 ?9 v
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
9 i% L5 W. y* \# u8 ~" d* v; s
static void McASPI2SConfigure(void)
/ {0 Q) f# V7 n' e{1 n6 u6 f) Y! s7 s" \( \. E, ?
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
4 X+ Q* ^! V; }/ WMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
$ @: |  A6 @' L! }  P4 sMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);1 c% g7 t) q7 R
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */1 ~8 Y5 u* }' C2 Q/ X, u. ~
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
4 {- b+ A* q( J$ M9 M4 PMCASP_RX_MODE_DMA);
, D+ R* r, V. p/ m2 x3 T* g( J/ zMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,+ X0 _2 m4 U4 j
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
, ^% ?3 J- l+ @2 c7 O: hMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ; i0 T' A6 [# h/ X4 m- y
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
' v& c) F# u0 A9 N7 W- U: eMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, & s6 \" H7 P/ W  C
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */0 v% f' I; F" ^# s% W' o# G
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
1 `2 ~! g* n2 {7 W, c. p5 W7 C% gMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
; g4 x# t: q; J& p) |. n7 TMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,3 ]# _$ Y$ c4 ]3 ^  H+ H
0x00, 0xFF);
/* configure the clock for transmitter */
/ ]( k6 J  O# [# C/ m8 w/ @+ K* d# ]McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);# F: l3 N! d+ `( z% b' [
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
: G) G. X6 K: x3 E+ b) [+ P( KMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,# u' x* O* _9 t  l6 q7 q
0x00, 0xFF);: e; ?  |4 q6 l6 Y$ @, p7 Y

0 j8 w" ~5 U5 o/* Enable synchronization of RX and TX sections */ . a) a' @; ?' [9 r9 D6 P' @
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
7 X# j$ a0 F6 [. |McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
5 r5 ^  n3 t, [2 v5 s+ SMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
5 U- Q1 O9 R4 }3 s** Set the serializers, Currently only one serializer is set as
7 v# b5 i* T2 [4 ^** transmitter and one serializer as receiver.
! e. d. s6 S- H- y5 Y3 Z3 W6 u& ^*/" w3 j/ W! d2 p4 |4 e" x, e" Q) Z
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);0 F0 p" F9 x* _9 N
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
) L$ \2 l4 d3 L( P' S** Configure the McASP pins   q4 r" H, g& l4 s9 I! n& r
** Input - Frame Sync, Clock and Serializer Rx/ }" m$ K% f% Q) J3 x0 ~3 U7 C! B3 ?
** Output - Serializer Tx is connected to the input of the codec ) l7 [  [* ?) J3 h
*/
4 s/ X) I& c- D( @8 fMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
- }1 F# e" B9 tMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
, d1 g3 U4 d6 x& N# k9 r( mMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX; h# K* d/ Q% Y& C, S+ d
| MCASP_PIN_ACLKX: ~) U8 p9 U' p' s/ R
| MCASP_PIN_AHCLKX' W2 x0 ^7 n, G$ P; j
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */7 m& O1 |% r7 s
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
% x% R! n' G2 V; w| MCASP_TX_CLKFAIL ! J% D6 U" y0 q: ?
| MCASP_TX_SYNCERROR
: Z7 w! |# o5 ]- [| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
% _' E2 n7 `) O; B5 _+ `| MCASP_RX_CLKFAIL
- U" u9 g; u& ?# r* j| MCASP_RX_SYNCERROR : w+ F8 ]# m: C8 j9 [. z% k
| MCASP_RX_OVERRUN);% B" u' O& F6 Z' c2 A4 g
}
static void I2SDataTxRxActivate(void)% y7 N5 C& a+ ?2 ]! ^
{
0 Q+ Y5 \+ c4 s' M/* Start the clocks */
) k; J. B2 Y5 i3 M0 T- BMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
! @8 R! T! z, M" P" @, P  lMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
! r' j1 E6 a: i1 J3 s; `EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
. n( D- T1 m& B. p) tEDMA3_TRIG_MODE_EVENT);
# Y0 U+ v' U* N" F# m8 l: j* cEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 6 _& k( H0 M  e/ g5 E) W
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */: R9 t6 V9 h9 `& }
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
0 ^  t; R3 h# d: [+ d2 PMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
9 Q0 g1 C% i3 ywhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines *// M4 A$ u- H. _1 \6 G: A' F
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
$ b! F- x1 X: t- h* r( tMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
0 g) q  J6 O$ n# u/ P2 }9 Q}
: W0 a0 s% T. @+ a" Q
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

' v; N* w8 q0 S  ~1 t" c9 W
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-30 07:31 , Processed in 0.037345 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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