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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13199|回复: 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,
) y" @6 Q+ K) }7 r& Y4 ~6 vinput mcasp_ahclkx,
4 @. q$ |0 h+ V, i6 X2 A, b: yinput mcasp_aclkx,
. ?) Q: a& v& L2 Q* I1 D1 Uinput axr0,
! `* H9 ]3 X5 C6 F
9 _3 k8 d4 q: k$ `0 aoutput mcasp_afsr,
: N! A0 A( ?% x) v! d$ c* \output mcasp_ahclkr,  V; r% F5 e. p1 ^6 x$ D
output mcasp_aclkr,7 w' Z3 R! z$ f) g( O. C
output axr1,
* |. J0 T6 e* W
assign mcasp_afsr = mcasp_afsx;4 p& L; D2 ~* |" O
assign mcasp_aclkr = mcasp_aclkx;6 D& m* m0 V" b. l8 W
assign mcasp_ahclkr = mcasp_ahclkx;- P9 ?, J; s" D& g/ ]4 W! K
assign axr1 = axr0;
" x  _4 |$ ]2 A% R7 k7 j

+ x4 a  ~9 c1 z" o( e( |
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

* c: ~. c, ~  m( U3 F- }& b6 m
static void McASPI2SConfigure(void)
5 H  x- T) X6 V( ^* }' W{
6 i. u# k$ Y2 }& L4 r1 M* MMcASPRxReset(SOC_MCASP_0_CTRL_REGS);( z  |( v1 P: P
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
$ B9 [! v: v  X8 \- R8 BMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
2 ], m1 S7 d4 E+ N- Y$ u. BMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */3 E; t; o8 Q% H( d
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
0 ^6 T) R1 F4 l( f' m  t/ S9 tMCASP_RX_MODE_DMA);
4 F! I$ c7 T2 r( k1 w5 ?McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
* s" p1 N/ P5 m; v" FMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */# H# m- e  a5 g( r4 C7 J
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
6 C! u8 C0 b- Q- }5 l; @+ EMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
' z  |" {5 h4 K/ e' v9 o* GMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ; s# q4 ]) A! b! l5 w: V9 P7 u
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */( W) M: B/ R3 I
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);. J8 y# C4 P2 P. g9 h# @$ j
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
+ W5 ~: G' J! I( K$ PMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,) I  ~3 ~  _, \! p; g
0x00, 0xFF);
/* configure the clock for transmitter */, h6 _- `6 y; m( W
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
8 W7 ?( a$ H2 i2 ^McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 6 Y! p) r( D) n
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,! [8 `! L0 y6 o
0x00, 0xFF);; t+ p! U' d2 W1 ~

; ~- [/ V: u8 {2 k. \/* Enable synchronization of RX and TX sections */
0 ]6 h" N& {# D. |McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
( ]- u$ `+ I* r. r6 g4 cMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
  O7 S6 q5 O6 c% q5 g  kMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
6 [; O4 L% T: H) P; C$ r** Set the serializers, Currently only one serializer is set as
0 k! h# Z/ d1 _; a/ i& \( M: t/ n! o; B** transmitter and one serializer as receiver.
: O- z4 A3 b0 r9 J! m*/
2 a" c1 \1 K- Z6 C* TMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);7 q' b; d0 P$ Y; S( R7 O- u0 T& X
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*$ \- ^6 v7 ]: x  b$ @1 S
** Configure the McASP pins , a4 G* ], P9 x8 o  r
** Input - Frame Sync, Clock and Serializer Rx$ e5 o4 p  w9 V0 ]+ U- ]
** Output - Serializer Tx is connected to the input of the codec # G: O0 w( S! b3 K7 O4 g7 h! I
*/3 E2 y% b% @8 k: D1 G- u; a
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);# ?  E% P& @7 z% n# m
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
, d: i; D" w5 G. N: ?McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
  `- Z7 ]# a, O  @" R" G| MCASP_PIN_ACLKX
/ y% P/ I. z$ M| MCASP_PIN_AHCLKX
' W- ~, v0 Z  l5 Z% b| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */3 D0 |6 z+ A/ u& @) |
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 1 Z% n# o# y2 c3 g& P; z) f
| MCASP_TX_CLKFAIL . _! }, D9 |/ j% _
| MCASP_TX_SYNCERROR
" X& C* z1 v7 ]) d& T| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
, e8 G; D- `/ Q' @$ P% T* y| MCASP_RX_CLKFAIL" ^6 b5 A8 u& N3 i5 t0 ^7 P( v9 H7 |
| MCASP_RX_SYNCERROR
+ G! H/ Y4 k% _| MCASP_RX_OVERRUN);
0 m3 J( n$ ^3 j. u8 x! b8 {}
static void I2SDataTxRxActivate(void)" l3 _8 z; E+ X0 w5 r4 u
{  b$ ~2 |! ]2 t  _
/* Start the clocks */( s, z9 c, v5 L) q0 `$ n
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
3 F) n: g0 \: eMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */( N' d5 a( i# ?# z3 N
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
9 H1 A$ i2 `+ e. ]8 ]: ^EDMA3_TRIG_MODE_EVENT);( g7 Y7 k) M3 z* a# t  p( C
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ! d, p8 Z4 F- s0 L* p+ P
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */2 U( }+ |/ @7 I) ^2 i4 Y1 C) \
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);& ^+ L) s- ~6 ~- _9 K( ]4 E- q
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero *// Z0 k; f; Y7 O1 L+ H( W+ ~0 e
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
% B7 _8 A; n5 i. C/ a' U' k+ x) FMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);* _/ B: h1 _. W" e* _0 i
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);9 v+ r2 k# D( z( z2 x
}

1 K$ {5 z" k. T! D6 K& p& k7 a8 e
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

" h  V: U- o% J1 c- A4 V" E
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-9-11 07:49 , Processed in 0.041986 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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