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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12951|回复: 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,: G* a: x4 ^9 }
input mcasp_ahclkx,0 L  S& E+ f& M4 R
input mcasp_aclkx,
4 H9 s. \; ]9 ^5 ?1 X. vinput axr0,! }" d1 E$ K6 m3 f& h+ B

7 t1 T/ d: J$ ~output mcasp_afsr," Q. t( Q  e2 X3 A! X* J; b9 T
output mcasp_ahclkr,/ ^$ ?9 Y3 T+ q) W& `# O3 J
output mcasp_aclkr,! P/ s6 V( g8 P
output axr1,
2 |' G1 I( }9 D! E
assign mcasp_afsr = mcasp_afsx;
$ q- Y) t9 e' W/ y. X7 M. C0 Dassign mcasp_aclkr = mcasp_aclkx;7 q$ O. Y, ~$ C1 C; }
assign mcasp_ahclkr = mcasp_ahclkx;6 L6 [% L. k1 Y
assign axr1 = axr0;

7 K; m8 V4 E0 e* \2 I
( a) o6 e( F& y
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
7 h, J& Y$ `5 H- U5 l# \
static void McASPI2SConfigure(void)% _% v. v$ p4 N
{- @$ _+ v7 D/ O1 ^* B1 ^: l
McASPRxReset(SOC_MCASP_0_CTRL_REGS);( K$ e5 V( A" y( I: C0 p; ~6 h% ~
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
1 N4 e# M* `$ C5 q" Y  r7 qMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);$ o2 h6 Y& ~1 G9 R
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */* e! L7 V& h" o4 G
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
4 a8 `. _, |7 zMCASP_RX_MODE_DMA);
' m0 ^5 q3 ~4 z4 rMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
* S; \* h2 K2 D) U' D  jMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
& S; L0 j6 l' dMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 6 }; ]! M3 R8 W: J+ i
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);8 \; w5 B7 F+ `
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 4 G1 I) |6 O) u9 o/ v) |" A9 a- J
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
. W+ o, [( e. g% }- G$ I( XMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);0 z( [! @, E1 @: @$ D
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); # e' x$ a) a% \' `
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
3 d, `/ l* i1 B% p; a9 q0x00, 0xFF);
/* configure the clock for transmitter */& G  m8 h3 T  x2 Q2 _9 o. f4 C4 o% m
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);3 ^+ J& x1 @% O* v, T
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
& U1 S0 t$ E/ B' K0 \! m- A( ZMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,' h! y0 a7 x; g9 S( a+ J' `) g
0x00, 0xFF);
( j- z- L7 I% w5 @# b3 `% _6 N4 ]% l, v; l7 a1 g& J. I# s; v
/* Enable synchronization of RX and TX sections */ ' D0 }2 `# Y6 |" I  Z. x, D
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */; T, _. x; S/ K  c" a% ^
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);% f- C8 \; H/ O1 {  v8 A& o% d9 M- `
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*! E/ k# C* ~5 V9 l4 Y4 D4 v
** Set the serializers, Currently only one serializer is set as, @1 f' y. @# C
** transmitter and one serializer as receiver.: t& F! z, H- c) U4 z2 {
*/
6 o4 p9 L' r6 q: ~& ]" |McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);) P; B. |4 |& c% z4 F& B6 z
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*6 O5 a& l, {0 f
** Configure the McASP pins
& A! m8 s4 d8 k* n* ]** Input - Frame Sync, Clock and Serializer Rx/ x1 c% d0 k- d: S: B
** Output - Serializer Tx is connected to the input of the codec " [# \7 w" B* t* Q2 V- Y
*/  s" w2 }1 |2 j
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);+ H% q* L# I2 d7 b6 O6 @* O
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));% Y+ [7 C- o* _+ `8 [, Y5 ]/ m9 L6 L
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
) }" F! v9 T; {| MCASP_PIN_ACLKX% L( W0 ~3 z! R% |- B/ o; q1 f% O
| MCASP_PIN_AHCLKX
( H/ ^4 ~$ P7 e% v2 a, k- ]0 Y2 x| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */* C/ t( k5 s3 A5 r
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR & m. q2 ^1 W( a. u
| MCASP_TX_CLKFAIL / R4 V% C: p2 u) ], t7 A
| MCASP_TX_SYNCERROR
/ @4 n2 f+ W7 ~. E* w| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
1 V% p7 s! l$ u7 V) J| MCASP_RX_CLKFAIL
) X" l& j3 h! U- N/ G| MCASP_RX_SYNCERROR 0 [, K8 a- r8 m2 Z, o+ K
| MCASP_RX_OVERRUN);
. E9 g* D9 p# K6 b" M}
static void I2SDataTxRxActivate(void)
. \2 k* t0 r5 i{
, h! X2 I" A, Q/* Start the clocks */
! T$ Z" k! }; ]  JMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);9 I' \8 }! `2 X; \& y
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */4 h& v* i# @8 p+ G4 \
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
7 P  m& A3 S) K( V) LEDMA3_TRIG_MODE_EVENT);5 |8 l6 ~$ ?. k9 ^  Z: l: }- z+ {' g, Y
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, # L7 @+ l1 w) u3 }7 D) a2 C, W* f
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */% M, g2 q$ r; b" p1 B8 ?
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);) ~) b7 L9 Y6 z3 o
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
7 a/ \. O4 [4 C2 E2 k, T* F) Bwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
- M2 {  }/ I6 z9 l  H5 cMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);2 h0 L3 ], u# z; g! j, ?
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);" l+ }0 \7 B2 N% Q+ x
}
, j' u! N& ^' c
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
1 m: A1 }0 G8 r, K3 }1 P/ W( `# O
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-7-26 00:34 , Processed in 0.042092 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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