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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1211

积分

金牌会员

Rank: 6Rank: 6

积分
1211
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,4 A5 u8 J# g9 r2 [4 x
input mcasp_ahclkx,
' B4 U) H' o0 x4 L5 Xinput mcasp_aclkx,- y' ?. V$ P+ V/ F1 f5 v
input axr0,  M- m, p8 k! v) r* O& ?; ^
2 s" j; n/ y- e6 t2 ^9 d
output mcasp_afsr,
' R& X' D4 a: n8 G6 {6 ~* ~$ Moutput mcasp_ahclkr,
! X' E$ B2 ~7 E6 z$ R: _- Ioutput mcasp_aclkr,
) ~) L6 p8 T8 I) p( ]2 t+ n. coutput axr1,' X7 _2 l4 ^4 G! [/ y
assign mcasp_afsr = mcasp_afsx;
8 O* L0 V$ z1 q9 `1 u/ Uassign mcasp_aclkr = mcasp_aclkx;
1 {* s) L+ m0 w$ Y  passign mcasp_ahclkr = mcasp_ahclkx;5 P! U5 ~" r& m
assign axr1 = axr0;
& W9 G8 g; }- r0 ?4 o3 d, W$ a
( }% @5 J$ I8 U4 U# }
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

( S- Z2 o) E& Z# D4 ^7 Z
static void McASPI2SConfigure(void)$ Q( l1 h: F$ G: V5 E' H
{
  N) T# k4 x& c8 E2 dMcASPRxReset(SOC_MCASP_0_CTRL_REGS);% x( w8 v* h: \2 S8 E1 i# M
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
3 E# |- i# C7 a, m, w* R7 e0 L" OMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);8 Y+ M5 x+ u: Z/ M) v; `/ L% ~
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
1 m* |. B6 [3 Q; L4 tMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
% h7 S" |. n: ^3 D* o- t! @MCASP_RX_MODE_DMA);
4 A; A( _/ J$ h. H$ L# {McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
( H$ t6 a/ A1 W* K) S# aMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
! r3 J" ]9 R0 G9 V% R/ jMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
+ Q& e: b7 |! N% H) t! @MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
9 [5 k0 h  D( ~% \+ TMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
  M) v# d: v5 q+ `+ KMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
' V3 m+ R" D3 ]' bMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);6 ?3 Y3 Q- v% f
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); + \. p. b' @' E1 ?/ e
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,( v6 y* s8 c- ~
0x00, 0xFF);
/* configure the clock for transmitter */
5 X. X& L& e3 ]McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
1 w; G' N- A0 f0 \+ p" ]  o& a9 C: K0 t/ [McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); / L9 O! |# S/ t% M. w
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
! b! Z, A( i! V; Q0x00, 0xFF);
1 E( o. Q3 e" Y7 V. |# B4 p
" C7 ~$ u  [3 D! \% F  G/* Enable synchronization of RX and TX sections */
% K9 ]& q: U! h6 b, L  {* cMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
$ p/ t( M7 b/ p5 h/ gMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
5 j  g7 y; Z8 w: OMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
* K: b8 M, Q) I" G** Set the serializers, Currently only one serializer is set as
9 Z1 Y5 O3 ~) h1 y** transmitter and one serializer as receiver.
& H; `" X+ R/ `. B/ M6 @*/
* e0 L' B, `, K  mMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
3 Y0 ^' Q$ e+ v, L: i( C3 R; }McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
* W2 b: n0 e- _1 ^7 \$ ?** Configure the McASP pins
% h5 [9 D  w0 m** Input - Frame Sync, Clock and Serializer Rx
7 E& }# z( A- E! [** Output - Serializer Tx is connected to the input of the codec
$ h3 a8 G0 e9 i4 [*/
. i* B3 H; F  xMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
) B# d, i9 A* t; d: hMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));/ f$ T- t; I, Y; D9 K: s: l+ N' b
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
) B5 Y/ d& h, K' |1 j| MCASP_PIN_ACLKX
1 d7 v  S0 i) r4 }. p( a+ f| MCASP_PIN_AHCLKX
; x; p# X& s* v& ^8 B) M$ t| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
5 c* W, Z# u1 `; G9 ^* hMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR - V3 |; E1 \3 H7 P; L- B6 a
| MCASP_TX_CLKFAIL & n; }4 }' y2 E: V& s% Z4 r
| MCASP_TX_SYNCERROR4 s! O8 F* d. g- p2 E3 d
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 0 o0 E' v3 w6 I4 q, \
| MCASP_RX_CLKFAIL
8 I# B: j. U$ ~| MCASP_RX_SYNCERROR
+ t/ E, B' v: c| MCASP_RX_OVERRUN);
$ w3 [! M& r; U  I/ Q% h}
static void I2SDataTxRxActivate(void)/ [# E! w" j; R$ p# _
{
& C' G* n- n+ f. ]- f& [, R/* Start the clocks */* l! P; l1 I, k5 C
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);0 Z4 U+ o# V; H
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
8 c- u: n* ?( N8 {EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,* }( O1 R* @* c+ Y( N  I1 d7 U; N
EDMA3_TRIG_MODE_EVENT);
4 m, v2 d8 v4 S  oEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, , m9 U# Q: U0 q8 F3 z
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */! a6 q/ k  {; a  }& V
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
1 j3 r+ K% x+ O% f8 n5 e% r2 UMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */# G% w. m9 K) o/ x
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */1 G$ E! T2 q$ I* F- V2 j: T% W
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);7 P: T9 H  T" m$ j7 A0 {& V6 L
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);, X) x+ }; b9 a5 q3 G4 z  p# r
}

* x9 P, Y" B5 Q! U. S2 L9 D* h5 T$ k
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
* y# Q$ E- ?8 G3 f8 O2 D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-23 19:12 , Processed in 0.038764 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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