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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9786|回复: 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,
$ K7 W# c/ k* Jinput mcasp_ahclkx,
4 B! \9 b. a; s  h* B: H. finput mcasp_aclkx,
0 X$ I' U% x7 l/ W8 D  [% Xinput axr0,4 G" x4 R$ _: h( F0 O/ b$ l

, ?1 e  z& v, V2 A8 c4 W3 U. }output mcasp_afsr,+ y/ U0 X5 K5 @0 V! O. j. o
output mcasp_ahclkr,9 g! R8 m0 q( |
output mcasp_aclkr,
, J* s# E/ d2 A+ b: k2 v& Ooutput axr1,6 @+ b. a$ _2 s2 M8 x7 L
assign mcasp_afsr = mcasp_afsx;
1 o. P2 t) o7 M9 bassign mcasp_aclkr = mcasp_aclkx;" r4 F. l& k% Y; P9 a/ z3 `
assign mcasp_ahclkr = mcasp_ahclkx;
" P; M( i4 m$ u9 F6 i5 Sassign axr1 = axr0;

5 I: W# r* Z- g8 B0 \
' R" k. _) k$ |5 F& \
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

$ s# }; a( t6 l9 A- x, _
static void McASPI2SConfigure(void)
8 g1 {' E5 [* L) V. J' K2 V! C, `) c{
" l! @' L% k8 J0 X8 R# WMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
4 r4 W0 r0 e+ e- mMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */0 \! N3 m7 F& v+ t% n$ s/ X+ ~
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
) l! H2 L6 \$ P5 c7 e" n1 mMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */8 O" h$ ]9 O4 b+ j7 r$ T
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,  m+ S6 L; x& A8 ?
MCASP_RX_MODE_DMA);
2 X& r( f8 S2 W+ q. Q! hMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,9 o$ Z/ [  T7 A* I
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
# _+ E2 e1 @1 O: P1 `McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
( Z6 r- O; A- N5 q7 R& e' SMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
# t5 \7 ~; ^# s. _" j3 ~# _* ~5 rMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ) m! R) I# m% C. E* ?! `) l# a: O6 l
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
% P9 D$ R/ \0 p& A2 D7 X% d/ U1 ~McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
5 A% C* n- y7 n/ Y, f3 \McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
# y" u  Q2 I3 `; {' m; I- XMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
7 m7 J, T. p) A0x00, 0xFF);
/* configure the clock for transmitter */. }  @+ V+ D! z5 w6 z) ^& e
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
: j& A' c, Q3 a7 ?$ Q& ]McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
! u% U. z+ m: dMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,8 Z/ F9 [/ R8 W
0x00, 0xFF);% a1 d! F  Y1 F: b2 X
: ^) l" l# T1 y) u' p+ r
/* Enable synchronization of RX and TX sections */
$ h( O3 T  g5 v' v! o; JMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */! y7 C: I- u/ ?& E0 x9 n
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);; J; `! t2 P+ h  P
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
8 ^7 V7 Q8 U  r** Set the serializers, Currently only one serializer is set as* Q$ u  R2 ]$ M, z2 W+ i6 K0 d
** transmitter and one serializer as receiver.) l) R% H4 f& x/ C3 n
*/# S: O: B" ~2 U" u( @, k
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);3 H1 d; B) x8 ?: z, O$ D) j, L7 @
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
: f& D: P$ G4 T* c/ G' S** Configure the McASP pins 9 y5 Q, c. N# J7 u3 r# K6 ^( ~
** Input - Frame Sync, Clock and Serializer Rx
) t5 j8 ]* X$ Z& F7 s- _$ ?, d** Output - Serializer Tx is connected to the input of the codec
0 g: ^' C1 m9 D6 {+ m*/. F6 r4 D% w  R  \% f8 ?
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
+ r6 O, w* p5 ]7 j% F% K9 tMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));9 P3 {3 \) A* y5 K5 M! S
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX4 z6 a( \1 s* `
| MCASP_PIN_ACLKX
% z& y: x' W3 Y# ~+ {" \% K0 l| MCASP_PIN_AHCLKX
$ s3 l: e% E1 }3 T% v6 a1 E| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */0 ]! o4 f( L5 j" O  `3 ~, x, y1 u, B
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
+ q7 g+ ]  ]- J' O| MCASP_TX_CLKFAIL , E: b# f- E# w. V" s
| MCASP_TX_SYNCERROR
1 m; T! j- M1 [2 _3 x| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
/ H" ?7 w' c: B) \- || MCASP_RX_CLKFAIL
- r6 M/ C( D8 d: Q| MCASP_RX_SYNCERROR
( A3 w# W- E% b% B| MCASP_RX_OVERRUN);$ e  D* w8 G# k' o' s7 c
}
static void I2SDataTxRxActivate(void)' B: P  {2 q% j4 q" z4 N
{
/ X; p$ m/ M! B/* Start the clocks */
1 _, K* c9 H; f' R% r/ C. l8 h+ `McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
8 F+ Y+ z2 ?: _- p" `7 aMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
+ \+ |) Q! j9 [; `8 jEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,! K' K( T7 J/ [  K" Q
EDMA3_TRIG_MODE_EVENT);
' C! z  p& B( i2 q/ d8 lEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
6 @6 B& E) L4 Z- Y9 I$ xEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
# a9 W* N8 b0 t: e1 hMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
& l8 q2 K3 U( aMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */* w* H" E* i; W- }: S
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
" q% `" y6 ~4 h' B# bMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);/ |6 S" Y' V& l' T) e7 d7 N
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);* Z$ N: k0 X& @$ Z5 d
}
" e/ P9 @+ i% X6 y8 u9 P
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
0 v( Y; w+ c' T" l
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-20 05:31 , Processed in 0.038368 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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