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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13617|回复: 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,: ?: F3 z+ ?1 I1 n5 [, y1 C
input mcasp_ahclkx,
" T" j9 R, O" Minput mcasp_aclkx,
% D% P9 N) H) h% ?2 b8 `input axr0,
1 r' g& U% {  I- z  S
# H) s9 P+ G$ f# S2 y7 k; [output mcasp_afsr,, a( z( D  _  @
output mcasp_ahclkr,
* ]/ q% c: c0 q0 s( `& l  j$ K  j" ?output mcasp_aclkr,# O/ ^2 R+ V" y) V9 T$ R: E
output axr1,0 D; v4 J8 j! O0 e4 I- o) d
assign mcasp_afsr = mcasp_afsx;: y: v5 W/ G5 K* E+ Q; @
assign mcasp_aclkr = mcasp_aclkx;% J) m2 t' \* A7 f( Y9 ^
assign mcasp_ahclkr = mcasp_ahclkx;
- z; P- U) R* i  z' R  Y2 j2 M+ d: ^assign axr1 = axr0;

* k1 b2 [* y! @5 j7 E' ~4 M2 J8 B& O; c# J; O1 R
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
2 I1 c) H. f( i* E
static void McASPI2SConfigure(void)
+ C6 N, D- H& ^( h$ S2 X{
+ U/ S$ C3 E0 t' d: zMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
4 H/ X# F+ p% A( S& ~) [  OMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */2 [0 M' U6 G# c
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);* C3 l0 w9 i, b4 U) {) E  P
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */$ Y% e5 ]4 d: X( Y
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
* @( u$ Z; M9 v+ v- l$ IMCASP_RX_MODE_DMA);
1 d, L7 T" i3 sMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
4 c$ c  Q) }" k; kMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */& M3 z6 o/ A0 I
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, * g: ]( {% B4 a2 z, O+ F2 R; ^" D' @( x
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
2 \" p* u; ]) P4 c& u% HMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ; B2 y, I- F: b" {& Y
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
1 N( q/ t5 U7 O/ ?! ?  b; \McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);( m: D6 p9 a5 y3 ?, C
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 6 ?" ^2 W8 c7 |* ?! V
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,0 B  Q4 H5 |' U; ?& z2 _( [
0x00, 0xFF);
/* configure the clock for transmitter */
  g  q8 O: }, B) _) q$ ]! w- _McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);: m% B0 e( N& H- ]' e, `& q, C; F
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
: s( l4 C5 T4 w* h/ k: u8 `, ]$ P+ a+ MMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,' V" M0 `0 n. g1 y( D0 B& N
0x00, 0xFF);
: W. A: L0 ?$ K. ^% \* \. S9 C/ K+ `
/* Enable synchronization of RX and TX sections */
" t& ^# g; o3 B% H' O! [4 kMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */  t9 P% t6 J# s; h% f
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
  Y0 E. b- K* D" n* g3 v) CMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*2 U; k1 K4 J( {2 |- O
** Set the serializers, Currently only one serializer is set as* C$ ^& X. F1 w6 d
** transmitter and one serializer as receiver.
* S8 z- @1 S: Z9 a( |  {, L*/
4 r( B- }. p6 X! E. u5 oMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
4 l* @# V$ U; {- f4 d5 j2 oMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*8 `& N0 H5 _: |3 \5 @
** Configure the McASP pins
4 e7 _3 d% R" S** Input - Frame Sync, Clock and Serializer Rx
; L4 b) Z; Z( d! j** Output - Serializer Tx is connected to the input of the codec # t/ ]: ^- e; {$ Z+ z8 B
*/
6 ~4 [+ }( {* I5 `0 rMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);) `: G* r; n4 y) H& T; ~: l
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));7 C- }9 t# g! g0 {( y* h+ y
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX2 E$ W; [8 I, c) x( M4 |7 s
| MCASP_PIN_ACLKX
) [$ E& d, S  _9 y4 ^2 j/ C| MCASP_PIN_AHCLKX
  c  m  s6 n: I: l3 U| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
' ?  Y- e/ F: CMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
* d# w% j0 o5 [| MCASP_TX_CLKFAIL ; a0 I9 D0 M# B5 m% _+ |; T
| MCASP_TX_SYNCERROR
/ ]9 v$ t% s" }; l" x% W| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 1 p& o1 @5 Y6 w' y3 u2 ]
| MCASP_RX_CLKFAIL0 w5 @  @9 Z9 m4 F) E5 p
| MCASP_RX_SYNCERROR ' k7 Z( k4 V& `0 X+ z( d, v: l+ x
| MCASP_RX_OVERRUN);
7 o5 N) I, r; O}
static void I2SDataTxRxActivate(void)5 ?4 b$ k& n0 M3 h# f3 j
{
0 k- W# J1 w" B  u9 R0 m% ]& q# L/* Start the clocks */# S, g; f. F8 a- N: F
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);6 B) }6 j* {7 s* a: [9 o* S* O& |
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */2 J3 m, n+ q. g# S" w
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,( F# T6 @0 X! r+ s
EDMA3_TRIG_MODE_EVENT);5 s4 M* k2 D0 U6 E! T1 Y
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, % g" t! N6 P. B( ^! l
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */* |- s, v/ \! w2 A. c
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);$ T! a# ^/ ?2 r* H; t5 R8 E
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
" q' r& G/ ?8 g- s0 S, n$ Vwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */3 e% G& B. E5 S5 g/ ]9 w. M0 K, Z
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
+ F) W0 @2 O. T8 s2 u: q5 ]& `. ^) GMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
/ P7 B- A+ F1 q3 R' q}
+ ?: C+ K) }2 f" ~4 \
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
( `( I3 j2 M* X; A9 P
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-11-14 00:59 , Processed in 0.042823 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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