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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9540|回复: 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,
- E4 R: C# `7 l# Kinput mcasp_ahclkx,1 |3 y: Q' f. Y7 X$ O1 o- l
input mcasp_aclkx,
" e$ l5 p5 `: ~6 \input axr0,
0 Y  a3 y& J9 P6 |" i3 B, E' k. @% Y+ `& t4 r, H+ x0 d  y
output mcasp_afsr,0 d: O5 j" J: t6 y9 S. \
output mcasp_ahclkr,
/ S% s# {: B: `7 _  R& P2 Y  Aoutput mcasp_aclkr,& V6 w6 m8 o, D2 T
output axr1,2 k( }" J2 Q( U/ j" X: @' ^/ B
assign mcasp_afsr = mcasp_afsx;
* \$ H9 B1 ]! j% nassign mcasp_aclkr = mcasp_aclkx;
. U2 V% ^6 w/ e4 }assign mcasp_ahclkr = mcasp_ahclkx;
* p0 {* K) i* o4 Nassign axr1 = axr0;

8 G4 S( E1 A5 g& q
6 k1 u  [$ ]; [( M7 c( M
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
" y7 _. B3 H( a7 t9 }
static void McASPI2SConfigure(void). Y7 ~) k& s- _! q+ Q" m* b: r1 Q- T
{
) U/ q% A2 z8 w7 V" M1 V( UMcASPRxReset(SOC_MCASP_0_CTRL_REGS);, }1 v. p8 e% q& R
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
$ A; G3 b. D- J$ W  `/ @McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
9 u: w4 w& y9 v3 R) G1 q9 SMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */8 @" h5 L% W1 q% `# J
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
) |& v+ {3 |; X$ R5 [# X- Q, AMCASP_RX_MODE_DMA);% ?: }4 Z8 z+ w  A: |# k
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,4 u( D2 {6 O& ^
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */: `( C, N' [3 u- ]
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
  r. [6 b  ]5 iMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);: ]+ k' Q, F$ {( j1 M. O
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
; _6 q/ e. T3 d" P6 t* jMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
% c' o9 A' P2 l- HMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
& l% \; H6 C8 x* rMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
& [8 o% d! b% Y) nMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
- f7 e. Y4 P6 p  g. o8 u0x00, 0xFF);
/* configure the clock for transmitter */5 k, |1 d" j* i$ ?5 B* a* U, g
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
. e: U2 z6 \4 sMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 2 z0 A( b2 X0 H( o/ B% |' q( o
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,6 E; W$ n9 x% c& K- e
0x00, 0xFF);) A% U; i4 Q# S$ M& e
& c! g  |7 a# q7 O
/* Enable synchronization of RX and TX sections */ , Y; F$ J$ p# P+ P2 `9 {' E
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
7 H* R8 _5 L2 g" s2 f1 fMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
3 P$ c% A9 o5 D9 k9 _# E4 XMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
, {% n, t5 M, G** Set the serializers, Currently only one serializer is set as
) g! I) c+ {' _3 {3 z1 k** transmitter and one serializer as receiver.% j$ c# m+ T9 i3 K& Z* s0 Y
*/
% G( _3 n  k; R! w# ^7 HMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
  S. i! l2 G$ C; N" X, Y. jMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*) A& R$ Y* I7 N6 p+ u7 o
** Configure the McASP pins 8 N6 ]6 z/ S- n
** Input - Frame Sync, Clock and Serializer Rx! T2 J- l, H8 {% _# y8 }9 k' K
** Output - Serializer Tx is connected to the input of the codec # _1 Q7 [& b* O
*/& s9 M5 \! ]5 K+ j' ^8 @
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);, N+ _6 ?' H4 k* @3 n" e" j
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));# H2 y5 X- Q, ^2 c* R
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX6 _. D0 A, Q4 x# u& a& B4 [( _7 h7 X
| MCASP_PIN_ACLKX& ^5 |4 e5 `2 @' ^& g' `+ s4 t
| MCASP_PIN_AHCLKX& k( [  f; u5 l5 x) l, n
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */0 X. ^! z9 R, h9 K/ V2 V
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
- C+ C! g! `8 s) q7 o$ n: K0 E# ?| MCASP_TX_CLKFAIL
3 _+ a( M; A8 w. B* z| MCASP_TX_SYNCERROR$ [! p$ T8 y' V; T/ ~8 s
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
; h7 w% X; o- v% K9 s8 F3 O| MCASP_RX_CLKFAIL5 j& ?8 Y1 ?: `+ b, g
| MCASP_RX_SYNCERROR 6 M' P) r# o8 m0 n; x8 v2 W
| MCASP_RX_OVERRUN);" `" U8 H( a- o3 A
}
static void I2SDataTxRxActivate(void)) a% i' g- p+ f3 t, v! p; p/ S
{
) j3 O" o/ q1 D& L% ?; o/* Start the clocks */
# C1 y- [0 @! }% q/ Q. Y2 bMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
- `+ M6 Q% g1 q0 N. [; lMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */4 i  Y7 L1 c& }' c$ p
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,. n; S1 H, G4 B0 N# w  O- i2 X
EDMA3_TRIG_MODE_EVENT);9 F: N9 ]; K9 H& y" S/ X" [& ~
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
5 K9 J' f, H0 K- c7 ?' j) z% `EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */; K% p/ x% Z# L2 h3 w/ O
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
7 M- z- ]: v6 T, n8 ?. PMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
/ z* _2 Z- d% Qwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
/ I' |: R, d7 M( q" q* U9 M3 o6 b0 zMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
9 w4 _1 q' S6 a; T6 V& d2 SMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
7 H- O( `& U9 {4 D}
. X" _, L9 L4 Q: k* A
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

& g; g' e# K6 t# {
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则


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

GMT+8, 2026-1-13 07:50 , Processed in 0.040221 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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