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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10358|回复: 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,3 K! o% [& I8 a; y( V; }! [
input mcasp_ahclkx,
3 S1 U3 k8 b( M9 J( w" u0 jinput mcasp_aclkx,+ ?- r9 r$ [: v# W( ^
input axr0,
. n1 W+ a: _" P) V, Q8 |1 M: N
# }$ w& X3 z) o: G+ X" C6 eoutput mcasp_afsr,
4 V# R  ]1 g. d7 |# j9 loutput mcasp_ahclkr,
- [5 ^! p/ B/ G6 |output mcasp_aclkr,
  Q: i9 \7 S& Q, J1 b0 noutput axr1,
$ ], Z2 x! {4 R# f: K7 U9 n
assign mcasp_afsr = mcasp_afsx;) _$ W+ K0 C8 Y% M2 H
assign mcasp_aclkr = mcasp_aclkx;
0 U$ a# o- e. J( ~& \assign mcasp_ahclkr = mcasp_ahclkx;  T, R% e- `5 `7 x
assign axr1 = axr0;
& ]" O6 W3 @+ G
" M- E7 ]4 ^( O1 L. V
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

$ w1 l% x$ R1 E9 `
static void McASPI2SConfigure(void)6 p  Z! S$ J; U7 S; P1 G9 m1 N
{
1 D8 J8 B9 U+ _, \) G0 R7 ?1 Q2 jMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
. f; {7 y! I7 i8 Z0 tMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
2 m( T# \" R0 {McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
! J0 v. `0 t5 wMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */' L  @7 p9 O' @9 j; S" q
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
  m1 b( [5 `' {- |4 r! s, ZMCASP_RX_MODE_DMA);+ `6 v+ m+ {+ Q3 n
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,, O6 Z0 t3 l( Z' w& ?! s$ ~8 c
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */$ d* G0 s8 |; \( Q, Q9 v
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, # ~+ B$ U; v% L9 }9 e- A' }, C
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
5 D4 A: M, }/ U* Z: b2 o( |& PMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 1 [+ H$ F! C5 w# Y5 C  t
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
/ ]! J# \8 P: T- x& Z3 [/ ZMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);3 a1 g. P  _1 h5 [& g
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ' ^' `5 l; {7 [3 X7 g  l1 s
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,% X2 x$ D# ]8 N# E
0x00, 0xFF);
/* configure the clock for transmitter */" L0 U. {, z* p4 W8 ~/ x5 J% [
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
9 _0 y4 E: Y1 K3 f, B7 i: i  Y* NMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ! t3 S- M$ b- h
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,) u" ?% d0 @* h$ @- r6 [
0x00, 0xFF);
4 {& @* y# o3 O8 @/ j. N& m& z: m$ q( _1 r+ x& I' `
/* Enable synchronization of RX and TX sections */ 7 q+ `6 v( O# @, D2 |
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */) `5 o9 v" \# u  }* X
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
& b# h# P/ b) O# K% [' yMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
2 c' |+ M, b7 N& S** Set the serializers, Currently only one serializer is set as5 H) s# f' K8 |; {
** transmitter and one serializer as receiver.
- K. f# q8 F4 _: }1 y*/
2 p9 G5 s' W2 ]2 qMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
; h' ^8 Z- E* k5 z# J8 ^McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*2 n' P" |8 b: C$ I# z0 z
** Configure the McASP pins + q4 N0 Z9 A0 H" |3 W! @, F% _
** Input - Frame Sync, Clock and Serializer Rx) S1 n- {! L" j2 D' {. v
** Output - Serializer Tx is connected to the input of the codec 1 M( f# @$ H# k% N
*// ^$ D, B6 z& w4 b
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);# f, C, W# z, S8 h6 a- p  X" j
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
& I* X& g7 t0 r% W; [+ LMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX2 ]0 |9 n( p& V) o' R/ n
| MCASP_PIN_ACLKX
0 z# }9 I8 x6 z9 ?  L' G| MCASP_PIN_AHCLKX
0 J6 i3 b+ Z' t/ J0 l( ~" G1 k& ^+ Y| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */( Z! H$ D3 S, ?
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
% Y+ K5 @7 k. N  N) Q- M  v" r' v| MCASP_TX_CLKFAIL - X- W, Q, {& z
| MCASP_TX_SYNCERROR* r) ^5 ^* i9 }' r* b- _
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 4 _+ l- z+ T1 R3 }) I2 ~
| MCASP_RX_CLKFAIL" H, @! i4 \, h% V
| MCASP_RX_SYNCERROR % ~) U  o) p2 F/ u
| MCASP_RX_OVERRUN);
: A" K, Z5 ]9 v}
static void I2SDataTxRxActivate(void)
% ]: g/ g3 a; l{$ z) U- l/ i8 T
/* Start the clocks */4 v4 x' {. m) j/ V6 l
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
  ^8 U/ ?6 F- L2 uMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
; o+ X  E& V5 p3 S$ rEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,4 N$ j' @. c: P  @' A* M8 G1 W
EDMA3_TRIG_MODE_EVENT);: j0 i$ v: J: B' P: v
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 9 a- c6 l$ E, }' O
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */5 r- X8 J3 _! |$ V3 R$ h& M
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
3 J4 C4 d% ?2 V, Z8 e* KMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */& }1 _7 ]/ `3 ^0 Z
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
4 `8 v3 @- ~: ]) m2 e. _& ?/ A! P5 xMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
' t8 ^2 P" _# u! u' _McASPTxEnable(SOC_MCASP_0_CTRL_REGS);% p4 K* j' T9 {. c0 f, [9 o
}

1 ]5 R7 A8 J9 c* z- J, r. P* j
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

% u* D) U  N1 d7 ^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-4 15:19 , Processed in 0.043744 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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