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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10620|回复: 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,! E& i# g) m  U9 u$ o5 K2 F- k% d
input mcasp_ahclkx,
$ U3 \% ?) t) g* t0 Z6 l9 s6 [8 Rinput mcasp_aclkx,
3 c" y# h7 I% g; G0 Hinput axr0,9 z8 [  x* @; Y) D) N& T7 e9 x0 d1 E

9 G% K. {  S. H2 X, x6 C. Ooutput mcasp_afsr,9 Z, a8 N$ X/ F
output mcasp_ahclkr,% J1 E* P" B6 P* k# b- M6 e
output mcasp_aclkr,2 ~* }: R- ], g4 [' w
output axr1,
! F. }6 |! ]( V8 K  U" E$ u
assign mcasp_afsr = mcasp_afsx;8 F5 I0 w% q- i0 r$ ^* {5 R! Z2 `
assign mcasp_aclkr = mcasp_aclkx;
; n  z8 n: S$ d, T1 r6 ?: y' Qassign mcasp_ahclkr = mcasp_ahclkx;' z# Q" |& z2 q& `5 C" G6 A# p# a4 }
assign axr1 = axr0;

8 m0 Y& P4 k, ?! r; K( _
& G! C1 Y5 ^; o5 h4 N5 k
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
; B/ x; O  P, L  X2 Z- h
static void McASPI2SConfigure(void)
  {) t. r2 X+ v  E# ]0 G& O{! t4 @7 ~* q' Y( P
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
0 y9 {6 O2 d- }McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */! n5 j& K- F" k0 U' ~7 U6 c
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
# s) c5 i1 ~+ D, eMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
3 C! _6 m4 l, \, TMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,+ j' f* G3 T1 [4 E
MCASP_RX_MODE_DMA);1 u3 m3 d. G, q9 ~# [' Z
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
7 w; ]' v) X5 j% P4 S; _MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots *// ^' L7 o8 Y; m$ n' _% h
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
! M" b! |2 Z' y6 C& u/ nMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
  o/ l% v! P0 D( [2 qMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
: Q, \6 v4 x9 jMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
: Q/ q8 {) {* RMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);5 R4 o( ?& `/ P4 y2 f! v
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
1 j# [, |0 B8 m( |: K% K7 r7 C0 qMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
  y' V( Y3 \/ M+ Z/ Y0x00, 0xFF);
/* configure the clock for transmitter */* K, P7 q5 |% E$ H) U% f9 X0 i
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
& D" s+ R3 n* u+ I; p. n- lMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); / Y) g7 X' F# ^, r! f/ w2 A3 m
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,; o/ g7 s, M/ H& o, W! o: G" D4 b+ }
0x00, 0xFF);
9 s  Y! w- Y# q. ^9 r9 ?, o4 j# N7 f# }+ B
/* Enable synchronization of RX and TX sections */
6 `5 V& U2 K7 J1 H+ |8 {! W8 OMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */* ?  z( k$ ], a! H6 L2 u2 N
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
' ]7 d; r- ?. K1 L7 \/ GMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
$ M% c- x8 j+ V** Set the serializers, Currently only one serializer is set as
3 r: S# k; ^4 t** transmitter and one serializer as receiver.
  X4 i8 T4 W5 X0 f* F*/% t5 q$ t: I  m7 p
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);' ^* _5 O; d2 q3 U
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
" Z' v" c0 g" l, _  J** Configure the McASP pins
# C8 {! H* _) Q8 J** Input - Frame Sync, Clock and Serializer Rx; b: s7 C1 [: w; [/ s; ~7 Y1 [: {
** Output - Serializer Tx is connected to the input of the codec 2 d6 E; P1 L, L
*// Y2 B% e, l$ J% |1 T" x2 E5 N1 V1 X
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
4 @: H! m+ w! E0 z2 a1 r! v6 P/ G( VMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));9 J' C: v( J9 Q8 K! h  w1 [/ |$ Z
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
! K) Z6 n+ X7 p4 `( l| MCASP_PIN_ACLKX
5 ?, p$ I- k9 k. N' k3 U. G| MCASP_PIN_AHCLKX
0 c' k( M& d& O  j/ V| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
  o+ X! {: A8 J& B: B# Z/ _McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
7 k, |+ [5 d- P| MCASP_TX_CLKFAIL . Z& o( u) g3 [" ?& _! o4 }2 o
| MCASP_TX_SYNCERROR
* E2 a3 E8 |+ ]( Z| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
0 y" w( y' I5 X| MCASP_RX_CLKFAIL& w$ h& p/ O, a; t5 j: b
| MCASP_RX_SYNCERROR 9 Z9 l! X! B" ?2 k8 R7 W
| MCASP_RX_OVERRUN);
5 t7 o# M+ Y8 @# ]9 ~; y% i2 e5 B}
static void I2SDataTxRxActivate(void)2 o7 I6 K0 z  Y. _' |  ^. {$ y
{8 \' v5 K$ T5 F% g9 b) O, L* M
/* Start the clocks */
$ e, Y+ ]- B0 o% ~! P# {. {7 q! a! ^McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);+ t5 F2 u+ ]1 z% e/ c/ v9 P
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */. _; @/ T6 `* }0 J* m: Z' S
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
4 k# T# Q1 h( b/ C, t7 T5 A2 REDMA3_TRIG_MODE_EVENT);2 \* I& O# r* @2 N: x  j
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, , g$ C( t  ?  m6 u! B! Y
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */5 I" V- y) q9 X1 Q
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
1 [+ T* @% R# H1 d% a+ d2 E0 VMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */& X2 ]1 \9 k. e- j3 S* ?
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
. M8 F3 T% h8 R& P. UMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);% S4 U6 b3 ^, M7 |% D: U& J
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
+ u* I/ \7 j5 a, W}

  B% `* Q- c9 T$ P' g
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
. v5 }2 e$ q, J- c3 s! @  U
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-11 08:12 , Processed in 0.039548 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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