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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12865|回复: 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,9 v) ~( d  T& P- A& ^9 o  E
input mcasp_ahclkx,$ t' e  S9 r# A. s% F$ i
input mcasp_aclkx,: r. T5 C( q( _+ p4 S$ Y
input axr0,
0 A% p" x$ e( R5 m6 h0 L
" z; \( V4 r& ]! @1 `output mcasp_afsr,
) y' T" w5 Y, A: `+ b! N# goutput mcasp_ahclkr,
4 o, C: Y9 p$ d: Toutput mcasp_aclkr,* [( @0 z8 U! P9 h$ U
output axr1,6 B* X3 l4 Q: G. W8 |$ y
assign mcasp_afsr = mcasp_afsx;
4 n  @* H, w+ A0 d: Nassign mcasp_aclkr = mcasp_aclkx;
/ h' P% |: x2 d- Q8 w/ Lassign mcasp_ahclkr = mcasp_ahclkx;0 R' M  P: b3 j& A" |
assign axr1 = axr0;

& u) P' O& ?) d  ]& T0 L- [
7 D% Z: d" l' Z7 l! h3 _% }% H1 j
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
1 `+ o' o. [3 F
static void McASPI2SConfigure(void)
2 X5 O3 q5 r/ ~" y# s  g6 u  C{2 [5 A3 F& Z* \4 @3 P% s
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
7 z/ t/ q9 K. JMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
9 J( W+ L% v3 L8 d* yMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);, M" S7 z7 ]& ^3 U7 b, i: r/ r1 @  a
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
! {& k! w- `/ M" d# bMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
" z4 P' t$ Q4 P: I. K. w/ o$ _MCASP_RX_MODE_DMA);( k4 i. L- O3 P6 ], _1 y6 _
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,) E7 Q. G. F) S: w5 e
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
* }7 H% N( O6 T- w, ~# r! k7 }McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 3 g6 d6 x  k! e/ [% E
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);" \: r. l1 Z% Z6 w' L9 c& ]3 g3 \7 l
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
, t0 z0 I9 |+ k# @MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */4 ^9 D" G) x# A. _8 P
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);; P" {0 e7 M  @' B
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 9 w$ Z4 B" ]5 N1 z
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
# v; T3 n7 d6 M( J; ~. q0x00, 0xFF);
/* configure the clock for transmitter */
3 I7 H- i' L3 i" {1 D) i: [- v5 NMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);- ]% x; W' Z; a$ U% _8 g" p* N
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
  h) K& R' ^% H+ _/ l) SMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32," }; Q' p0 ^- q% q
0x00, 0xFF);
2 k/ |# V5 @* F! a7 d7 ^& j$ g$ ^2 c- ?) w  v
/* Enable synchronization of RX and TX sections */ , ]" o" m% Z8 S% j
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */( k' e* l3 E3 n; [* a
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);5 U+ M, q" k5 l3 a6 E' j
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
- |% t5 n: i% ^' V$ y** Set the serializers, Currently only one serializer is set as
0 {0 G. j2 D9 v$ L** transmitter and one serializer as receiver.  M) f. r/ y7 `
*/  }; c5 N1 z1 o; {0 c# |; P
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);6 `; x; w. M( p# o: t& b
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
7 m8 G9 m- z1 x** Configure the McASP pins 7 Y' E, _; k8 P$ S' ]5 T
** Input - Frame Sync, Clock and Serializer Rx
4 o+ M8 [' f- \. d5 |** Output - Serializer Tx is connected to the input of the codec
* U0 r: k* |$ T- i3 k, I2 D4 t2 H*/2 F" T, G( {" ~: p2 t" d8 T
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
# k/ J8 w( G" v) E5 s: {McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
6 V4 f) r* s% l$ n& y8 c1 oMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
' e$ A4 M7 E* w| MCASP_PIN_ACLKX3 T0 G# m) ^9 T' Z- W, v+ s
| MCASP_PIN_AHCLKX+ ~4 Y7 g$ y" [
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
9 z5 z( {8 u7 a% N: z( dMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 8 ~6 e6 q) s* T
| MCASP_TX_CLKFAIL 6 z& V6 L- t" {% ~: |. c' }, F
| MCASP_TX_SYNCERROR
2 a. j% I3 q# n/ h' [1 G| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ( K3 s' R6 F, b
| MCASP_RX_CLKFAIL
6 v4 r% t- [2 \0 D  ]| MCASP_RX_SYNCERROR ) P8 o6 x  w2 g
| MCASP_RX_OVERRUN);
2 ~) k, S6 c5 v; G}
static void I2SDataTxRxActivate(void)
5 v0 K7 A  h3 C0 L- b{+ A2 z* f: E& m- x+ ?1 t5 M
/* Start the clocks */7 G- r  c7 n" R" a  i; j- l
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);: n" u6 H' I8 n; V
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
# g5 B' [) U7 d& i+ u: Q0 l) ZEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,' h$ a, ?0 f- [; ?7 M$ G1 }5 b, p/ U
EDMA3_TRIG_MODE_EVENT);6 l. p9 T( Q% l5 F) p+ o. x9 ?
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
* r* q0 f' e5 C+ K" r( _. yEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */) F2 r1 |3 K8 W6 H; {
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
, t1 L$ e2 Q3 y/ z- c& oMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
0 F$ r8 P: o3 ]) awhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
0 r/ K8 L% b5 O0 j& k' w6 l2 kMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);$ G# G, M" G% x' K5 G
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);0 \: x4 k7 _! n6 |+ ^7 y
}
4 b( V  m& ], }) h' q2 S
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

- t( w9 [- f; l( d1 Y( p
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-7-10 01:23 , Processed in 0.040430 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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