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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10136|回复: 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," d! ?# }) f* c) z
input mcasp_ahclkx,
8 I% B, h* D2 @9 [; j6 xinput mcasp_aclkx,/ g- n/ K" X2 U- E! \4 C; H- K  O
input axr0,
, q9 i/ N, a" R# D% V# B9 T6 T8 p: l9 o% j
output mcasp_afsr,$ u- ?8 ^$ m+ I8 F9 r7 J; j
output mcasp_ahclkr,
- D# d* {% U' y: O3 U8 y% Ooutput mcasp_aclkr,
, N3 T" U2 x& f( e, Eoutput axr1,; R+ g9 f! F1 @( q0 l
assign mcasp_afsr = mcasp_afsx;
0 c* ]& r' q+ @& d% e% H6 ]assign mcasp_aclkr = mcasp_aclkx;
& o, u) e/ c' d' ^0 @+ hassign mcasp_ahclkr = mcasp_ahclkx;
2 J; i% M1 z* yassign axr1 = axr0;
3 O, R8 H4 O; {. ?5 p. V

7 l* u, Q  t3 E6 d! Q: Z( y
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

% m* t. j2 k- i4 S0 S+ x
static void McASPI2SConfigure(void)
! ~: x/ O: [: i2 I% d/ w{  ?5 k9 E4 X: h8 a' F0 `! i
McASPRxReset(SOC_MCASP_0_CTRL_REGS);- L, `$ ^6 T( e' d) P# f1 {  a, p1 }
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
+ ^" I3 D4 `. G: a) m! j# S8 I' eMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);3 I) L4 N( O3 `+ M7 |) g
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */! r7 M3 y% z# [, t5 r
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
: L% k& a6 n. m/ r+ `/ j! u: lMCASP_RX_MODE_DMA);
+ w6 z5 ^- l# @: a# A0 u0 ]McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
$ z" x$ ^) R4 mMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
0 c3 N. |$ G) y& OMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
& h9 w7 Z& P8 e5 s  QMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);9 J8 H5 ^  A* W1 a- K
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 8 i7 x  f( @2 F* g/ u
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
# h: z1 G9 }8 Q. A+ w$ v' aMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);7 w9 A0 v4 L2 I/ V
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); # q: Y) q: q- }' g
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,! S3 o) p4 @% E/ `) C, W
0x00, 0xFF);
/* configure the clock for transmitter */
) t! y% K+ F3 `/ y% k) OMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
; E6 z3 U0 [, b2 d4 G* Q# {9 dMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
4 T0 i) d1 j2 n) EMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,' t5 Z/ E+ ?+ D8 M
0x00, 0xFF);
6 ?. P* Z' ]/ W2 c8 k( D1 u3 P8 D- [8 f& w
/* Enable synchronization of RX and TX sections */ ! e3 F! N) m' J/ a& S' b0 a! y7 {
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */" V8 _6 m4 |; W  K  b( V
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);6 v! u) Z9 `# h- F: B7 E: X
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
) C: Q; y0 b: A" U* U** Set the serializers, Currently only one serializer is set as
. h4 f' q2 w% g* g+ h** transmitter and one serializer as receiver.5 @: i/ L% _4 I( @5 _# v
*/
" p, c0 i8 ]: @1 NMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
9 p$ I" b8 K+ R/ mMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*: N  `/ |! O+ y
** Configure the McASP pins 3 y( v% Z5 f) S, J8 F
** Input - Frame Sync, Clock and Serializer Rx& q) N- n- r) I8 \
** Output - Serializer Tx is connected to the input of the codec " O* Y! M' W* O- p: c5 `' m- y
*/6 Z0 r7 ~* U! o+ v& E+ v; O" z$ m
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
5 n( Y. l$ s# U* J  WMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
) {0 x' @1 {7 L" T6 oMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
! N, C! k1 H1 O. x| MCASP_PIN_ACLKX& e( ~4 `" h' z1 f2 ^# ^3 ^6 n
| MCASP_PIN_AHCLKX; c5 \7 M4 u7 ]8 r' @5 T
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */# R8 P. T  v# \; Y  T( r8 j
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR . q6 a, H1 w+ |4 S5 \: \" L
| MCASP_TX_CLKFAIL ' q; B' d+ j' y) m$ Z" T+ d2 d; C
| MCASP_TX_SYNCERROR
0 o1 O3 W) {0 R! ]) x5 E  R| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR . U: u1 Q' H3 V8 L( w" \) Y$ d
| MCASP_RX_CLKFAIL
% a: [0 L5 \3 E5 l| MCASP_RX_SYNCERROR
8 v1 R0 _0 Q' x& x| MCASP_RX_OVERRUN);; q! x- w0 m1 J
}
static void I2SDataTxRxActivate(void)  Q7 A0 a" c/ B  b3 p0 V2 I
{
! c  J& s) A) ?6 ?/* Start the clocks */
0 ^! F+ [$ a  z: y1 p7 R9 ?) FMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
7 Y" R7 X% k, M& t; Z9 LMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
& @& c' A! K9 N" Y6 A' b4 ]. cEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
9 n9 s+ ^0 m' R& K" k  l& Q: dEDMA3_TRIG_MODE_EVENT);
2 \8 k" S1 k2 V) u3 W; _! i! P) YEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
& s% B2 S5 A  j9 a! t5 bEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */" l- l1 U- ~& S0 V  v+ p
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
0 }% z3 l$ R/ BMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */7 h6 U2 O4 O$ ?2 C, ^9 R% }- N& C
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */8 J! x, N1 R9 f
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
( d  o/ T0 t9 U& P, w9 [McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
$ x, z$ l" z' U  @}
4 t7 r* a; [* O+ f+ d7 U, y
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

6 j$ J4 u. {! i$ D) D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-29 21:12 , Processed in 0.039457 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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