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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13087|回复: 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," H4 r0 P3 a  c- J; ^8 O! j% w  i
input mcasp_ahclkx,
, B; r: j+ U; [! R5 ^, d: uinput mcasp_aclkx,
* o$ ^* ^: Z- `# _$ M- ninput axr0,
8 `! i" D4 v( Z( d7 W" F% }6 b# |
output mcasp_afsr,5 J" O+ H* R7 W3 C% e5 b9 Q9 K5 z/ X
output mcasp_ahclkr,
; W9 H4 i5 e  toutput mcasp_aclkr,0 T2 V) q' f6 W* b# q1 E) i, z! e) K
output axr1,
# a- G: a; N' P8 T& |8 L
assign mcasp_afsr = mcasp_afsx;
$ s; W9 M: n" Vassign mcasp_aclkr = mcasp_aclkx;7 A. M2 g8 Y! w
assign mcasp_ahclkr = mcasp_ahclkx;6 B7 t- W, ?8 @. C+ C: m+ w& C
assign axr1 = axr0;
" d# u: z$ ^( D! z
4 w; A+ J) _+ e: S! R3 S0 g
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

( d* d. L' u, t3 W" u: p$ F
static void McASPI2SConfigure(void)( {' C# y# F" ], C
{# Z2 ]' d$ P' d% n) V5 U/ ~
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
6 d8 Y+ R6 V5 I, r1 ]9 b; ~3 X! [McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */% d$ c: e. x# S9 ?" b
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);. V/ c0 m1 p7 d/ s4 h" D2 X
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
, Q9 K; I! f3 m# i$ Y: ]# _McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,, r/ y- q5 V7 l9 ^# P) K9 F
MCASP_RX_MODE_DMA);9 j4 M& V  Z. k
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
% N& e2 m' a: F0 r) fMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
+ I, o+ b$ ]; X3 ?; p& Z$ AMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ) e" \! v- Z' q) n$ e% J
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);0 @; X+ s; l- p! A
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
* }7 H+ u+ |$ t& {. TMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
: l" x. ]2 h7 I" lMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
+ I* i. e% `1 K& ]' aMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); * j6 U; `8 G3 p" E2 m1 C4 V* s
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,# g+ N& @* T, F3 _! a- D
0x00, 0xFF);
/* configure the clock for transmitter */$ Z0 h' O* x7 n* T
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
+ G$ [0 x- u" C& ~McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
' q; p1 L/ f4 w$ Z5 y1 D" h0 GMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
' V( P. F) T" q/ n0x00, 0xFF);
! M3 h4 D9 t5 q7 o; w( g/ r6 @
1 e1 v& W4 d# x  K: f/* Enable synchronization of RX and TX sections */   d9 Q0 e. u# K; ^
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
9 W# h7 \. P/ M/ v6 L; K. KMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);0 y3 ]( C. e4 T1 g) e4 o
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*0 w' J) V, ^$ B/ V+ D; o0 i: J* _# W
** Set the serializers, Currently only one serializer is set as1 _; L( Z# W! Y
** transmitter and one serializer as receiver.( k. }1 m& x; E6 V
*/
8 M5 L5 S0 ]  @7 b, WMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
2 L, Q8 Z! r0 AMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*9 {. N; h6 v7 ^( E. S$ s* @! |
** Configure the McASP pins
! @0 x" ^/ G4 |3 i7 `+ j** Input - Frame Sync, Clock and Serializer Rx  P  R' k2 T3 ]" Y; p
** Output - Serializer Tx is connected to the input of the codec
1 @( \5 k( a" {*/# m* y( @8 o; B. V
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
3 x  ?$ B& h5 j+ ?/ A9 o  oMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));. X* N! L( v( p
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX! j) Q6 m6 X9 D( V6 p
| MCASP_PIN_ACLKX2 \$ M& z! [" K  m( C3 R8 e1 _4 r
| MCASP_PIN_AHCLKX
) g& J" P' O6 h, }/ j0 R| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */4 E! Q7 {4 h- K6 y  F: Z% R; r
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 0 c) S' q/ m; n9 T
| MCASP_TX_CLKFAIL
/ H( x1 u: ], I5 M| MCASP_TX_SYNCERROR
* W' h0 h7 K8 C" I# t| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR $ ?6 v, {* |% y( ]1 |* Q
| MCASP_RX_CLKFAIL
1 ~% N7 c$ S8 b1 z9 K4 z| MCASP_RX_SYNCERROR
* M. |" f# W1 B2 F| MCASP_RX_OVERRUN);7 o- a% D+ G* w& Y2 r3 q) c
}
static void I2SDataTxRxActivate(void)& s/ r* e; A- C  z
{
" S" z. u. \1 k: D: N" x! y, i/* Start the clocks */1 k5 {$ w  l/ W& `' F
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);/ i" j0 U, T5 Q/ g8 W
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
, f& W% a! P5 B$ Y8 ]EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,) L$ `: J8 b; |" H, z
EDMA3_TRIG_MODE_EVENT);: f6 P, W- D& n1 l: @4 ]! w" s
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,   i; m' J9 r, M) l/ M5 ^
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
* d3 M% A" L8 h- gMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
* Y+ @# ~/ k) q' l& F1 J, t: P3 CMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
/ n! n" ^7 h7 W7 J- vwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */0 z) d4 X5 D2 _8 y1 K
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);( r1 h1 Y; j( K3 A
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);, \- I" @: |& E/ K! }1 U7 `1 @
}

; p* `3 O# ~( h9 X
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
8 ]1 \, V) [0 ?$ P4 \
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-8-21 10:34 , Processed in 0.041288 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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