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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12504|回复: 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,
5 b/ K' _$ w& T' ninput mcasp_ahclkx,3 r) ]* B/ L5 I  D
input mcasp_aclkx,6 _" _$ [2 N1 D$ X. K
input axr0,( x8 G! K% m) f- y
; b) T! o/ C& d3 I; [
output mcasp_afsr,
' q7 P( B6 ~5 C: n0 Zoutput mcasp_ahclkr,
6 f/ J' r+ b3 Y: ~6 O# `4 s! N& S% Houtput mcasp_aclkr,$ {. A- O' C( G2 y  I3 o
output axr1,' k% r( j2 ?! K- @4 u
assign mcasp_afsr = mcasp_afsx;
2 V. C. v" z0 [6 a) U4 dassign mcasp_aclkr = mcasp_aclkx;
5 P! b. w0 t$ ~6 y; a  }assign mcasp_ahclkr = mcasp_ahclkx;* n- ^0 E& n( y7 x2 u
assign axr1 = axr0;

' b. |5 d6 D" W5 Y% p; H9 f, a+ j0 S" C$ u9 L
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

; f+ s3 E7 ^1 G
static void McASPI2SConfigure(void); G: G: w7 V2 R% |  @  j+ }/ {
{
: S3 C5 P/ |8 B& l7 CMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
/ F. u7 n3 L, W* P; `: i" y3 d  t) gMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
5 z! L: c8 G( f4 I* [! VMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);3 ~4 k+ {7 F6 x- ^
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */9 Z8 y; ~" A( w: i5 B9 R& `
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,/ C* [; B; V3 X, c$ x: B
MCASP_RX_MODE_DMA);
! l( R2 b# e4 ?  jMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
2 I2 i# E# J7 x+ b# A6 WMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */$ B* r0 a- C. \$ l5 n
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, - `1 G3 e/ b2 x9 D9 |# A
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);+ V1 k- X+ j  t) X; S. p
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ' [- N4 @8 ?7 P" x( u4 @
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */# z2 D! Z( A% {6 Y: A* @
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);  Y7 p1 G1 R! N
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
* N2 o$ C- k" W0 A+ TMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,. N7 q" c  z( I, k
0x00, 0xFF);
/* configure the clock for transmitter */
5 I8 j+ A! b7 O+ V# tMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);1 B7 A/ b0 e1 l
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
+ w% X  Y8 `. s& ]+ _" H' wMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,3 F  C. p5 Y9 i& G/ u
0x00, 0xFF);
6 c2 @9 u) f7 O  S' h( s2 d7 Y" k
/* Enable synchronization of RX and TX sections */
6 r4 K% T% J" aMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */, q3 ^1 O" w  l) u) y
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
5 l8 ]" j9 R$ K, e7 e6 B4 t5 S# BMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*/ P3 Q" t9 g$ x  g% |
** Set the serializers, Currently only one serializer is set as
+ j' _0 Q% A0 u* r** transmitter and one serializer as receiver.
! A) Z& T# S/ d; i! J* F9 _*/! r  Z; A5 f0 v) L9 T) V1 s+ c
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);$ {0 F9 [1 ~& q5 P$ v
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
3 J" ~9 F- M9 l; G9 n3 w; j; ^0 t** Configure the McASP pins $ E2 `3 S! l+ y8 Q3 e% Z: Z3 B" ~
** Input - Frame Sync, Clock and Serializer Rx5 G/ E4 d# }& a3 |) R  E3 Z: D
** Output - Serializer Tx is connected to the input of the codec
2 I4 A/ D4 }8 c* b. X*/7 p- K  P3 M, K9 o1 o/ S
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
$ h' l, G7 Y& VMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
8 y, d% Z6 B4 Z1 m& q5 m9 XMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
5 z- H6 t8 w( U. ?| MCASP_PIN_ACLKX2 ]8 X' C- k5 `. ~
| MCASP_PIN_AHCLKX# y  r  o9 T# s) W% P
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */+ E& _2 H! J% p. P' N0 t( g
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 8 m, e: @8 s5 e! @
| MCASP_TX_CLKFAIL
# F2 h3 u, m1 b) \1 _| MCASP_TX_SYNCERROR" j4 @7 m# F/ N. i* p2 T6 e3 K
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR " z' K( p  J( K% b, X- r: {! s
| MCASP_RX_CLKFAIL7 T3 X1 r0 m6 h+ ]! g3 x8 P
| MCASP_RX_SYNCERROR
, w# }2 p) l4 ^/ F! M; \; q| MCASP_RX_OVERRUN);0 @% M! h" G" l* H+ B% b" {
}
static void I2SDataTxRxActivate(void)
1 c7 w! k$ m/ t2 [3 U: A% a7 Z. Q{$ d6 _" b8 G1 ~2 m( N- [
/* Start the clocks */
! }; P- h: D0 ^5 G& Q0 w( {# dMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
: B. o' s0 f8 B8 O% xMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */& W  }, M' Z( k& e$ V; y, q7 n; }
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
# D: S" ~' g4 g% I5 qEDMA3_TRIG_MODE_EVENT);
5 P+ V; b* _2 a) jEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
  i0 l+ {  Z/ eEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
8 W8 o) J: w1 z' [' Q  H- RMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);' L1 j: L1 {# |# a- {+ `9 ~
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
( c  h  y' X( k- p- D" Swhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
; H+ D  U) C4 ]% s; iMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);: `% h4 L: ^, ~6 n, k; q7 j
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
& I2 y) t: T" k7 ~5 w" G}
# F- M- O. o4 h4 ^3 C( r+ w
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
8 P# q- y: U2 `& M+ u; A: r( Y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-23 17:13 , Processed in 0.039869 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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