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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10720|回复: 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,
$ k& r( L) U  l3 n9 R5 Z3 j& ~input mcasp_ahclkx,, p, S* H9 r& w( ~8 y
input mcasp_aclkx,
) P  t. Y  \4 uinput axr0,4 o. \: q, o$ F. V
+ m9 j; ^% Y9 w: K/ L% H
output mcasp_afsr,7 k% o" @' j) ], F) y- K, F
output mcasp_ahclkr,
! c1 H8 g4 x1 G, G# noutput mcasp_aclkr,6 y4 q- ~3 c' p
output axr1,! y$ B7 i4 E* Y% s! C7 I8 [5 H
assign mcasp_afsr = mcasp_afsx;! e# N9 V( G, m2 v; p' t2 e$ C
assign mcasp_aclkr = mcasp_aclkx;, o9 R$ F1 `- Q2 u
assign mcasp_ahclkr = mcasp_ahclkx;
1 j3 r0 R* r1 q7 N8 |assign axr1 = axr0;

9 A% K2 q  T7 s* J' V
# J/ ~9 y) J, P/ N
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

. x5 |4 n$ a" ]
static void McASPI2SConfigure(void)
, K) l1 y5 p. }1 }6 S0 }/ [{% a9 z( b( K7 I$ R0 H
McASPRxReset(SOC_MCASP_0_CTRL_REGS);' \! q" S1 G  ?  q7 ]7 j5 y
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
! x1 e  |0 p6 W; SMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);; w& d# v2 p% X( }6 P# i
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */# z- |! @( d' y" ?7 s
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,  Q# V3 O0 {. C
MCASP_RX_MODE_DMA);& i$ h/ G1 @: C* Q% b4 u5 m
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
: H/ Z6 k( v+ ^MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */! l; u% i! K- k2 t8 l' ~7 k5 r
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
* ^* K  A( L, D2 K5 RMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
) v: [  b: K$ i: C7 V) XMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
1 G& d6 P1 ]! \! pMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */* i& O% y$ \) k3 t  o, o
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
; G1 o% m- |0 O/ `McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); - V! d3 m. n* K1 F. H
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,0 x9 z3 X$ X6 M9 n6 h' ?4 p. h
0x00, 0xFF);
/* configure the clock for transmitter */
9 H% m% z8 c3 w' ZMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
6 `8 t) o9 _: ?/ uMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 9 @7 t: @. q4 B, H
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
8 G; \8 G- Y+ `3 D1 Z$ S! Q0x00, 0xFF);9 \! J. k" z, c* c- r+ Z3 y

4 b0 o3 b8 k4 m( u/* Enable synchronization of RX and TX sections */
2 m; Z( M4 z6 s# Q% EMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */+ N  [/ i  T& m
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);# n5 j+ K. @" ~% }
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*) L/ Q, i; X: A( S, \
** Set the serializers, Currently only one serializer is set as
6 L& m) f8 Z: h1 f4 M/ R** transmitter and one serializer as receiver.3 f- A! s& h" u: ]: F
*/1 ~9 @/ w) E6 _' {* [' m+ d( d
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);$ _$ {$ e( x6 ]/ Y
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*/ d% q2 w( a% @, }7 q/ D4 H
** Configure the McASP pins ) Z& g& m1 E: m* _1 T
** Input - Frame Sync, Clock and Serializer Rx
+ @9 ]3 ]. v* |! S0 c** Output - Serializer Tx is connected to the input of the codec
8 J7 ]8 r: q  p: K( g) z  g: q*/$ j  e3 u4 R: U! G; k
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
% n+ n% [' R: v" u8 OMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
0 \5 B' N7 E# {+ q2 Z2 o5 r  Q0 ^McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
( t- p. B7 S4 U) g" N| MCASP_PIN_ACLKX5 @+ g3 j* w$ Z% L8 ~! Y1 |: z
| MCASP_PIN_AHCLKX
/ k) Y- G: n6 n/ g* o| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */! I" }3 e% i8 @; N3 v& u
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
7 l- L, Q1 @9 M& ~% ^+ G0 y5 h| MCASP_TX_CLKFAIL
0 q# ~: a1 r3 P7 m8 r6 b1 S9 j% q| MCASP_TX_SYNCERROR& T) G9 n) \" q# d  V+ ]
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 1 S5 n4 b' _& {  k+ i/ r% ?
| MCASP_RX_CLKFAIL
; l6 `1 i* B- g, |5 z% f8 F| MCASP_RX_SYNCERROR + d, Q& |3 Q, e2 _# W* O: n
| MCASP_RX_OVERRUN);
+ C& Z3 e) d) D6 i}
static void I2SDataTxRxActivate(void)
8 m% Q5 V, P6 F7 |# X{$ B# R$ V- j! t6 ?- S7 `
/* Start the clocks */
! T) P; i8 H$ [McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);" w/ J# {  M8 Y: E+ f
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
" `1 d& I/ m/ }( c% r8 nEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
. b. B$ z& {5 J/ z9 N5 dEDMA3_TRIG_MODE_EVENT);
/ j+ X& @6 d  z% i4 nEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 2 l; I  C5 f# j$ m9 g! \
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */& L8 }* K5 {( e8 _& I
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
* m8 T0 a( w  |* L' YMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
" i# X$ U. C9 X$ A) Bwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */5 A! V9 _) D. D
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);& L$ a1 b: x( F( [+ @
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
" Z- G; X  K) @9 H7 x& v, x}

7 c% \' y5 j" A: K
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
3 X4 a( j5 y1 ]* W
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-14 03:33 , Processed in 0.040138 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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