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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1215

积分

金牌会员

Rank: 6Rank: 6

积分
1215
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,6 \8 Y- K: N' p4 {7 m
input mcasp_ahclkx,) A9 X  I3 t$ x& _) _
input mcasp_aclkx,' f6 H& r( d; Y
input axr0,
. E  S+ R. E' I/ g/ n% J
9 M1 p) J6 A1 M, }output mcasp_afsr,
( X0 a$ u* s; l5 ^  Boutput mcasp_ahclkr,
+ [- Z( \8 F$ C9 Noutput mcasp_aclkr,* s8 e; j0 x4 o: ]1 z1 c
output axr1,' Z( y. d+ |0 Z; D
assign mcasp_afsr = mcasp_afsx;4 t* f% K( ?4 J$ |* b0 E
assign mcasp_aclkr = mcasp_aclkx;8 g+ k3 r# M( q
assign mcasp_ahclkr = mcasp_ahclkx;
  O- o1 o4 x6 v2 t5 d6 Massign axr1 = axr0;
" U" e" e1 G/ }% {/ g: t

2 c% j. Z' O* \- P1 }% t! o6 v
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

6 ~- w. U) L6 t7 J& x7 ?" s0 O& }
static void McASPI2SConfigure(void); V! e5 ?5 J% P+ {4 Z5 |
{' Q0 D- j8 [, U0 h* Z2 j0 m/ I
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
5 D# m% r9 R- J1 _9 u9 d4 MMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
  ^4 j) Q2 Q  e4 A' \1 bMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
+ S7 F# {- [5 s, E- yMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */& T5 A2 V6 Y7 ?  g
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,1 V7 [# o6 ?3 _% d1 e, u
MCASP_RX_MODE_DMA);
! k1 q1 N' G, G! k$ h" sMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
7 S$ U0 G0 c5 ~; ]+ p0 c3 s: TMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
9 I' ^  J, q# t, x$ g2 |* i, qMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, % s5 [6 o, A+ b" K
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
5 u6 D0 m, b+ R0 o' pMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
0 J9 d7 L0 ?2 C- {8 BMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
7 j  [! {6 n+ \5 k5 BMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);8 X: s2 ~) y" l- J# X
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); & M7 N8 G5 X/ E1 R- }7 B( t. L$ `2 K  x
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,# N. i" o* g" D4 P; y" A
0x00, 0xFF);
/* configure the clock for transmitter */
* |; w# Y! m. q/ ?+ C5 hMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);$ z& ~5 ~8 t) a0 j3 p; q
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); # z; B# T: e9 {3 ^2 i$ [: q
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,; v0 k5 J, F, T
0x00, 0xFF);
1 ]* b6 S% h7 \0 N; o2 s: \* N  w, ?# B8 n
/* Enable synchronization of RX and TX sections */
& g& s/ e5 R  v9 |/ B& j# v2 LMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */8 j( g7 ^, O! P4 b5 C1 g1 F
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);! j$ ]0 i/ {6 T: \
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
8 E4 b$ b2 f( f2 w1 y** Set the serializers, Currently only one serializer is set as
& G4 F4 u& X, e( U4 ?1 @9 i** transmitter and one serializer as receiver.4 q" F  f, {/ {* A( o* z
*/
, q) a/ s6 f' o. j# j: q0 F+ T. c7 @McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);& c( m/ a+ R" g
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*, J8 U" S2 i/ r( G
** Configure the McASP pins
$ n1 S$ e  L9 v& [% U** Input - Frame Sync, Clock and Serializer Rx
2 A# h. h1 G: V6 t5 n* `** Output - Serializer Tx is connected to the input of the codec % S% l8 I, F! F5 M9 t
*/
9 k; O; x, `- j+ P1 \6 ^McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
9 Y! p( ?% Q2 t0 I# JMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));% B' n& `5 Z2 s" F
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
$ t5 }& @% i+ O, _| MCASP_PIN_ACLKX
! ]: l) I% g, Q9 H! i| MCASP_PIN_AHCLKX9 d6 O( N9 B% `
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
, o, M6 O: B: F! N9 t; a) _McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 9 r* O' k( c: D! ~. B$ W% K- C
| MCASP_TX_CLKFAIL & s7 ]4 g2 G7 F2 G
| MCASP_TX_SYNCERROR2 G% k) h, F% e  h
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR   @' ~& m7 ]% D- h" q
| MCASP_RX_CLKFAIL
. `" `  j$ ^7 @7 L| MCASP_RX_SYNCERROR & l- w7 F6 o. T- a$ m
| MCASP_RX_OVERRUN);2 I1 S- h+ |% i4 o  V
}
static void I2SDataTxRxActivate(void)1 J# O5 z% r. \! K
{
. ^. @( c3 b+ `: ~3 ~  l; {7 `/* Start the clocks */
5 a# X; p0 _) P( {& XMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
+ B7 t* h% c, R! K/ r0 TMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
0 A  X% Z! A9 m6 y( N8 o) XEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
# Y5 n+ G. l3 f+ C- y" {EDMA3_TRIG_MODE_EVENT);7 A* D; g. m9 T' k# G$ O9 q, f
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, , V; Z: Q, m: {( M6 ^2 M
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */$ C# p; l! p6 d! \
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
" a. F3 C  A% u- A% t3 I, e- VMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
) t* y) Z# F1 V8 V4 o$ Iwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
# b! w, e' ], b4 h9 P8 Y# |McASPRxEnable(SOC_MCASP_0_CTRL_REGS);0 R% H$ T5 O) N, E( t$ H! T$ \& S
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);! C1 ~( C' C8 }4 E
}
8 i  S* }- h$ _2 q
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

: T5 v: O. h% {3 J4 ]9 S
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-11 09:21 , Processed in 0.041278 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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