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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10464|回复: 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,
! R5 I: m* q1 |5 [input mcasp_ahclkx,
( @+ ?: S3 J: einput mcasp_aclkx,* |* O- I: l1 `) I5 k
input axr0,
# U8 @0 W# |/ ~) a2 u- i, a4 @
( O" H* u8 c2 v4 }; woutput mcasp_afsr,7 \8 b/ J/ e$ j4 @' F0 t
output mcasp_ahclkr,; E0 X* r, i$ v
output mcasp_aclkr,
/ b. f. m/ B' O$ l2 G3 K" G0 ~output axr1,; |& f9 D) e$ t
assign mcasp_afsr = mcasp_afsx;! Y$ C0 F! h4 R5 |1 F1 }
assign mcasp_aclkr = mcasp_aclkx;; R- N$ O) l! n. W
assign mcasp_ahclkr = mcasp_ahclkx;
, T/ O) x7 G9 U- l& Fassign axr1 = axr0;

4 p9 k8 P$ e( w, D; ~7 {  U6 |9 O  _- H+ w
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

+ L# z9 O% i* y4 Z
static void McASPI2SConfigure(void)+ Z( ]8 e6 y" T2 c% Q+ T) l
{3 [7 y- f0 i& f3 x
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
1 ~$ [$ \1 f! l2 I2 M0 _McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */5 d2 G1 n: e) A' i% ]& x# }
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);& x! K0 [+ h0 p' b3 T& ?! _0 f
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */5 P1 q* G2 y9 [  ^
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,' l$ ^* a8 g% s/ ]0 G5 D/ Z  H
MCASP_RX_MODE_DMA);
( n) p4 H% }' s$ o9 L5 hMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,3 g5 Y4 R2 N( x4 A$ k$ @) [9 S
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
7 d8 J6 S! ^8 Z  DMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
- L$ @1 R3 M( I8 XMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);- x( K7 R4 T4 M, A
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
/ R8 Q, `0 N# E  y; {4 V4 }/ g' cMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */: c: d! I5 X& B& u; a3 _
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
, k7 }8 d% n2 e1 C2 PMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); % r* e1 n# e! O3 e8 `. z/ F4 m0 M7 o
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
  W' Z! j" z( r& f0x00, 0xFF);
/* configure the clock for transmitter */
/ P* d/ k; w9 @0 x* vMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
* B- b$ Z$ J6 B$ e! o+ [: ]McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); . U1 s/ i  q# W0 ~  k/ U
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,8 R. P9 T+ {* P% ^5 B
0x00, 0xFF);9 n' o" s# l4 ^4 F/ u. \, K  h: D

6 h  A" r2 {: ?1 M! Q/* Enable synchronization of RX and TX sections */
$ J# c( F& X/ m5 ^5 ?7 L! XMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
, V: w: W, x! _8 f/ L& X! p  QMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);" `5 q% e  a; a3 ~
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
/ r* ^, U' d" L) G/ l2 c** Set the serializers, Currently only one serializer is set as9 _7 a$ _* ^7 X/ p/ u! V
** transmitter and one serializer as receiver.
" v  h# e" b$ ^; P% @' C*/
+ c  B$ h+ L; vMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
6 T% t2 D0 \' n6 _/ O. \' DMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*2 W( j3 r( Q* w' u
** Configure the McASP pins 0 S; p7 a) H2 x& o
** Input - Frame Sync, Clock and Serializer Rx
% w3 M# A& s! j7 W7 r- o1 C8 b** Output - Serializer Tx is connected to the input of the codec
1 _6 p6 _& O: r- @, L( c*/: Z& |2 x: i, J( j
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
5 ?4 s" W; c1 SMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
7 J/ E; r- ?/ {McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX; H  f1 K- p8 E3 \  S$ I$ m) f
| MCASP_PIN_ACLKX
+ F8 _1 S- E. n8 S* U6 h* H| MCASP_PIN_AHCLKX7 c- X7 ]7 H* S
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
1 k1 U6 K& i( m7 H' w" gMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
1 D4 N% ]4 ~: B. l0 _| MCASP_TX_CLKFAIL 0 j! A0 W/ H; F, j8 Q* |
| MCASP_TX_SYNCERROR
5 P. U+ v  y) g9 g) F) t| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 4 Y% Y8 e! z$ S2 p2 G( A
| MCASP_RX_CLKFAIL
! e+ t; K* x8 j| MCASP_RX_SYNCERROR
- K0 g4 I# J& G7 ?5 r. g| MCASP_RX_OVERRUN);
/ e) u  Q- b( A' |$ b0 f* i}
static void I2SDataTxRxActivate(void)
3 r) K! r$ s7 C& p{6 i6 M# L( q1 g' Q4 I
/* Start the clocks */) C4 a7 [: b. J4 w: w4 {
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
2 W6 r5 ], X+ X8 h( u0 y; G) u$ UMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
& l: l, S) n, p2 fEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,1 F2 P8 B, A( d+ L2 e
EDMA3_TRIG_MODE_EVENT);) a& [: H# x* z  F  u4 b- x
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 1 `  V0 y" r) U& b4 {/ m
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
+ y- N* s! c6 I/ ]. NMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);/ q9 b- u  M! v9 T' c
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */0 _( V9 H* p+ Z8 e- c" H
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */: f, X2 S$ p2 A, O( F
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);' u! J/ r* e* x/ s! _0 x  h( H- A
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);9 @6 E& y; _/ F3 y9 L1 z4 q: [& b
}

3 q. z) O; m( w, }' o
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

  t+ E- I. ?) q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-7 13:30 , Processed in 0.075332 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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