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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10685|回复: 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,# e( D( n8 N* E' E$ {
input mcasp_ahclkx,% v- K) R  ~" ]6 v2 H- u- Z7 Q
input mcasp_aclkx,9 u  E5 N# K% S5 q
input axr0,
( z& T0 l" Q+ m0 e' v/ H4 |- Z5 y5 E9 C0 x
output mcasp_afsr,& ~# `, N7 z  ~, Y% D% S( C  [
output mcasp_ahclkr,+ }( Y' w2 F9 \. v
output mcasp_aclkr,7 x8 Q- K) `7 [  I2 [' P
output axr1,
0 s8 _  ?: Z1 |: J* R( Y
assign mcasp_afsr = mcasp_afsx;6 m; |# Z$ Z0 |* O  b
assign mcasp_aclkr = mcasp_aclkx;- g0 N3 L; M; j
assign mcasp_ahclkr = mcasp_ahclkx;& v5 w; U* }6 C( Q8 F3 ^* x
assign axr1 = axr0;

. t1 i* z1 ^/ K
) i% D% U( N* ~. u3 G. l
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
( I4 O7 R2 M: y( Q. L
static void McASPI2SConfigure(void)
' W4 F; x/ y6 z8 }2 @+ }{* z0 l& N% J0 p0 K
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
$ k$ f( D8 o; p, g  xMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */* I; ~' A; X6 b% e
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);/ l6 J6 r1 p/ J
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */) t2 z) V% Z! P: u% k' J# \
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
) ^" b) M6 i5 Y' U+ R9 y3 gMCASP_RX_MODE_DMA);0 `' a8 Z: e" Z3 |- z- C3 u1 h
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
3 T8 \; S! a. l$ R6 Q: xMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
0 {/ f# G0 {% rMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
! j1 E7 q( B' p% Q  O2 h6 G6 ?MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);/ f! t3 s! t" ?) u8 z7 d* `  ~' E, S
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
2 m8 {1 r4 T# v/ mMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */) ~* B7 [3 }% ^6 s2 d$ Y5 i* n
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);9 v3 O( _$ K7 z1 _, j* }  u1 ?
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
, U7 V3 `- g0 U# q' O/ qMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
8 S+ m& w4 R; H9 W0 i0x00, 0xFF);
/* configure the clock for transmitter */3 C8 h+ `. w0 j: x4 n* H
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);: b8 W3 R9 ]" `7 p4 ?
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 8 k# I/ \; c7 B) g7 a
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
# X0 R3 S3 g( k4 t& G! @0x00, 0xFF);7 Z* M, F: R) D1 J% r6 W

! j5 G2 x% u- D5 c: A, t4 p0 m; @/* Enable synchronization of RX and TX sections */ 5 R" b2 D8 L; y) C. \
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
! J: E" z% I& iMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);" h& v% k/ K$ p2 h) T
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
) j9 R: R' r' d# E** Set the serializers, Currently only one serializer is set as# |' l" [  \- F6 f7 ?; _& x+ I( a
** transmitter and one serializer as receiver.7 I% z4 G# }) S  A8 r
*/
: Q; W9 X7 m" O$ u4 X! KMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
* B. i" k$ ^, J2 M- Z' KMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*2 T; T, W/ k( y0 o7 U* s! z
** Configure the McASP pins
: j& @( V  {) j" w& e6 v, f** Input - Frame Sync, Clock and Serializer Rx3 j; \0 l" N2 D( s. s4 Z* w
** Output - Serializer Tx is connected to the input of the codec 3 F, V# o8 S6 B1 K
*/
  ]# s6 ^6 p9 cMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);7 A. D. R3 q' N
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
* j' U% \* P4 V6 p! l9 [McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
+ T& Q* p  y# H' W! z. F2 K1 Y| MCASP_PIN_ACLKX
/ ?; l/ R- i$ d& o! v| MCASP_PIN_AHCLKX. _3 `7 D1 F: M- n
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
! A. u; L& ]) @5 R; oMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
3 M6 z0 _! W* ~5 J( E| MCASP_TX_CLKFAIL $ n" S/ L8 }+ }9 u: D2 Q& F. i
| MCASP_TX_SYNCERROR
3 W2 P# g  W5 m" V) y3 N4 V6 || MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
3 X$ G3 f3 j3 ?, e* c) V6 m6 r1 u| MCASP_RX_CLKFAIL
8 f. p6 Z1 u2 M3 [1 a$ d| MCASP_RX_SYNCERROR
+ e7 C7 a! f4 U; P  Y8 V- K1 `| MCASP_RX_OVERRUN);# {  g- P7 F: j* Q* a+ l1 X
}
static void I2SDataTxRxActivate(void)
$ d, M( m1 m3 `{
7 C" S; n6 c) O# j! _/* Start the clocks */
8 n" o. a) P3 B0 ~. d" l# I4 ]McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
4 f1 L: A. x: ?( TMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */4 @0 K/ m5 B* V$ v1 @
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
" e! {$ [+ B) ?0 I, i. vEDMA3_TRIG_MODE_EVENT);+ f- y. U" F/ Y# v2 H6 U. w
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
4 p' W" Q& g7 H2 V  G7 q7 x0 wEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */" @3 Z  U: m4 z9 F' ~& m# ^
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
; b5 S* F- [$ T2 ~/ @McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
% R" l- U" k1 m% y2 Awhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
7 r" v! v7 u/ R. o' ?) SMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);; ~$ ~( U: B# v5 G# Z& v8 Q) x
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
- T0 b$ V9 k  Q4 z1 g}

- w* K- ?7 F/ Y* p, H9 {( }
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
; [5 W. ^0 @0 W: n5 x+ U; k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-13 02:33 , Processed in 0.038300 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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