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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12213|回复: 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,3 e+ M/ I1 J6 P1 K; O2 B9 T* O
input mcasp_ahclkx,5 r; K( Z+ b. s3 x+ Y
input mcasp_aclkx,7 J- d2 {; e4 |# ~. \% V
input axr0,
% ?  q+ k. B, I) ?' z' G
: U& k5 S8 c2 w$ s' B- eoutput mcasp_afsr,( O" r; O9 ?9 x" _
output mcasp_ahclkr,
2 X, `, x3 b; d6 I4 X! ?output mcasp_aclkr,
; \6 v  I# L( b: O  u1 @output axr1,
7 q" f) X5 e  ?. t" x1 v2 E) z/ I
assign mcasp_afsr = mcasp_afsx;
* B( L# ~2 l3 e1 V! m  [* Z. Rassign mcasp_aclkr = mcasp_aclkx;4 l4 V0 Q2 d, L) g
assign mcasp_ahclkr = mcasp_ahclkx;& m! Y( g9 x& g; X8 q, `2 Z
assign axr1 = axr0;
4 q0 }. F7 M8 \/ D" P

9 k- |* q, F" G1 a9 j+ [0 _
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
: ?( d/ X1 O  V/ V: I$ n
static void McASPI2SConfigure(void)+ k9 D) o* e1 z0 n
{9 ?( X' J/ r- T
McASPRxReset(SOC_MCASP_0_CTRL_REGS);* f% Y0 J) o. a/ j- o- l* k" G: Y
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */9 d( a' b/ R/ I3 j/ h. k2 Z
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);( _+ K* U4 {" [3 C, u
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
; x) F9 y' K" [9 j( v4 N0 P0 @McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
3 `4 D2 C8 I% e7 {0 @5 bMCASP_RX_MODE_DMA);
% W5 L4 A3 M; i- b8 W7 FMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
; a+ q- P% ?/ _MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */7 t" ^" A; i0 v7 R
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
! \! P% T( [: I5 k$ s- X3 }MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);2 U* g% s# S# [6 X/ [2 e& S) o0 @
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
& a& a1 |* @2 [/ {2 y( @9 J, aMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */, S+ V: q5 x* I! C8 ?3 i
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
/ W7 o' l( ^6 o/ q! j- h) |- SMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
3 Z# @) ?1 \" e/ R4 V: sMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
1 f7 v8 k1 S& \7 @. A0x00, 0xFF);
/* configure the clock for transmitter */
" ?; n% K8 D+ G5 P" vMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);; j! V2 |6 x3 i' ~
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
% k0 h* M. V# ^- uMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,0 }* |, o, D) e0 M" ~4 r% c+ w3 ]7 ]  `
0x00, 0xFF);2 e6 b0 i5 D7 ~" U  L: Y9 u

  }2 @3 T' d' R5 h, \; l' a/* Enable synchronization of RX and TX sections */
( E( G  L  K: hMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */8 i% v$ @# E8 g0 |6 |
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);1 A. M, v1 L9 x
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*  |; L' B5 U4 x% h8 |
** Set the serializers, Currently only one serializer is set as
! I4 K( D3 E6 x/ u5 m** transmitter and one serializer as receiver.( n/ h# b, f/ \. n4 Q
*/
) P; ^) J% M. H4 l) |8 QMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
4 i% j! A9 p: ~. M. Z+ JMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*4 P7 K; r& W! q: ?2 W6 Z! f
** Configure the McASP pins
3 _! w; \: z5 {+ ^# L  a** Input - Frame Sync, Clock and Serializer Rx! h2 t; g4 b8 i7 {
** Output - Serializer Tx is connected to the input of the codec
3 X+ o+ l9 x0 p: [1 y*/, m* n" |7 _& B5 x( ^% ^: N  H9 B
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);. h* b" j" ]5 Q& |0 r6 j2 U
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));4 D4 c: `$ Q1 ]' K" ]) e* P
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
3 n. m" e5 P7 c- z/ S| MCASP_PIN_ACLKX
, D5 ~- V0 p- E6 b; d| MCASP_PIN_AHCLKX
' S) M1 t1 E4 ], E7 @1 p| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */, h$ i2 t7 z: H% G& I
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ) k& L8 q+ c6 E9 [1 p
| MCASP_TX_CLKFAIL   Q. b5 _$ `# \0 U! S  R% o
| MCASP_TX_SYNCERROR
, V) e, z0 g- a0 q7 M! }| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 3 ~9 e5 R: V6 s" d3 h3 @! J
| MCASP_RX_CLKFAIL2 A* m8 t! [7 ?
| MCASP_RX_SYNCERROR
8 \# I% N- V+ ]( C& g8 I| MCASP_RX_OVERRUN);
0 G8 A" I" \/ N8 O& D}
static void I2SDataTxRxActivate(void)% Z' |4 _5 q$ J% H8 ?' a
{
# n& X- V) g& h* B8 D/* Start the clocks */
) v: F: A" F" h" v8 L: |/ pMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);+ E% L$ u% {( ]. }! U
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */' s; m  u; S" f: w2 S- }5 B
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,, m; p/ U' d$ I9 |- T' I
EDMA3_TRIG_MODE_EVENT);5 Q+ U3 y+ C( J, i$ k7 _, D' P
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 3 _" @6 D% S% @- c; X
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
. M' ^4 H  h5 L/ `* j. v) iMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);1 O5 L8 n) v7 L; [3 V# @* T) ~
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */# c2 w7 f3 b( k  N/ M
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */  i! z  q9 d* f2 w
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);" v' W$ q& K$ T+ J. l: c: v4 b
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
  `  w% T- a2 ~}
& }+ y2 M4 A' V
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

7 ]8 ]  n9 u4 o* N0 U' {  |4 `
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-1 16:21 , Processed in 0.041097 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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