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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10082|回复: 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,4 W- E# R  k, a1 O1 e; V) g2 q( ?
input mcasp_ahclkx,
/ E4 ~0 y1 _% Q- i- jinput mcasp_aclkx,! t6 Q0 T, T0 V7 H: O0 e. Z" I: \
input axr0,
1 y  I' O9 z7 a( M8 w
; S5 _" ~& n# _output mcasp_afsr,
1 n( F5 o; Z$ P9 L! J0 L, Poutput mcasp_ahclkr,
  h' Y9 O, x3 r- b0 E; ]1 ^& n+ z" houtput mcasp_aclkr,! R! t' e* ]% F% ~
output axr1," z2 I& o% f/ r
assign mcasp_afsr = mcasp_afsx;% u3 c4 L* y/ p$ Y: O
assign mcasp_aclkr = mcasp_aclkx;* n3 ~# V5 m. t) E9 ]# D. y
assign mcasp_ahclkr = mcasp_ahclkx;
) }$ p# Q  t! g5 xassign axr1 = axr0;

+ m, v4 H8 {( c! L  [0 R1 h
% _9 T9 y) ~9 O7 q
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

2 V( Y( @( T5 ^  h7 c
static void McASPI2SConfigure(void)
( A& Y) T6 q! ]* \4 Y{) ?3 O2 {( e( x! h' K* D
McASPRxReset(SOC_MCASP_0_CTRL_REGS);/ D8 [* y/ {( J( k0 E
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */8 O8 ~( |5 \" M! c
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);, `; S6 \3 i( S3 H6 [0 q- W
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
8 u: N8 z8 c$ d" y6 l* g1 B: r' oMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
; [' V5 c+ }5 |; P  c& AMCASP_RX_MODE_DMA);
" Q5 \% I5 P) BMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,4 p+ U) t3 _) J  E8 g# E
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
5 Y8 l$ B2 w' c4 k& z. HMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 0 [1 E3 r5 r( T' S1 q" w3 |+ S
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
3 h3 z/ @# K: p  ^" o1 ]8 b2 D- XMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 1 q3 w8 J; ~2 d& c1 E
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */8 v9 [: _6 ~9 z* j) A! q$ F
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);0 h! E; W1 E  L/ D! `6 p" u
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); / R# @+ r+ x. |0 C
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
$ e( v+ q% D' X2 J" S0x00, 0xFF);
/* configure the clock for transmitter */" @- O0 |% \6 A& j$ L( G  e
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);+ c; u$ S: H( s$ _) g! a0 s
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
3 s/ Q5 q! @+ @; T2 q. c6 BMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
+ _$ X! b: S' A5 d3 `$ b0x00, 0xFF);
9 W5 C! \; E5 i/ p' ^& m1 v0 L! X* [
/* Enable synchronization of RX and TX sections */ 5 k% Y( w- B8 E! d7 Y* L
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
1 S" u0 O: g8 O9 ZMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
2 U( H! j7 w* Q" ]* `& r$ SMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*) f! k) k$ f# ?1 M7 F2 q
** Set the serializers, Currently only one serializer is set as
7 T5 H4 b' |6 V  e" d9 ?* N** transmitter and one serializer as receiver.
$ M; N$ i+ z6 [*/7 L- O1 |: v0 F1 d& h
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
$ [) C% g& D; w" X+ K; a" A" D. M8 lMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
5 D' m3 n2 _) M' K& a0 |2 s** Configure the McASP pins
' ?7 }- ^: b: H( H' Z** Input - Frame Sync, Clock and Serializer Rx4 }. \- Q: c6 M& g, X$ Z
** Output - Serializer Tx is connected to the input of the codec * Y+ l6 |) s: D  ?& I
*/
' i( H9 s8 Z5 Y6 rMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
  J$ E3 }) A% X0 c  n+ P0 n& M( h4 B4 p+ cMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
8 y; s7 ]. k4 v1 u1 VMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX/ o- u' v3 z- b; e8 {
| MCASP_PIN_ACLKX$ ]- y. ]; z5 O( _, Q" S
| MCASP_PIN_AHCLKX3 y8 a9 Q; N; ]% V( q
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
9 `( ~" i! u4 l+ F% t. EMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ( g) C( w  N( P0 x
| MCASP_TX_CLKFAIL
8 J# s3 i8 H2 G+ p' Z| MCASP_TX_SYNCERROR
7 _; W) Y$ Y4 ?6 n' s9 n| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
0 Z0 v- ~) C; y, s0 k+ A- || MCASP_RX_CLKFAIL
  @% t/ S; b* n' D; N| MCASP_RX_SYNCERROR
# D3 }8 c. D9 Z2 a3 h| MCASP_RX_OVERRUN);
# y7 G3 a/ `; B6 B# e) [/ \}
static void I2SDataTxRxActivate(void)
1 T) p# ^' m3 K0 Z{) V5 ]9 {& e$ N7 `0 v; x, x
/* Start the clocks */
4 e4 x, ~! L9 g& Z4 TMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);1 t. t! _8 u; b/ O1 Y1 b3 v8 }
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
  k, f% T2 C( X* K2 b# ?EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,7 ~) G3 F5 X2 G
EDMA3_TRIG_MODE_EVENT);
: D( D# k+ \3 g5 B  f  l( i9 {EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ) C* d( y8 z9 b. V0 @4 J
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
- C: i- r+ l& j+ E5 oMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
: H8 w$ k" \: [+ O5 m; bMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */7 c: f8 O; }1 q  S* B$ B- B
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
$ Q2 u$ P- M! N. _% \$ `0 P4 vMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
0 u$ t7 ^; Y7 BMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
- m: T9 \, U1 G5 g}
8 ~" p* W. B5 Y) N1 P
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

$ K. O, {. I8 ?- _4 f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-28 08:47 , Processed in 0.041051 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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