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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8557|回复: 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,7 S* ?2 J- V/ l" f6 C1 K& w- `
input mcasp_ahclkx,
& g' T+ y. H) @input mcasp_aclkx,+ W1 T/ I" S& u( p0 {  y
input axr0,
. x. a! g  m. }/ g' U2 T" A6 Y  z# g- |6 B3 }. s
output mcasp_afsr,
- S8 x: v5 [6 J" y: \& Uoutput mcasp_ahclkr,
. M2 N# n% b$ q3 \output mcasp_aclkr,; n4 s  ]0 [$ R# L6 O9 e, U$ O
output axr1,, F5 Z/ E! R& ~* s
assign mcasp_afsr = mcasp_afsx;
# R# V, r) C1 _  _assign mcasp_aclkr = mcasp_aclkx;
  u' Q( a9 ~5 a" d. Y4 {  H$ w& cassign mcasp_ahclkr = mcasp_ahclkx;
" E3 P- S4 O" o1 U- h' Lassign axr1 = axr0;
( l8 E: J3 C' K; ^" X! ]8 U

' z% f6 x! q; M8 v5 N3 ?" j
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
$ ^# O! s, g$ I6 k( H) f. \3 h. ~
static void McASPI2SConfigure(void)+ a9 ?! l# |' n) ^+ K" Q
{
- g6 I5 H% r) K; `- R2 B9 _McASPRxReset(SOC_MCASP_0_CTRL_REGS);. u; X$ N2 [$ Q) F& n& v6 r
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */5 t! _  @5 P  M4 `3 c* S
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);8 X, S$ g) U2 T8 `8 e( c! K2 e4 x
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */0 e; j  ]3 p8 ]$ U
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
8 P& g. P- t2 Y4 wMCASP_RX_MODE_DMA);7 J5 N$ }/ B2 Y+ o3 Z  S
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
5 a+ D1 a7 [% n% }1 p* ]MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
9 M0 u, U. D/ r9 |& R) LMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 7 q) H( r# Z8 Y7 Y4 m# i1 M) {3 ]8 \
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);  J( Z  i1 w/ c# L3 X9 |4 K! U
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, & t7 ?& N, `! [0 ]; w# x( K% a
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */: G4 y5 E9 ?) B2 c6 w' K
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
" `* x2 a) i! E! v  ?McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); * h+ o0 S' i; h. X- R+ Z
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
/ O' o" Q. E* }" K  h. p1 w5 E! y2 Q6 ]0x00, 0xFF);
/* configure the clock for transmitter */+ H4 C% E5 s) C* J% a8 C! D3 V" A# d
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);! d  x" G7 c( j! E
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 5 P3 w* G7 C+ H& U1 I7 M
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
" I1 |8 m8 x0 [. f5 `2 U, _" l# k* k0x00, 0xFF);
8 C9 F# i/ x2 v5 w" S
& z3 q  V8 `8 }7 x9 z/* Enable synchronization of RX and TX sections */ ! ~0 \7 _6 G$ f0 d
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */) Y8 y: ~4 [/ V, w
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);+ `/ X! |  e% ]: B; {
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*& o( G, w$ B9 z6 r+ a/ P
** Set the serializers, Currently only one serializer is set as
2 V. G4 ?9 f5 Q7 e** transmitter and one serializer as receiver.
0 X$ \& f. b& ?" {7 ^9 E$ w*/
& {- s% A& h  lMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);& n7 P9 A3 p& v6 G- N0 x9 B7 A/ z
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*( ?( z$ l' R$ S% I) W% Z
** Configure the McASP pins ) c! M8 O/ K5 C3 V: S
** Input - Frame Sync, Clock and Serializer Rx
4 Q9 Y7 j* |7 m/ _" a( c1 g$ w** Output - Serializer Tx is connected to the input of the codec 3 V2 Y8 _" [6 O  O6 p& m/ ?/ S' c
*/
: X0 Z! L, r2 NMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
  v& S8 L2 D; W  r4 _8 T& Q' GMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
- A+ F+ I9 g; |. L$ x. M+ b7 q1 bMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX, t$ ]3 D9 ~! S. a  e1 T) n" L
| MCASP_PIN_ACLKX
7 X3 K! ?) L& f5 n! ?0 u, K| MCASP_PIN_AHCLKX1 c# g% z4 y/ |5 l
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */+ s) }' ^) L  O$ ]% ?& j
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 7 Z1 e7 M! p7 S! H! m; _1 v  D2 {
| MCASP_TX_CLKFAIL   D6 m7 o5 ^$ R3 A- B2 x" U
| MCASP_TX_SYNCERROR* @4 U3 M( y; X8 Y* B. M8 d- d
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
5 f! x+ W. d* k3 p# v5 G8 X3 C| MCASP_RX_CLKFAIL$ g; k: E- C: W6 b: \. C; I
| MCASP_RX_SYNCERROR 7 g5 H# Z& b2 Z" F/ u. u
| MCASP_RX_OVERRUN);
4 V# E. p/ `* P# _' h( _) ]}
static void I2SDataTxRxActivate(void)5 z1 X3 w; E7 R3 f/ y# z
{, C' m& e* S+ j0 p
/* Start the clocks */
3 s- H. i: V2 Y- I" }! NMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);& @9 u2 C! Z! N. \! `
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */6 `* a1 L! v( J& `* u0 ]6 ^
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,. M  v9 w7 G9 L( y8 q
EDMA3_TRIG_MODE_EVENT);; p# F9 T7 g5 \) G4 L% I& `
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 9 `) t  a1 j" v6 \( k
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
0 `8 K' T2 b4 J4 E: k' uMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
! p: E. ~* v( L3 s4 k) H. f' BMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */8 m; X) p# U! L( c
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
7 `0 l2 j/ t3 }5 z; nMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
: C0 m, ~# W# u" q1 \McASPTxEnable(SOC_MCASP_0_CTRL_REGS);* E/ u# t, i4 ?" w" X. X2 c
}

2 L/ q% F1 X* @4 e. O! p) R
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

& t; f$ J1 k6 p
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-27 07:04 , Processed in 0.044210 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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