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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13282|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,- l; F6 p/ x1 v  x2 Z
input mcasp_ahclkx,
$ E& N: p4 a5 n+ K% h+ c! }- Oinput mcasp_aclkx,) A& s, O, P5 ^3 {' ?1 P2 d2 U$ w
input axr0,
, m/ m, @4 }6 D8 H7 |* M  V/ I/ n1 X1 r
output mcasp_afsr,0 T; a2 J; t2 [
output mcasp_ahclkr,1 s, w  u1 z: G% A$ i+ r
output mcasp_aclkr,$ n  w5 J( T9 A1 m: F$ M
output axr1,
8 x: _" A8 ]/ H2 ]7 x& H
assign mcasp_afsr = mcasp_afsx;
; P4 X# L/ b" I4 ~) d9 \' D2 Q' i+ vassign mcasp_aclkr = mcasp_aclkx;9 c, N# i; @4 K7 a; M$ W2 e
assign mcasp_ahclkr = mcasp_ahclkx;
% o: q7 N* U& {# ^4 B5 Oassign axr1 = axr0;

1 W/ [8 O$ k3 X$ N
. S+ {: E3 ^% k5 L1 s
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

9 ^! v7 K- v9 H  }8 t% C
static void McASPI2SConfigure(void)) N4 V$ u4 i. g: [5 s5 G8 K6 c) v
{# Y5 a9 F; B8 w6 l
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
, I3 d0 O, s" E: J5 f3 oMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
% h1 T. c' K! s4 qMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);' F' o1 H$ m4 {6 y9 z$ _
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */  D. E6 y" e4 k; f. P
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,7 |9 h! j! O* r$ g
MCASP_RX_MODE_DMA);
, }% I: c6 \) v, x$ S9 A6 NMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
4 @  L3 {8 W: w0 Z3 tMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
8 n+ S0 Q1 _* e/ NMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, $ @" S- i( r/ D6 O% o5 ~
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);- E% |- C* h3 s2 w
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 2 }% E' S9 p* m* m) D
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */* y: d3 T) B6 D; E
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);& @6 @. h* |: l
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
% c# r! O8 e' z7 w+ c/ b# j/ t& v; [3 ZMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
$ n. A. c; e' \% N: l0x00, 0xFF);
/* configure the clock for transmitter */5 s  {, M7 P* r; b. |9 J4 L2 [5 N
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
- N7 C$ O0 z3 O0 L0 }& OMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ! D7 |1 U5 p0 @0 j
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,  B& X8 x8 o$ l) e* q, [1 ?, q& D
0x00, 0xFF);
) g3 r1 b* {! A, F
6 e0 l  Y! c' m# H/* Enable synchronization of RX and TX sections */ % B! ^0 c  e0 F
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
, q- q, m' C9 z! x$ AMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);  T- |6 d5 S* z# [) f  P
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*- ~+ ], V! x4 y  f; H9 K" [5 d( N
** Set the serializers, Currently only one serializer is set as
) F9 ~2 S) N" I) b& r/ p** transmitter and one serializer as receiver.
1 ?; l) L/ P$ d& j( t% W( ?5 R*/
: V3 t1 N# }0 m$ Q, EMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);7 G4 v9 t; d3 H* G# |: S; S  o
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*( Y6 D1 L2 H" J" D4 i3 J# \1 v
** Configure the McASP pins / r6 f+ c) B4 ]6 H; G) c' K/ ^' \1 H
** Input - Frame Sync, Clock and Serializer Rx
$ u5 m3 V4 i1 g7 I** Output - Serializer Tx is connected to the input of the codec
5 j' b* Q2 a" A$ E, ~*/! {# X, K" V) f. A* v0 V6 b
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);/ r; R& `1 G- [$ g8 a# |
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));( `  e" i3 t+ R7 {3 J) z
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
& z$ ]2 _% W- y5 P1 t| MCASP_PIN_ACLKX
! n3 H! y- M2 C3 c/ f| MCASP_PIN_AHCLKX8 A1 x6 Y; ^) c7 X; H! Q
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */' u0 c8 L- L2 @3 E
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
$ f7 H/ y, q% m8 \; N| MCASP_TX_CLKFAIL
2 {9 m2 q4 R& c9 I' c' u- ]' {1 [2 X| MCASP_TX_SYNCERROR% n* @& O/ z# v/ ?
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
. s  |2 v! |, j$ Z4 W/ n| MCASP_RX_CLKFAIL
& r0 t# A$ m2 [9 R4 N| MCASP_RX_SYNCERROR
# N' z- ?  b/ y& z| MCASP_RX_OVERRUN);: J$ S( p8 C5 y4 \! m" j& H
}
static void I2SDataTxRxActivate(void)
4 I& z+ U  z  D" X3 y+ I- I- ?; b{! x( w' [* D  ]/ L
/* Start the clocks */4 w; S4 ?, j# L; b! }# A
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);% W' ^2 R6 n0 [, S! {3 Q* e5 F8 ~
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */; t$ S. Q3 [, I1 ^
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,! ?) e9 j/ u9 M. Z1 m" V/ I
EDMA3_TRIG_MODE_EVENT);
) q; U: k! A- |: b$ t7 [- rEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 6 n; L( P2 @+ ]
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers *// F" A9 O* G- ^$ c9 Z/ i
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
- |# }) N6 y2 _' z" D, ~McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
" j  q+ X, s( O; Y- k  b6 Swhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
" V5 W  z, U9 Z, U. N+ i; kMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
3 [* L" N: w' C# YMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
$ u; |5 G) D$ E8 _/ m; B}
# t2 R( X: I6 V8 D7 X7 q
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
6 s0 |, j: Y1 ~7 V
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-9-24 21:41 , Processed in 0.042321 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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