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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,: S& Q  m! H3 a" M. m7 O% a$ L, v
input mcasp_ahclkx,
/ N( _: i8 k, q/ c- \input mcasp_aclkx,
) R- U6 [' |0 C& x  |2 ]input axr0,
6 H: w  U0 u# k3 s/ I
! A% E3 ^% b0 `  Loutput mcasp_afsr," t* I1 a9 f3 m$ ~# s
output mcasp_ahclkr,0 P+ F7 Q- J$ r- r, Y+ {" Z$ D+ L
output mcasp_aclkr,
6 z7 H# {  @  r8 `) Uoutput axr1,) t- d, n$ Z( Q- \9 C" z
assign mcasp_afsr = mcasp_afsx;3 J/ n/ [' a) D
assign mcasp_aclkr = mcasp_aclkx;0 q" g: m) o9 E8 R4 Z1 ^2 P
assign mcasp_ahclkr = mcasp_ahclkx;- @0 z' d% J1 l& C* h% h
assign axr1 = axr0;
  S! u" m- C% \5 o+ D

; g1 f2 J8 m4 B% R+ N5 J  ]
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

/ a. X: S" X: b3 y
static void McASPI2SConfigure(void)
' y5 q  j7 P; l- }$ ]2 r{
' ?- {7 ?3 n1 E2 q8 F3 \' Z6 q* `# AMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
8 [9 R) M+ L% CMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
9 U. `4 K3 ?# }8 c5 G. P" [McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
8 t  S* [. [$ e2 F, J# I! {McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
  k5 g$ V( P9 O3 ~$ ~( M# hMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
3 V: G) R- t9 n1 S/ d$ t7 [MCASP_RX_MODE_DMA);! r: }1 G8 Y% i0 A9 E$ P' R
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
$ E$ Y& F9 |; {4 t; K! B: r) D, {MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */( }4 s# E2 E0 S4 D$ a
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 2 ~6 A$ G7 H  N. f8 C9 E( E" @& N; n& d2 o
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);+ {/ r4 ~9 f+ M; F' {  l) F
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
$ x# o$ X) a6 L/ N  A) qMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */- c7 Y/ |" j" m$ n" V' u
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
) i9 m& d  F* b* K* B+ ^$ b" fMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); : D1 A' m! n2 W0 k( v
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,8 Y  \1 O" c# D+ h
0x00, 0xFF);
/* configure the clock for transmitter */5 w, Z" U+ ~7 F& h
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);. O# ~6 n0 k. i, n* `' Z$ n& Y
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ! X8 y9 M7 m  U0 w
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,  i% m0 [3 G7 D. _  r4 s
0x00, 0xFF);6 U6 M* [  e2 f4 v

0 s) @0 L5 p7 a0 I( {# U/* Enable synchronization of RX and TX sections */
' B- L0 u+ h& D# D, h7 I* uMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
; _7 [& o/ u$ n+ b5 a; lMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);; ]5 X! D6 E+ |7 f
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
/ A0 r. D0 A/ m: g5 ~* N$ N** Set the serializers, Currently only one serializer is set as% C# f7 K: J4 [+ p
** transmitter and one serializer as receiver.
& d- C5 \; q8 Q7 U*/
( Y, h6 B3 c6 Q9 CMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
7 i! d- O; ]1 e9 G$ L  SMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*+ y8 _) q- H3 W9 w+ I( g4 L2 Y  ?
** Configure the McASP pins 1 Z9 S1 h) k' a' s
** Input - Frame Sync, Clock and Serializer Rx
$ \) Y- k5 X0 a5 a) @** Output - Serializer Tx is connected to the input of the codec   o% V! N/ J% f9 L. t
*/  S. M- ~5 Y! ^! d4 w$ G! B
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
4 ]( x1 j! a9 g7 _% n' @1 n5 AMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));: I& e& l8 F) t# t$ H3 O( X1 c
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX" N5 w& g5 [% G7 ]
| MCASP_PIN_ACLKX% N2 r8 o6 m) X/ x( H9 y
| MCASP_PIN_AHCLKX
/ Y3 D' P# N) a, y| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
" O* w4 C! a. w/ ]/ T9 A% [. eMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR # F. f2 a  `; l: o( m4 o6 |
| MCASP_TX_CLKFAIL 6 H; L" z+ O: W# ]% p) S) n
| MCASP_TX_SYNCERROR$ T& h5 a$ m3 z- }  h- j8 e
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
7 p; _4 I; ?! p4 G. C" ]| MCASP_RX_CLKFAIL
3 P- J7 d, A: d% H! R! H| MCASP_RX_SYNCERROR ' Y$ c: {" u" h+ S- ~+ j$ }7 {  u
| MCASP_RX_OVERRUN);
0 X$ A' t8 j9 J! [9 _) G}
static void I2SDataTxRxActivate(void)& a& _% v3 Y' @. `
{' b( K$ F4 c7 b
/* Start the clocks */
$ }6 D4 D: g% h. E0 x: AMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
: s4 }& z9 b; qMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
6 d; n: I5 f, I; D3 n& MEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
( u/ ^3 }( o/ Z4 [3 k: z0 a" G$ zEDMA3_TRIG_MODE_EVENT);! S7 D. s8 Z! ^  ?; q. d
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, & l) {- c+ m, X* D
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */! Z8 n3 }9 |  R4 s
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);% W  F9 w& F( W+ b( F" u# Q/ y- s
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
  ~9 G8 A1 \: i& l  Uwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
2 X! k9 a+ i/ F. V0 x+ _McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
( f: R& Q; T8 I& U; bMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
! {' Q! r1 L+ z  |" Z; f}
' f8 ^& N( C/ ?/ O
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
# H. r, R, z# s* V
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-27 09:59 , Processed in 0.036762 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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