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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12439|回复: 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,7 ]* B( F: h" N0 i  h/ O4 s
input mcasp_ahclkx,+ b7 r' U' g: `; M9 {: O0 g# c; l
input mcasp_aclkx,
7 X! _, o1 p' R( ]input axr0,$ \' P- S! d$ }/ V  T# `6 d
+ M8 V7 l! b6 d# a2 {) h: p
output mcasp_afsr,. D% Z$ {; Q1 c, f9 {% J( u% v
output mcasp_ahclkr,
( O& P( C; x  B2 l& g6 k/ u! `output mcasp_aclkr,: c4 i% W- ?/ U
output axr1,
& j1 x( t; ^' `
assign mcasp_afsr = mcasp_afsx;
& g& d' D9 F3 h4 z: tassign mcasp_aclkr = mcasp_aclkx;9 R6 `* d+ J7 V
assign mcasp_ahclkr = mcasp_ahclkx;
# L( m; Y7 S0 n7 [; M& `assign axr1 = axr0;
0 I, z9 V  a4 }7 Y$ ^8 j
( s5 l/ {. F/ g4 I. `
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
& P1 G( L/ N! o2 \" k. X
static void McASPI2SConfigure(void)& p( P9 d; `0 X6 E
{* Z* b8 R" T' M4 i! }
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
" J3 ?3 J4 Q# m4 b& f4 H5 q# VMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
8 @) Z- T3 l0 W8 JMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);( p9 ^" {; D5 C- q2 S! ?
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */# A$ Z  E8 O: [
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
' O! h8 u* {) oMCASP_RX_MODE_DMA);, w4 b, c: m; [& ?0 p* ^4 {
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,' ~. q  R' M/ x' P
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */+ \( J/ r/ a' J4 |7 t# _
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, / e3 \$ t9 o# o
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
$ }( E: A, k% S. SMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 1 a7 w0 @* G- x& g3 O1 n* m
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
7 r5 W; {" ^* S6 ]/ R1 v0 @McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
4 r' k5 J- P) NMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
  V6 w2 _: }2 {' VMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,/ ?* t" b% z5 H: T1 _3 C
0x00, 0xFF);
/* configure the clock for transmitter */
3 ?% Q/ W# P1 |4 X* NMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
4 i8 K2 H, K1 I! B# xMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
- B) q+ k; k, p  JMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,( C9 Z7 N, `  F& J0 V( M' U
0x00, 0xFF);
  Z; k& B  W, O' i3 [6 a' @1 K$ g9 U6 d
) h; f( o7 I1 l2 v* x4 ?" i/* Enable synchronization of RX and TX sections */ / l) S' d1 Z; ?) W) [& A# Y3 _
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
8 }  u7 l" a8 c- QMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);  X4 `. n3 b3 R; z! }+ y! n- Q
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/** @, A% A& q, ^) F4 X7 E, q
** Set the serializers, Currently only one serializer is set as: `; n0 E% g% h4 F0 p0 n4 v+ u4 C5 {
** transmitter and one serializer as receiver.
2 y+ f* ?8 P* D/ n*/
0 |( \' C3 c2 M7 h; `& @McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);# a0 I' M5 V$ u  a  |6 A
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
/ y( @5 g# i: B3 ?; U7 F** Configure the McASP pins
- h+ l0 |$ F7 Z4 L! h1 T+ t7 Q** Input - Frame Sync, Clock and Serializer Rx( E, O4 }- M6 w* `1 |. E8 U
** Output - Serializer Tx is connected to the input of the codec 2 K% ~9 |3 ]9 I; a5 e* {; \: {
*/' O' ~( z+ y* g1 u- a6 D( N: h
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
8 Y- S2 e: W. ?3 }- aMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));' y9 E- d( x& V+ s: q1 J: {
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX6 Z! E- y' _% ]! g0 N
| MCASP_PIN_ACLKX  F1 a* \9 h* R8 _; A
| MCASP_PIN_AHCLKX( [' H% E1 D% C2 o: n- Y
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */$ V7 x5 c+ {4 ^7 l% T& d
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
) W7 W0 E& z$ l| MCASP_TX_CLKFAIL 3 s4 ^6 Y  o0 X8 d9 a% R
| MCASP_TX_SYNCERROR
. U5 W7 A% z4 `| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR , G, I" m: R# w" n1 l6 M, K
| MCASP_RX_CLKFAIL8 M* ?0 n8 `! ~# X* Y
| MCASP_RX_SYNCERROR , h/ W7 [% @# K: B7 C
| MCASP_RX_OVERRUN);, w, I% n0 ^& ^7 b) t" i
}
static void I2SDataTxRxActivate(void)" i6 Q; q' \& Q' p  {8 @
{
7 W' h4 [- C" M$ a8 ~6 N/* Start the clocks */
7 }' u5 A) a: v" \  F4 p8 L- [McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
9 C; l7 C" L" _1 y: h& tMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */5 z5 Q# L$ X7 @  Q# x* w
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
4 L$ h% J# m2 hEDMA3_TRIG_MODE_EVENT);4 M- V/ w! i* I
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
3 q4 A' H: {( l. M6 @6 x8 h0 @EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */- t0 M. ]2 z; T- y
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);+ K5 w7 @+ v- W' O; M/ N
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
4 N9 n4 S" W3 F+ I8 N2 I4 }. Dwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
( ^+ G, I+ e1 dMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
" E1 \% H/ v4 qMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
0 L6 D& x4 \. ?- o1 V/ K. W}
7 ~! S' `# k2 G- q8 i3 o
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

: ~! y( C7 N* y! V* ]# ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-9 03:45 , Processed in 0.045010 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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