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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12746|回复: 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,  e: i6 y% L  \2 N$ w# N& s
input mcasp_ahclkx,
' _0 ]. X: A3 [% |input mcasp_aclkx,9 y+ _8 L7 @! Z8 X% o; [) i
input axr0,3 @! D6 ?. R: Z" j8 D

$ l0 A% y  \3 B+ a& aoutput mcasp_afsr,! g8 u  y7 u3 G$ j* D) L0 Y
output mcasp_ahclkr,
7 ?7 T3 D/ r* l2 eoutput mcasp_aclkr,) P0 T! l. u  {( V9 K% E9 y
output axr1,) O* r5 X# W, P4 k2 B
assign mcasp_afsr = mcasp_afsx;
  U1 V8 p" y4 i) @: z& Cassign mcasp_aclkr = mcasp_aclkx;7 S6 H8 r( u$ ^5 L
assign mcasp_ahclkr = mcasp_ahclkx;
. s/ k$ w4 `' ]* cassign axr1 = axr0;
8 }  _: G0 A5 @- H1 K
: \" ?  p$ L5 a# ], S8 a0 ?1 _! @
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
9 @: q2 o" j, Q; R  k
static void McASPI2SConfigure(void)
4 T8 ~" q8 W% d4 G9 q9 P{
# l  ]/ X( C5 X1 R+ tMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
* D3 \% O6 ~$ h+ Z$ M" [McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
6 u5 u' J" Z5 N& P% tMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
3 X/ s- U6 N1 KMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */) d4 o5 t, U  |% X
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
- b; [8 Y: Z- b: _MCASP_RX_MODE_DMA);8 |; |/ q8 y; w) m6 V
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,! T0 l- N# V/ i6 m" C  z5 M
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */( ?# y0 L3 o& w% b
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 2 ~# e- ]6 h- z9 p2 V2 e
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);* o: `6 |% Z! ]# {+ b. n
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
" |. U) K3 |: LMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */. e8 i# X1 A0 n4 v( X/ r$ O7 I
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);& _* \- k! y; }+ R* }9 M
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 8 H* b4 ~5 r- F4 r4 x, t& ~
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
, g, ]/ Q+ Q+ F( f7 D0x00, 0xFF);
/* configure the clock for transmitter */
9 d8 t  V4 G* X6 x$ kMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
+ E% g3 F( u" C2 r1 p  f/ IMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
1 a: H6 N. C( ]/ O, sMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
, d" A* C3 u3 Z9 u) b3 s0x00, 0xFF);3 G5 [; d  J: v

" E- {2 ?; W; N0 K/* Enable synchronization of RX and TX sections */ $ z+ I9 C: v4 q- N
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
% r/ ~/ ^3 W' W7 R3 MMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);* Y" x9 C' y3 v! ^6 S$ j
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*7 i* l0 [% Q$ c1 O: v8 B: h1 C4 z
** Set the serializers, Currently only one serializer is set as3 `, x1 W' D1 c% V7 j) x
** transmitter and one serializer as receiver.! g' Y4 K4 h0 D
*/0 t: M% l6 Q" ], F* c0 e) i
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);( G$ i- J& f5 k0 A
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*# a* K- y1 @4 ]
** Configure the McASP pins " d4 q  @8 @1 i& v* ]
** Input - Frame Sync, Clock and Serializer Rx8 K- v( x! H$ P6 [. k7 z8 _7 k) [9 Y) l
** Output - Serializer Tx is connected to the input of the codec
' ]9 {* o: ~* f; E$ O*/- z+ J7 N7 Q3 I( s. e
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
5 l" u& A! w, D& S/ h3 ]4 ?! P! _McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
, L8 M$ R3 U- \% K2 wMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX8 `; ?; p5 Q: L* |% c2 @* k
| MCASP_PIN_ACLKX8 x8 r$ w% r+ l( G, r
| MCASP_PIN_AHCLKX
. ~7 U) L) B. D$ u- G3 D9 R| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */( U) T5 i$ r; A3 f9 U
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
) [, h" X4 L" f# U2 I| MCASP_TX_CLKFAIL 3 q) L2 t" E4 d3 g+ i4 W
| MCASP_TX_SYNCERROR
% ^8 l: d# e8 }8 v% B4 z| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 4 F' U( K1 |4 C! V) z
| MCASP_RX_CLKFAIL
5 b5 y4 q! f$ d1 M) c, @| MCASP_RX_SYNCERROR
, {* z0 \8 m( U* O, V. e8 G- R3 M. ^| MCASP_RX_OVERRUN);
7 q$ s% N7 s6 c! C, ~}
static void I2SDataTxRxActivate(void)
) a. V" r3 u- n{
! j# o& R% w2 H6 B1 z3 ?/* Start the clocks */
' ]' N5 e6 y5 ^McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);# K  |# Q$ v, |0 {( d
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */* T- |' W% w& C! i7 J# }! Z
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
' t4 }5 u3 Y6 @9 y3 S+ o2 Z% O, fEDMA3_TRIG_MODE_EVENT);1 U8 B! w  B6 }- H( K7 e, }3 X( G$ Z
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, & X5 P) e' i; V' k% S! ~/ z% C
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */! U' G0 I# }  t7 q0 F8 h1 P
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
% L2 ?8 S9 T6 x( E1 h* C  F; SMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
3 F9 g6 E; Q) l0 R# E4 l8 Iwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */6 `+ q6 T8 R7 }
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
! X2 A, W9 e" P/ u8 G) iMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);$ ]& P! f5 a  g1 N" v
}
/ ]9 ~. p1 }2 q' D4 l* v5 x
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
4 u1 {' n) T( @
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-6-15 22:47 , Processed in 0.042941 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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