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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9507|回复: 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,; c, }: u2 w1 m2 a+ K- |1 U. q& p0 ?
input mcasp_ahclkx,
/ s3 W- X; j7 e9 @$ pinput mcasp_aclkx,/ y7 V8 a2 F( N$ V0 L8 Y' S
input axr0,9 I# D3 L+ ?, t; j

9 U# D: ?0 e: `, B% y' [! Moutput mcasp_afsr,# y* q, F. y- }( x3 D) o
output mcasp_ahclkr,
! n8 {- d6 \' c) H5 `+ J5 E# t! koutput mcasp_aclkr,' @6 d/ p" p# J* A! \7 `
output axr1,
5 G  O+ @  w. C
assign mcasp_afsr = mcasp_afsx;! _3 \7 |4 r' X
assign mcasp_aclkr = mcasp_aclkx;
& h" h- c: i! {! Sassign mcasp_ahclkr = mcasp_ahclkx;$ r5 Q! t% v5 l5 G
assign axr1 = axr0;

: U* e' m" u( W$ c. v! r. ]( R4 z
+ ~, l/ |' V3 R8 i- r% U+ J" |6 D
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
+ _  \% K/ Y8 M$ r: F& [' e
static void McASPI2SConfigure(void)
9 k7 Q3 e7 K8 A* e$ i9 H{' @" p% \) A! _3 [- y& S8 H
McASPRxReset(SOC_MCASP_0_CTRL_REGS);4 e$ g1 m7 K* k- z0 ~0 s7 ]
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
8 ]: d3 f! ~1 {McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
' s' X4 k4 }% i/ E" C$ e) VMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */  \) c: S' `8 G9 _% A! s: p7 ?7 i
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,$ j6 O3 \# ], ~% R
MCASP_RX_MODE_DMA);* Z& |2 a6 U; M1 d' t
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,# `6 r8 E# V7 J- o/ T
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */' q3 {2 M6 ^6 g* O8 b
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 7 m: H; [7 \7 P# I# _6 _, Q! [) j2 s
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
* M# l6 @6 e5 D' {( B' z# VMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 2 }2 f" `) K: R& V9 X
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
) H1 ~2 D1 w; @7 o0 @4 V& ?' E" JMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);* A- H: U7 h* c6 r
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 7 M9 B. ?# c! c$ `: D( r" d
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
& o& X+ l% g5 }+ _; e) f0x00, 0xFF);
/* configure the clock for transmitter */
0 s+ W! x" K7 y" Z) TMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
. D6 @1 _: ]5 o0 H/ ]1 n! iMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 7 p2 `; h' f3 X" H6 _  Z  S
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,: |4 U9 U! X& g! ]$ W4 }
0x00, 0xFF);( a" \) S5 u( E& N: x

; [6 Y  Z1 s0 t+ \/* Enable synchronization of RX and TX sections */
1 `5 i, S2 w  w' U) P2 zMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
8 s+ h  s6 a) w" \McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);  J9 c6 Q  u- h0 {! T% N
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
' L/ J! D6 [, {: f; J/ l  U" R0 m** Set the serializers, Currently only one serializer is set as
$ j+ ^( `! r( \4 i/ L) f1 P7 D** transmitter and one serializer as receiver.
4 s* h  w) C8 w" p0 D*/
8 c' o2 G1 k5 aMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
5 j. W9 P7 N$ j0 h% IMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
8 J7 C6 T$ y# t5 [/ }5 o* d** Configure the McASP pins
6 c8 J1 J( N/ T1 P* K0 b** Input - Frame Sync, Clock and Serializer Rx
) ^( Z9 j9 Y" @) h** Output - Serializer Tx is connected to the input of the codec
1 R$ o  L4 o& f! ]$ J( E+ O*/
6 @, I+ `0 H" I7 h' i% }& u+ zMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
; A1 G6 B: Q# m2 \McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
' W; b# i, f6 N3 WMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX: V/ [" M* L5 i/ U% S5 X  a" F' n
| MCASP_PIN_ACLKX
% H+ ?  w, u7 l: l6 y| MCASP_PIN_AHCLKX
8 B( _4 J3 Y/ I! t. e0 j8 ]| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
- ^" Q' q. r$ wMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
! V9 n6 N/ C# e| MCASP_TX_CLKFAIL
% Y4 C5 p& T$ @2 M| MCASP_TX_SYNCERROR. @0 Q/ F7 `0 q, f- p: g
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
" h" w# @" j6 [/ M4 d| MCASP_RX_CLKFAIL; N  l0 D  J) c! y
| MCASP_RX_SYNCERROR 8 m# U8 K3 b' {  ?4 h
| MCASP_RX_OVERRUN);+ h6 }  F2 }( e- o' u; ]
}
static void I2SDataTxRxActivate(void)* v6 ~: m8 B( s* w
{
: X* h, R/ x  m/ |' r) k2 G/* Start the clocks */
0 c0 V9 o7 u; r- G, qMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);- j8 ~8 `3 j' l1 O+ F2 ?& m
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */3 Q+ }+ ^9 Z3 }% g0 N4 ?
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,4 j$ B  X$ z& K) d8 `# Z
EDMA3_TRIG_MODE_EVENT);5 c. u: H8 W+ q5 K# y
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 8 j3 L5 {; E/ T6 I- ?0 l7 t7 F; K# C
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */  M+ _* i3 }& v8 ~" A1 I9 D* h
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
0 c/ w7 c* c" _7 tMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
$ W/ I  M$ A6 y) a' L* Qwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
, ?: N# D# L  f+ yMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);& {9 V+ e& G7 |2 K
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
. G$ t6 N( ?5 n& Z}

" ^/ d8 s6 b) ~- C' C4 j6 F$ h
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
8 G$ {1 [5 d  P! Y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则


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

GMT+8, 2026-1-12 08:42 , Processed in 0.038616 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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