MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8593|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,- T- M7 F; E; f( ]) a
input mcasp_ahclkx,0 y7 U" f7 q7 j) H% ^
input mcasp_aclkx,
4 n! O: B# |! W( @: J3 |input axr0,
; p+ o; k7 b! |. m- d# L8 p* l- l
5 d% V2 Y; f" w: @, d1 Routput mcasp_afsr,9 R8 s, o" Q: n' `3 W- W
output mcasp_ahclkr,; N9 G* R; Z8 V) n+ F* `8 W
output mcasp_aclkr,) W+ s, c6 W! b6 T! X5 G/ u7 y
output axr1,
* r" ?. ]* \- T2 y& O3 V* \6 j* j" S
assign mcasp_afsr = mcasp_afsx;
9 {5 A2 y8 h) E  Q4 p& f4 Xassign mcasp_aclkr = mcasp_aclkx;5 J  ]3 s; A- d
assign mcasp_ahclkr = mcasp_ahclkx;
; d( E9 \. T6 z4 ~9 [6 Cassign axr1 = axr0;

0 F( }3 \( N1 [0 J( G8 E9 E: j# L/ l, A+ P5 i, z
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

  D9 m  R1 w7 ]2 [  ~+ P
static void McASPI2SConfigure(void); b- w9 C# I4 j) i& Y2 y
{
, l7 F! _. q9 V4 bMcASPRxReset(SOC_MCASP_0_CTRL_REGS);- l, O- [9 ^. m
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
! I3 |. `& X/ H7 dMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
! x% {$ X# E% uMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */$ h, f1 k1 B8 E! W
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,9 W% b( M" e8 j1 C$ ?
MCASP_RX_MODE_DMA);
, P7 q# i/ H7 c/ u0 LMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,! e: A5 u7 O8 b# _. \
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */- s$ {! e7 A* a+ t3 U
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 8 C7 c  y& R) b$ P
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
0 E  f8 L& v6 j+ x0 e% TMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
  \0 [+ K" c  Q- XMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */+ Z* v# P8 b( J1 `' Y! m' J: X5 s
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
! {, M7 x# b/ \' w% l! D9 w% nMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 0 [$ r3 N: V7 _
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
8 A# K5 U) R3 B0x00, 0xFF);
/* configure the clock for transmitter */4 F! X/ _0 a& ~. A
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);1 ]" e& S7 N: |( C1 K% j, F% [
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 2 E# }2 ?& t! v! l
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,) O/ M: `) h' z8 a; J
0x00, 0xFF);9 P8 m$ l& X$ ]" D

6 O) r$ M; ?0 P, Z# c3 [& X5 ^/* Enable synchronization of RX and TX sections */
* O) A8 P: n1 |$ YMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */) c( ^. x+ v( h
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);4 }) u! W+ N  @& v9 Z) M" x3 T
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*2 r' W! V% W2 m% k; E5 A" k/ p
** Set the serializers, Currently only one serializer is set as
, n& z2 q' q) H$ ?$ @** transmitter and one serializer as receiver.
2 L4 e4 j1 l+ M' P*/3 i1 P& [# D: [2 M
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
% V% B# q. {* F* SMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*, p/ D8 x) X9 D" A; k
** Configure the McASP pins
. [' E5 X. i6 @9 r7 T) o** Input - Frame Sync, Clock and Serializer Rx
& D+ Y7 V2 g( K0 n1 P6 f** Output - Serializer Tx is connected to the input of the codec
. x* \% v1 @% I' |4 I. }$ A* s( U*/; G+ F4 V  h  c% z: M/ u
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);1 @, G* F8 L# y# u$ s* i0 L1 ], ^; M7 d0 ]
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
( o4 Y9 p0 M+ a+ w7 X( v& vMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
  y1 P7 P9 ]5 ~* G6 T| MCASP_PIN_ACLKX
" }+ g4 m, S' t; A: ]* h| MCASP_PIN_AHCLKX  |; V& v8 I. _. p6 }! n7 ^8 [
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
7 A8 Z3 e% p( a+ W. X, OMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ; o  z5 R: G7 n9 |# {( W- A4 x
| MCASP_TX_CLKFAIL
) f* N( S& L' \" d6 `0 t| MCASP_TX_SYNCERROR- v9 y" ~* j3 T6 a; h
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 1 D# X5 J8 K0 Z/ P
| MCASP_RX_CLKFAIL. s1 F- d* D5 H
| MCASP_RX_SYNCERROR
% i3 D! Y, S3 a: F| MCASP_RX_OVERRUN);' g3 J$ x+ l* M% \, g) h* ^
}
static void I2SDataTxRxActivate(void)
. m2 ]4 ~* c& ?3 J1 W2 _* Y0 C{8 d# K8 E  u- p5 ]) I, p2 x2 M) s9 d
/* Start the clocks */4 r3 b' I5 t/ B6 o
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
" ]' k' k  q" S; }9 Z( w; M" vMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
5 M. d- o1 r* {+ d4 w- w1 YEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,, a8 }& b  m" z; R
EDMA3_TRIG_MODE_EVENT);3 r, b+ F8 f+ G1 {9 b
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, , a2 `! |: v" B) Q9 ]. r- ?- ^
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */& u: l$ k# X( n* Q7 q) M$ h+ I
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);9 q7 {( r# `2 q* s. k# v  k
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
1 {/ v: K) y( d" Pwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
0 J* F8 ?. A$ M' I( z/ ~+ K- G( \4 eMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
6 q: T. i- R+ @- p* @6 B) tMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);$ S$ Y6 L2 K. n& |: z
}
# ?, V$ y9 O0 d' j7 l* u; ^
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
) h& w+ C; f/ T( e1 e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-28 10:49 , Processed in 0.037839 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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