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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10932|回复: 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,- `( O. o8 s2 p# J" |
input mcasp_ahclkx,
; }5 i8 h  Q/ ~6 x3 N  y& Ginput mcasp_aclkx,9 D& F  q, t7 R. ]% ?4 N
input axr0,) g: m6 y! j* g

* [3 `+ W  e& P( X& c% j# {2 j1 Voutput mcasp_afsr,# r! u1 ]* \8 \3 [- H  M# j5 w
output mcasp_ahclkr,
& z4 a5 i# F" b, O# E- w5 `# k% Moutput mcasp_aclkr,
% g5 B/ [7 y3 t& t! j2 _output axr1,9 d0 ]8 o% _5 ~- `& q& k2 C, x
assign mcasp_afsr = mcasp_afsx;( l( H' ~, a  m& Z& `! p
assign mcasp_aclkr = mcasp_aclkx;
* J2 x7 O( g. X6 j- y& lassign mcasp_ahclkr = mcasp_ahclkx;2 t- t' V0 d9 p$ ~/ Z
assign axr1 = axr0;

6 R, A7 U8 L. O; K6 ]( o
/ f% j& D4 C# F
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
5 n+ @' h2 [5 Q$ {/ T' P* `8 ~
static void McASPI2SConfigure(void)
: x) R$ W- }$ {! D- ]" p1 i  k{
8 A. p0 ^' e* T7 AMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
# d- s" E% Y! Q: B* AMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
. z; l3 ?+ I! V: U4 {$ u/ f( FMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
+ d" Z4 I( f0 p) V5 T  B: ~: wMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
/ }& V/ g! `$ K! R4 wMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
  e4 u% d4 N8 O% N6 [MCASP_RX_MODE_DMA);
6 O" }0 u. |: b# i2 PMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
1 M. J# [. F' p$ g( `MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
2 S5 R* Z" \3 }! Y( d- y/ g- }McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
( U% d$ Z& _+ B5 O) T3 QMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);) s7 a( n& J" ?) T
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
3 R/ k, |, `5 k' zMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */3 V8 G5 u, ^0 t% d
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);0 j6 P$ N: k- E; m9 t* U% K
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); . A; [; B% {$ w$ t# I
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
) w2 E2 a" B8 o7 D  f( `: R7 O0x00, 0xFF);
/* configure the clock for transmitter */, t9 H; c% u/ `. L
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);  `( @+ |5 K* `/ Z" A
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); * D2 t& `2 t; R4 {8 K
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,- r" t0 Y5 ?/ s, F" g2 s
0x00, 0xFF);
- c6 I4 Z3 K' j8 r* Q' ?$ @, k1 M$ x8 W% j" n
/* Enable synchronization of RX and TX sections */
  U7 v4 S/ t- u8 K1 y) g$ JMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
2 k) r1 _! E7 o# V. dMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);1 x2 n- ?& P2 [/ p" b. I
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*8 I1 {9 k: Z6 a% V6 V7 F
** Set the serializers, Currently only one serializer is set as
# y) I+ w9 ?8 S** transmitter and one serializer as receiver.
5 _, {/ q) |( x7 ~9 b: l7 J  E/ A*/& t2 G7 Y" O* X! @
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
8 p# m! b& [8 }0 j' C4 L. jMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*/ \; Z  @& D2 H
** Configure the McASP pins : K0 h& G- j8 r9 B9 @1 [9 q4 l' U
** Input - Frame Sync, Clock and Serializer Rx  j4 B3 l4 L: Q8 {: ]5 k
** Output - Serializer Tx is connected to the input of the codec
1 u2 o, U, z1 X, h, d2 K1 U+ B*/, G' X$ a# k( T+ I
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);, b/ C; B5 s# Z+ c" R
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));+ g# x/ T2 m, X, u
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX* Y: A% Z4 a' a: [- z# G5 K) o' E
| MCASP_PIN_ACLKX
7 G$ z0 v( I- k4 y7 N% C  \| MCASP_PIN_AHCLKX1 l* b% z0 {  i4 O9 u( y3 P3 F
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
, a3 X9 t# I; q) r* N4 Z" j( r$ oMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR . N8 R' g/ }* @9 Z. M( Q
| MCASP_TX_CLKFAIL
0 V5 n& {; f" `% n| MCASP_TX_SYNCERROR
( @+ b9 v5 r7 W& T; @6 ?| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 6 c7 N* e5 R6 x+ ]
| MCASP_RX_CLKFAIL
2 }' W4 W# k: N9 J. B| MCASP_RX_SYNCERROR
7 ~* ^8 V: f2 c$ E: H5 v9 h; ]| MCASP_RX_OVERRUN);; [- @% x# u4 w
}
static void I2SDataTxRxActivate(void)
$ g' ^: ^3 ?' O" k9 P6 P{* f, B0 H' }4 K' V( m
/* Start the clocks */3 i; L! ~( Y# ?( ]* g) G
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);& C( ^5 c& x+ N. k& E: o& [
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
* m( p9 u) K% s; X' ?EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,. v- S1 i: k. N# {! h/ T
EDMA3_TRIG_MODE_EVENT);
3 {' W' v1 x, a9 }9 i! ZEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, + Z( j* L# N( e& b+ y! z! z
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
/ B' W1 H. S/ z4 uMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);% t- C7 b, {' F  X8 y5 `* r3 f
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero *// i' D( j. G5 _% l
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
! b& w3 B* U# M! y4 i, Q0 E3 mMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
0 s; r! I# G  \* q3 NMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
' d( A+ f$ }, h. E}

3 K% A- L! _) \! `) C9 |
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

5 y! N. \6 |0 K7 R
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-19 17:23 , Processed in 0.044122 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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