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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12846|回复: 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,
2 I+ L7 D7 E1 X/ A: B% z3 \input mcasp_ahclkx,: d- P8 F7 @* C0 }$ l& I% _
input mcasp_aclkx,
" K! S' i5 r- [- l3 {input axr0,$ W! ~; K1 @. f. X

9 t! U9 e; c" M# s2 ?output mcasp_afsr,
; @. ?% l& N! M  h4 q% S3 v& Ooutput mcasp_ahclkr,! d1 X8 q, _# `+ C2 e# v
output mcasp_aclkr,5 [/ _% k+ ~- \
output axr1,
7 Q% u/ ]& D+ G
assign mcasp_afsr = mcasp_afsx;
/ n* l9 J8 z/ [5 z- \( P, Tassign mcasp_aclkr = mcasp_aclkx;7 A- x* I0 d/ S/ N+ |( }
assign mcasp_ahclkr = mcasp_ahclkx;2 O! j7 j/ x& _$ Y5 J
assign axr1 = axr0;
/ U' e; y9 [+ [- y; d

5 S- Z2 M, Z' c
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
. s& D) u# a0 }8 U
static void McASPI2SConfigure(void)# p% b4 j& B' P) {9 O
{) _( ?4 {% p' p, b! V% b
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
# D6 b9 x  n# t* u0 |$ KMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
( H; z: R9 G: H* i/ q- C) P$ N) J+ rMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);, O) n: r7 M5 N, ~/ R" y  k6 I
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
/ c! }0 c; |8 P( a1 c) T' ^% ~1 cMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,, x, q- A/ }) }$ q
MCASP_RX_MODE_DMA);
0 k! C% o' o0 t  KMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,# }* p; D8 W& \9 {
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */5 r0 C0 T- J4 L& K
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
( [. q7 j" b( f+ R, lMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
2 ^. m) s1 S/ c4 E4 C+ \. zMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
' E8 k& }9 g# A, Q) `MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */1 K) R* e) h) X0 K! I3 o
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);3 W1 d) B) q( S8 x+ z
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
: S# b9 a1 }# }McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,' J# e% |+ R0 |; }
0x00, 0xFF);
/* configure the clock for transmitter */
5 d! |$ O/ {- E6 R; \' YMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);2 y8 I# B3 ]! D
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 4 _2 q0 ]3 z9 a+ n  L; R$ |
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
2 S+ r2 k; u1 R# `' g: Q0x00, 0xFF);
8 ~  R& Y5 L( d2 O' ]. C1 _7 s. S% c2 M- f: `: z$ I
/* Enable synchronization of RX and TX sections */ 4 g/ |& v7 P$ B. D+ m0 `. |7 l
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
$ x5 A2 ?) B/ `1 k$ A  M" K8 T- rMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);, ^" c6 I8 ]; D; o  w
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
4 `2 B: @& J' I' L- B** Set the serializers, Currently only one serializer is set as  E! e5 u) s/ {0 L
** transmitter and one serializer as receiver.  h# ~0 H9 S7 N+ i
*/: u; u" V( t! u0 l0 ~6 y5 @
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
1 k7 ~6 R' Z) k" Z! x" aMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
% K8 F) t3 r, x! t; y: E6 \** Configure the McASP pins ) ^; e! Q% Y6 q) O. \, R' m
** Input - Frame Sync, Clock and Serializer Rx8 y% i) ~1 ~! }2 P9 {
** Output - Serializer Tx is connected to the input of the codec $ H) x2 E- x, @1 |; W. k# V! H8 ]
*/1 S, w4 ~+ l1 f" c2 B2 z5 \8 ?
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);8 b7 b: {+ P) R2 ~
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));2 c+ D% P! I1 B/ K: k& x
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
# _1 m$ R& l* U% _6 w# P| MCASP_PIN_ACLKX
. h% }$ e9 v3 d. N& D| MCASP_PIN_AHCLKX
$ H. q+ t) W- O( F| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */3 `8 Y* @, \. t6 v) d0 _
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
7 _5 I" p/ |- c+ X* T( m3 W4 M' R| MCASP_TX_CLKFAIL % L! F( u# F2 `! J
| MCASP_TX_SYNCERROR
/ Z& J8 x! T8 Q, f( L9 T| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
, F' K  |2 C7 q  g| MCASP_RX_CLKFAIL
+ p9 R: @( f. J% F1 {" A' T. `* h( _| MCASP_RX_SYNCERROR 3 W0 Q) E$ D% G& Y/ w$ J8 J
| MCASP_RX_OVERRUN);
  N3 ]$ h9 B+ l! d+ ?}
static void I2SDataTxRxActivate(void)# a% D/ y; n4 g0 @
{& v9 {' |+ G4 _: `( {4 [6 [2 ^( s
/* Start the clocks */
- r  i/ Z% P) D  d; dMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
# z! |. h" C( P* g" cMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */. v: W) x7 M8 C8 E# ~; ~, [
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
, {6 U/ ]8 L* z2 m$ G# M) u1 FEDMA3_TRIG_MODE_EVENT);
9 r' s! e/ e/ |1 k/ ^EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
: Q# S: X6 S# rEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */' V) y# ^. v* Q3 X
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
8 y, h$ T' D8 K, d6 v& JMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */# T  \: I% m" f, E: w
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */5 ^/ m: L1 ~7 o* o0 r
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);' p2 O9 J7 D9 _# h4 p" \4 S
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
$ {# s# J* e6 d% I& C4 {}

$ q* e+ Y* n. @; D4 W& W; G
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

& T( N  v# O. O# a% O9 a
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-7-5 22:07 , Processed in 0.040520 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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