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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9745|回复: 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,
. _' S' u! i3 N$ z+ N6 r: Q! c2 L1 minput mcasp_ahclkx,3 ~' K7 s$ K) B
input mcasp_aclkx,/ J' [( b. r7 \3 H" p
input axr0,
9 b3 v! V/ I' T6 h; n
7 O0 T5 i+ R" i+ Z/ Q! x" {2 K# _output mcasp_afsr,( y1 }  g) ]$ u& W8 U5 e  _, }
output mcasp_ahclkr,
9 c* q% `( H5 I+ ]3 P! }output mcasp_aclkr,( w6 D! v  F8 h, I9 V
output axr1,
5 |5 I  V( ~) v9 a
assign mcasp_afsr = mcasp_afsx;9 [, F4 w: `5 \( ?1 T$ y
assign mcasp_aclkr = mcasp_aclkx;
, W+ T6 e- k* p5 t. u! V& |- @4 @& Bassign mcasp_ahclkr = mcasp_ahclkx;
$ D* B% z  I  I+ iassign axr1 = axr0;
- x# l1 E( J* T' d6 S2 k3 f
3 p& ^8 h9 B! j; h
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
  l/ A' U! m1 r8 h$ W
static void McASPI2SConfigure(void)& J3 x" B  i! l) }& N- v
{& [1 w, M: {+ U( z0 d
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
- @% }: O' ]. |: V# [! aMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
0 l5 K! a, [2 S4 h, a- HMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);0 V# }; L- j1 n* `0 G
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
; I% M9 _1 m6 R# @& N3 x4 h4 fMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
3 o8 U( D& z, l& `! XMCASP_RX_MODE_DMA);; |* ~% t. N/ o
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
$ c# c0 ]; H2 E# {& d3 ]4 BMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */. f5 w+ T; ~' o2 F- S0 T
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
7 Y1 r* Q2 j& o0 ~1 ]$ R+ RMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);: w! q* `& {( G( G6 c5 r/ f8 {
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, / Z' w# T1 a6 t4 B
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */+ {3 ?8 D9 Q, ?+ }) T
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
8 P5 {' \& O- H4 d) aMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 7 v8 v" J2 I) w7 j
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,! A' L0 S$ l% B
0x00, 0xFF);
/* configure the clock for transmitter */+ p' M% q# L" P1 h
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
% ?/ z, _) q+ l1 N* yMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
' V, D! f" e- W: U2 x" \/ ^6 l8 r6 _McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,, J+ _1 z# _  r  Z: K+ u8 \
0x00, 0xFF);) X  W8 n$ T' A& w3 n  A# E
+ Y/ N1 T& a% l5 E8 Y( Y! r6 _, Z) D
/* Enable synchronization of RX and TX sections */
5 G3 E( Z3 r# _  D( _, sMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
& P$ u3 }& f& MMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);  a/ W! r! g& j; F' _% G  a
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*0 @+ o' S& N% }
** Set the serializers, Currently only one serializer is set as5 J; J1 B6 o3 H8 j1 b" l- S9 {" n
** transmitter and one serializer as receiver.
4 M5 f2 S0 Q$ X6 @2 r' C- \3 r2 `+ h*/% Z9 w+ O* c+ A. f' N
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
8 O5 {$ R! Q+ T. |. g0 H1 c+ W6 n2 _McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*8 u5 E) U) j* q% I6 w# a
** Configure the McASP pins
& V1 t; C: O$ P) @9 [** Input - Frame Sync, Clock and Serializer Rx
7 z$ a9 M- O6 c5 M. A/ n** Output - Serializer Tx is connected to the input of the codec
/ _. d2 t0 ?) G*/
# X- Q; z0 F. R3 Q& eMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);3 S. z0 U: c5 P( Z
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));& @( j+ w3 g5 @4 K4 u. d5 e; J
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
9 K; h4 e& \& [9 U9 [/ t| MCASP_PIN_ACLKX
. Y. G- O, t0 R; ?| MCASP_PIN_AHCLKX0 u$ G4 F$ S; w, T: E
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
- q$ V' W% _- u/ J; m) V4 ]McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
$ C& d  i% @3 _0 @| MCASP_TX_CLKFAIL , a6 y1 B' f  b+ s2 K: f
| MCASP_TX_SYNCERROR$ e+ d1 I* @) Q' r, c) @
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
: G: v8 j* X; q# L1 X% H* J| MCASP_RX_CLKFAIL
2 |3 n# J9 s7 B: C/ f. n0 C| MCASP_RX_SYNCERROR / G5 _8 v' T5 X: I
| MCASP_RX_OVERRUN);
; U+ ]# l* C/ _. ^( O7 F}
static void I2SDataTxRxActivate(void)* t" f2 }* Q( r! [/ T
{& z( H9 s( P" ?* I
/* Start the clocks */
8 J3 N8 U; h" H1 KMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
/ R6 }: t9 c- ]+ _, KMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
9 x6 X% e  Z2 n+ B! oEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,# x8 ~% N' b& ]. \9 ]: l
EDMA3_TRIG_MODE_EVENT);' D; R- n/ _8 V0 Q; m. b3 x0 r* B
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, / J" h. F6 z0 y8 h, ?4 P. P
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
0 {  N9 x. t2 V+ B: q' xMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
) Y3 R$ u/ ^5 @- e! g- jMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */& u8 d, k& A9 ~
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
4 [  J% P' t6 R' d; `McASPRxEnable(SOC_MCASP_0_CTRL_REGS);, Y6 x9 |, i, `# y
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
2 E; ^8 e0 p2 Z( W+ A$ e7 ~}

( c  \; C# z0 g$ \, @* q
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

! s1 I: e: h, B; N0 `( Y3 c( \* ?+ Y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-19 03:49 , Processed in 0.040271 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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