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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13034|回复: 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,  C; j" e, p# }$ c1 k! A' r
input mcasp_ahclkx,8 A7 k5 W3 L8 Y6 Y5 t; `: \# y: E; d
input mcasp_aclkx,
1 _) k- _2 ^' q  Winput axr0,
5 S) Y- a( b- }2 B9 |. }* m- S
1 f4 f0 h; p- _, c" c3 Eoutput mcasp_afsr,
. ~) D& V9 d' soutput mcasp_ahclkr,  A) u: g# Q: d4 A. T# s
output mcasp_aclkr,  G, y3 [: F/ i% m1 d9 P) c
output axr1,) k  W: k9 Q. G
assign mcasp_afsr = mcasp_afsx;1 x7 r* Y& r1 k3 y9 I. N+ J. z* L8 ~
assign mcasp_aclkr = mcasp_aclkx;* T8 ^* `0 O% t$ j" m: n/ ]! Y5 j
assign mcasp_ahclkr = mcasp_ahclkx;% s" r5 d* F. J; O$ |% T. C$ p
assign axr1 = axr0;
* A0 b' j2 j7 r, s. O& M

6 ]1 \9 Q) m/ @  F4 u
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

& a5 s- N' H5 N- R% i
static void McASPI2SConfigure(void)
# }1 J" Y) \7 a1 s- K{
5 m: m& S+ s/ ?3 u9 eMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
; @9 A$ t, D! y2 z* j3 A. MMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */( X1 |1 a) |* Y
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);3 |" m; t. p' m! |' S4 p+ v
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
( E, k( H4 J! Y9 s' mMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,1 I% \. C# C. I4 w" N2 s3 ?- _6 N+ D4 L
MCASP_RX_MODE_DMA);
1 i8 N) _( {6 LMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
6 v) t' r/ o5 u6 J. o; p3 x; C( L( xMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
# @% S# f0 F/ r! WMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, / H' {8 p$ d3 K+ \5 ~" e
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);2 p' y4 d0 _# Y& a8 {& T
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,   X- G8 [1 v2 ^  x. F( j' J
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
2 G3 Z6 e. k+ T( h& {) F8 XMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
) g/ \/ W* L: cMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
7 o1 \$ |& \' P: @6 pMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
2 o$ g, v1 q/ b2 d' w0x00, 0xFF);
/* configure the clock for transmitter *// Q0 L( t% ]( r! d& y# f( T
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);- g! c* J  L+ s5 b2 J( i
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
5 @0 ?/ W8 g6 G/ _8 f! cMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,$ R' h. O; ]8 W! r9 C
0x00, 0xFF);
  ^& C# j# {( H! V# m% g7 h& H
5 \$ ]" j3 t* V% }& A' `5 i/* Enable synchronization of RX and TX sections */ 0 v# ]. p- V" K: z2 d4 d" B) M
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */& P( m- A+ a' S
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);" D; D3 d4 P2 }7 g
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*5 ]3 N6 Q# c4 W; x& c" M
** Set the serializers, Currently only one serializer is set as1 r2 M, V, N: ^1 R
** transmitter and one serializer as receiver.# c6 ^( o4 _) S0 J* E" ~4 F
*/
- {- ^3 B# `8 V$ J- FMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
6 l) H3 g% P9 D8 n3 VMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
) Y8 ^6 }# E# R0 m' C1 F, W** Configure the McASP pins + J/ t0 h- `. d2 a# ?/ w
** Input - Frame Sync, Clock and Serializer Rx
+ t, c  q7 f: }3 S7 ~** Output - Serializer Tx is connected to the input of the codec
( z' S# w5 P$ c; E3 f6 s*/% ?4 M9 D3 V* p& u6 C. V
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
, e# G8 U) W+ P( S/ u! sMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
% a  h6 O+ F4 ]- M! ?McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
1 U: l5 D; d7 T: @! H| MCASP_PIN_ACLKX
& T9 b) B; l  }: R! f& D! a0 j1 c9 a| MCASP_PIN_AHCLKX
, @+ U* I8 q* u5 q| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
0 G' g- }+ {, ~7 ?% T9 T' ]McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
7 }2 y, w3 ^7 E: _, }| MCASP_TX_CLKFAIL : d6 S  N. h5 A* J/ k  |' F: N
| MCASP_TX_SYNCERROR
/ G' K* L( }, U4 v% x; q| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
1 @, r+ L1 X1 F+ _; G6 o, A9 e* || MCASP_RX_CLKFAIL
( `* K2 C3 z4 t! u  T| MCASP_RX_SYNCERROR ) R8 K6 z. a% O# Y* z" K
| MCASP_RX_OVERRUN);
  q# N+ Y2 c/ L5 R( `3 |}
static void I2SDataTxRxActivate(void)7 C: E- P3 |. v5 A
{
6 j- Y% u6 G4 I& T* J/* Start the clocks */. X9 R3 `. Y7 s; W! |1 ]1 r( C$ d
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
% \6 m3 `1 x8 `8 l; r/ sMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
& c3 o' i7 r. q$ r/ [8 HEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,  B: @( K* Q- u% U  g
EDMA3_TRIG_MODE_EVENT);
, \3 B$ ^# k1 x' j5 T. Y/ L, _EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, * l1 m0 E7 I" l- T1 Q5 t. Q
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
: ?, {3 P! |/ [9 x) ~McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);8 M: `7 ~1 S  B9 i* K
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
' I& X1 p) Z4 }: J, y/ T4 }. Jwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */' d% M5 x; s1 }: j& \
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
1 \/ G" l6 f+ T* ^) v+ P$ qMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);' x1 u* q. {* w4 i- E; Z+ h, l
}
9 D% H3 I* D* K8 x  q- `* X
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

! C8 j+ l, O; }$ ~: n
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-8-10 21:33 , Processed in 0.041906 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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