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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1215

积分

金牌会员

Rank: 6Rank: 6

积分
1215
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,$ V, k6 }2 N- l. n7 n, h
input mcasp_ahclkx,$ p2 `8 _4 W! F+ }
input mcasp_aclkx," v  G% @% Q* o  B
input axr0,4 ^" f' \& Y2 A# q$ K/ z
! N( o8 m& \, @3 m. A6 h! d2 [
output mcasp_afsr,) V+ I$ b: [# S8 ?8 a. f% U: {2 J
output mcasp_ahclkr,: i0 X, d( E2 k+ a& k0 ~  ~
output mcasp_aclkr,3 C# x1 O4 L/ k6 v5 {5 N- w: G
output axr1,3 D/ a* K1 O7 d; [
assign mcasp_afsr = mcasp_afsx;
) y  _$ F! G5 w. @; G2 h- }6 iassign mcasp_aclkr = mcasp_aclkx;
) L# B: W9 k3 E5 ^8 }8 lassign mcasp_ahclkr = mcasp_ahclkx;7 @: S3 N7 ^: k4 z
assign axr1 = axr0;
1 S/ j( R+ m' X* R. r
9 a- N8 x; A+ U+ K1 d3 E
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
6 S) t7 l- a+ n/ ~; Z; w5 ]
static void McASPI2SConfigure(void)8 g( K4 b) m- G5 Q9 U/ m0 O$ P
{- x9 v" q4 Y  g7 q4 M) \. m
McASPRxReset(SOC_MCASP_0_CTRL_REGS);$ ^7 [( h3 {' e9 p0 B8 k5 m
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
7 Y: u2 m$ n: S( j- A  _& @McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);5 l: w2 j. M) y. ^
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */* M8 t7 m2 y) g0 g' z1 ^' d
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,, Y4 I2 G" H  d2 A5 ]7 o
MCASP_RX_MODE_DMA);
+ S8 }. u# Q( ?8 _+ K5 DMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,% z7 _( [+ ]2 A" b/ E; K: y
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
2 e$ \2 k% \6 F! H+ m) c7 FMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
+ w% N8 N: S# ?6 {MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
. Y  _) d- V7 w2 ~, {; Y8 \* Z5 VMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 3 d, C- Z# F, @0 M& |
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
  z) ]' M. {3 W3 w  I5 k: X7 p) KMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
. _/ t" P6 M$ u6 IMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
* E1 K5 a5 P0 f9 a. W& zMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
% M/ g5 R( X$ N5 x0 x) R9 B0x00, 0xFF);
/* configure the clock for transmitter */( J1 y) G7 E' |+ N" P7 f( E$ p' e
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);  j; n; P, j" t6 t
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); % z1 J/ V+ ^4 _5 R$ r! \
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
# z* v& j0 I7 e6 q2 Y2 f2 T0x00, 0xFF);
5 w" w, T" t' O# i" V3 o
6 a: W% r! X; l: u" V2 [/* Enable synchronization of RX and TX sections */ ) P2 z6 a2 e3 I* D( L& J# |
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */0 t1 I# t  J' Z! l: S6 H5 k
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);" I+ I- z; `# x/ @% Y' M! X  K
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*9 N. g8 p. {4 ], U6 J# L
** Set the serializers, Currently only one serializer is set as
) V: N' U- b2 E8 [4 u+ J** transmitter and one serializer as receiver.
) ]$ X& D; q; a+ O! s( C*/4 n+ Y% y  x: [6 i) X. Y
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);* Q" m* m0 A% ~; f! F" t, U7 A
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
! n1 H* v2 D( v% F. y4 x* S** Configure the McASP pins 2 c  o5 c+ r! f2 u; `2 t
** Input - Frame Sync, Clock and Serializer Rx
: v* {; }5 P. s4 K, X6 t** Output - Serializer Tx is connected to the input of the codec / g% e9 N% m7 V+ @$ ^- l* q& a( p2 b$ ~
*/7 O7 }" x8 U( Q5 c
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);% F  _& s9 H. B- C* |  a4 e
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
% O  `0 X- a' ]5 zMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
3 |& I. G% N1 i  R: O| MCASP_PIN_ACLKX" ]- D$ P; P; D2 L
| MCASP_PIN_AHCLKX
1 Y; e! K7 d3 K* B; P# m  K| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */0 [" d, u) |6 x
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ' Y" B; V$ l% A& K5 }$ U* k
| MCASP_TX_CLKFAIL
. n; S5 r( X4 M& W0 {| MCASP_TX_SYNCERROR
5 u# O  E: {8 O| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR # X8 q& F6 A/ L9 d8 s5 c, x1 g
| MCASP_RX_CLKFAIL
- w5 {' }7 H9 f+ ]# [' J0 o& P' Z1 G2 M| MCASP_RX_SYNCERROR 5 Y+ s$ Y/ S0 R  Z
| MCASP_RX_OVERRUN);  y  y( b  Q/ t3 ]  {
}
static void I2SDataTxRxActivate(void)
- Z0 t: T( o* j& p1 W{3 H. s3 a% u3 o/ x
/* Start the clocks */) I9 l4 ~% S/ t4 o6 r
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
8 m0 k0 @. |3 x2 {, MMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */9 ]- x: V: ?: B; m) @
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
  x9 y" S1 y3 P8 ~7 H0 ~; }EDMA3_TRIG_MODE_EVENT);
2 C( l& U6 J. A. r  b7 J6 J8 KEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, % P6 b- ?8 l7 j/ c
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
- F  F( e* `8 A6 [& {2 D) CMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);  e( ^! p3 g3 |: z1 x
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
0 L/ `$ \2 Y# R) R2 Kwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
" Z) g8 f0 [) Y) b% M$ E, s6 w3 f- NMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
7 r5 n  Q5 ^$ c; J7 wMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);) ~- n8 f( [8 \3 n7 P8 q, i1 z: C
}

& m. J' V6 i& ~1 e) I  q7 e. I+ N
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

& ?7 ]7 n+ s' w9 |6 |  K5 W# X' `
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-14 22:59 , Processed in 0.039138 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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