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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9095|回复: 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,) z( q  k0 I; G/ U* a' N( o+ S
input mcasp_ahclkx,' }" z: C" \* K: L
input mcasp_aclkx,
8 Z- S4 t, D( r% `" p- @input axr0,- u# F8 K# K4 `+ O4 C- s& T

8 K' L+ E3 A* G5 n  X# loutput mcasp_afsr,0 e  U6 J9 R0 }4 {
output mcasp_ahclkr,
% R9 c0 _& t3 c. F7 P3 x- Routput mcasp_aclkr,
- F- o' P) F( Y' E. f0 T* |output axr1,- q  h- B: c) x0 R6 t% v$ z8 A
assign mcasp_afsr = mcasp_afsx;
, Q. J# P! f8 T7 r( Fassign mcasp_aclkr = mcasp_aclkx;2 c( W; H/ J/ c3 i8 `
assign mcasp_ahclkr = mcasp_ahclkx;# L0 T4 C  j! p
assign axr1 = axr0;
; J& F$ x" p! a4 W

% {. f' t6 g0 O- }
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

- U1 h7 R3 G6 B" O; a- |" P4 T
static void McASPI2SConfigure(void)
# b% x4 v) w" f) ?{' D3 ?% P7 z, [2 u, [6 q0 p
McASPRxReset(SOC_MCASP_0_CTRL_REGS);' ]! @2 K# w1 ?8 L7 P# D- M8 J
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
4 F. u2 u; }% g8 a  }# O+ TMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
$ x. Y7 N6 ^$ G% ~0 ~( ZMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
" Y2 N- ?/ }" c% s1 w9 ZMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,* z- V* Y' g% B/ X. x8 q3 c
MCASP_RX_MODE_DMA);" L1 E- P$ M& n2 A% f; _
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
7 V! N% B+ B$ tMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */  s1 K1 z9 m) R% o
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
9 V+ b. ], d4 P; d/ |MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);6 K2 W. P. `' S' v$ |5 O
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
8 d7 f/ N4 j8 e3 W3 Y0 wMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
" p; {/ ^- I- C( g! hMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);( J: O3 E2 W( ~- x
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
& `( s  N& ]5 J/ ?8 l/ fMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
  Y- P: C$ y7 k( M& M0x00, 0xFF);
/* configure the clock for transmitter */
9 G% a! \7 Z9 a' iMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
$ d* L$ w! S' _McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 9 @1 _  M9 Y- \$ U0 X* o+ [
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,' V7 L  f" a: [
0x00, 0xFF);: x0 m: [/ S( A% P! `% {$ ?6 Z
* S" Y3 O8 X  P1 @3 _" z' c
/* Enable synchronization of RX and TX sections */
. n$ K; W& M( G( g( {$ k3 q; mMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
. |4 d# B' T& D5 r* HMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
7 p6 @/ T. k9 ~: \McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
% v' V: Y2 q. ~% R** Set the serializers, Currently only one serializer is set as
1 g  y  X6 _  C** transmitter and one serializer as receiver.6 I" f& [! F* u6 n. T$ ?" Z9 ]
*/
  _9 t6 L1 h0 Z- R1 T7 b# }  [( |McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
) C3 r+ {4 P$ X1 L+ O7 o2 ^2 oMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
& O  u( b$ F5 p/ y; K** Configure the McASP pins
6 Q, J. Q3 ]* I6 ]4 J! K: l** Input - Frame Sync, Clock and Serializer Rx* y0 V( r4 c! C; l/ `
** Output - Serializer Tx is connected to the input of the codec / c3 }' B. H  ?& \. O+ u
*/
) X, S9 S! J( c$ ]7 Z5 M. C1 T: O! nMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
! d0 @! T1 I; V" @/ O# v$ a% e* sMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));9 C$ I: h' M" s5 r4 |9 u; F
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
( n" P* F6 K7 S- D& j7 C| MCASP_PIN_ACLKX/ @8 ^( s6 n8 q7 w/ N. b
| MCASP_PIN_AHCLKX
# {0 J" h! ?( T6 }| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */- X0 P+ K# C: u4 ?% ]
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 8 {0 m2 U# C& K4 F8 u1 }4 D
| MCASP_TX_CLKFAIL
& @* w2 i, {# w  V2 D| MCASP_TX_SYNCERROR6 O) C5 g: Z5 P( b# f
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ) o, X! D  h4 U& E& ^- q# h1 _; ?: i
| MCASP_RX_CLKFAIL2 b8 x5 G# j& e( R, R( b! y& [
| MCASP_RX_SYNCERROR
+ X* X& c! H* f4 I. l| MCASP_RX_OVERRUN);
9 ~6 ~6 j- n: R}
static void I2SDataTxRxActivate(void)
0 B3 A1 e$ g% R( ~5 B{
7 V6 o! r3 Q4 E$ {/ s# a/ F/* Start the clocks */% W/ g7 C) v' l3 O& E
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
6 |# x" P- \9 j7 C) r3 BMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */7 ?+ f4 L) e" f4 j1 p" u
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,2 P0 T5 \. s$ f) H( K1 C/ k
EDMA3_TRIG_MODE_EVENT);6 t, z' N: ]/ v4 q/ x, n
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
; Y. r6 K3 [8 X. [6 [6 LEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */) j1 n- Y: C! L' o  ~! T
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);6 j& G+ C- z& Y0 \- [5 ?
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
1 B+ i% C9 }1 p" b( Cwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
, O* ]# t0 X, U2 VMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
! R& m* k- m' N7 ?8 K7 |McASPTxEnable(SOC_MCASP_0_CTRL_REGS);) K( H8 ]0 ~1 p" Y  B
}

6 c+ j4 X8 z0 T4 r6 n
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

  e: r4 }9 K: J: y2 k4 m3 S$ o6 x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-18 07:45 , Processed in 0.046214 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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