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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1213

积分

金牌会员

Rank: 6Rank: 6

积分
1213
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,( P4 w9 a7 U3 p
input mcasp_ahclkx,! J2 l) p& w7 l' J
input mcasp_aclkx,
, W# o# \. C1 Y* c4 |) C, A8 zinput axr0,( A7 f" R3 t9 L8 f/ w2 U+ m4 q! s
" y7 J$ r# }$ P
output mcasp_afsr,) W/ y4 t$ J2 @+ R- v
output mcasp_ahclkr,
  W! h5 D: {7 b. Eoutput mcasp_aclkr,
' O4 Y4 {. O( t; h( `  \9 \# m- noutput axr1,
) X& A# A! S6 P: f
assign mcasp_afsr = mcasp_afsx;
4 M$ l- D1 m" S4 h5 C& l9 ^  |assign mcasp_aclkr = mcasp_aclkx;
. Z2 G5 J; c! f1 x" m0 E6 p7 Passign mcasp_ahclkr = mcasp_ahclkx;+ V* K3 q6 O1 x  h
assign axr1 = axr0;

- N' ^' r. `0 L% F
; K0 p3 h7 T1 Z4 s
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
' Q7 F9 E, ^  u
static void McASPI2SConfigure(void)
- p- M; V) v/ m- a5 n7 A{# y) d- H9 _* L6 Y
McASPRxReset(SOC_MCASP_0_CTRL_REGS);) G; e& D* @% ]9 j
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
* i0 G; \4 A; q1 ?! P! o- ~8 RMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
) p0 B7 R# F4 H0 `McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
7 q6 X$ A, {8 J) x# V! sMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
# {+ [5 \  }  hMCASP_RX_MODE_DMA);
% C3 }  W. z2 m! @! C. {* UMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,  \; Q6 ^0 _9 Y9 B
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */3 X) F9 X9 t8 U2 r( C/ h
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
4 g0 n. t! L, m7 E  VMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
. y, ?! l, T% H  n4 |/ D4 KMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 7 y6 p2 j: M5 ?- C7 I# j: Y( ]( K
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */+ i4 E$ S5 \8 j+ _8 X& P5 d
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);6 P. o& \7 m2 q9 \/ k$ N
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
+ @: S5 k* k0 ~' ]0 ~McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
) ~6 g/ p  n& Z$ `1 F2 p$ T0x00, 0xFF);
/* configure the clock for transmitter */
+ D3 O. D, z/ [1 }- a$ M$ DMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
0 L2 c8 b: Y% R$ zMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
9 v6 H6 v) `( I( ~9 ]4 B0 FMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
6 D! T4 A! N0 D0x00, 0xFF);! |7 r, \" Y/ Z! v: T& s
" S  S& S" ^, e+ `$ w+ \9 v
/* Enable synchronization of RX and TX sections */
* v8 P# }) i/ n; p6 n  W- H% U6 \McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */* p, Q. y% X* }! j& P' }
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
1 W# e" c! O$ U( J& t: [5 J3 T7 R/ gMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
. V1 C4 h, ~+ \9 J5 M& u** Set the serializers, Currently only one serializer is set as
2 z! X  K: I5 k, l6 R* N) |** transmitter and one serializer as receiver.1 Z1 d: Y1 R4 x0 A: ~- R+ G
*/& r4 y. A% M( y+ s5 B! Q/ y
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
3 R4 r& _+ o& |9 zMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
* W$ q5 ]3 f/ l# f) z! G. z0 t8 y** Configure the McASP pins
  p, u4 s$ @% N. S  I& i& a** Input - Frame Sync, Clock and Serializer Rx
& E6 K3 i) x( y1 A** Output - Serializer Tx is connected to the input of the codec
6 j0 b! y6 W: z  x, C% ~6 k! h& U*/
# A: u8 @: K7 k& L, i% pMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);7 N. W7 w0 O6 {
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));  P- ~) B1 F1 b; ^: Y# ]
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX0 G* e; K6 Z9 l
| MCASP_PIN_ACLKX
' G2 E  p! m% a2 q- B5 y| MCASP_PIN_AHCLKX
) P: X4 r+ K6 b6 O| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */, Z5 C2 E$ \9 B- }
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR : z; r5 S7 z/ p1 \$ z
| MCASP_TX_CLKFAIL 4 v9 Q2 o) V! T( O- {# Q5 k: {2 x% o
| MCASP_TX_SYNCERROR. [1 `+ Q, X# q9 s
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
+ J2 G# s% m' v0 i| MCASP_RX_CLKFAIL. _9 c6 w! i$ k; ^/ u" M: X
| MCASP_RX_SYNCERROR
6 t9 ?- W; C2 O6 E; t6 w| MCASP_RX_OVERRUN);
2 _% Q4 Y" r9 N: ~( h2 {* `}
static void I2SDataTxRxActivate(void)
0 H' [) U' Z# H6 j/ F/ |{* K+ o% `  Z) t& ^% ]! [1 y1 }& H9 V5 M
/* Start the clocks */% c& m; A" {+ Q2 z5 i0 E' A
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
1 N1 @- n( v' I6 X3 I8 n; cMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */  b! d. c2 o7 w" k& C: `
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
8 T+ J$ b' K) [1 [' C/ m; pEDMA3_TRIG_MODE_EVENT);
$ _: }4 b2 o1 F1 p: ^( zEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
* S' K' ~* K# u# _1 U$ xEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
( E5 y- A1 i: G9 Z+ W/ H1 ]McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);& e) e: v+ Q7 i% Q) C. l4 G
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
- G% j. j0 e4 _while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */5 y1 o7 ]9 K& Z/ I, }
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
( \' n3 x2 Z7 y; t" N3 ~* u  Q0 iMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
$ M) f3 R( R) p5 L2 N; X. P}
- J) b: _+ C$ M; I( j
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
/ R- J) r5 w% z/ k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-2 18:31 , Processed in 0.036409 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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