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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1214

积分

金牌会员

Rank: 6Rank: 6

积分
1214
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,$ z# ^- M" ?+ A1 l/ m1 V! e1 B
input mcasp_ahclkx,
8 b8 l5 y  M  f, }, d$ i+ ainput mcasp_aclkx,
' V& x) b% ^$ O- j9 N3 d! Cinput axr0,
+ ~$ e1 b- ?/ U) f6 Z: O( d
8 K6 N/ }. v9 r. Z* S* ^output mcasp_afsr,
2 Q" R( u6 z+ G" `4 d, C( T2 routput mcasp_ahclkr,% ]1 U% r& M2 p0 K
output mcasp_aclkr,5 V1 ]8 {/ P9 o4 l3 a' ^; q
output axr1,
: r0 D: i2 A9 V2 ]- m9 e) e
assign mcasp_afsr = mcasp_afsx;8 Y2 L) O3 n) Z- ?
assign mcasp_aclkr = mcasp_aclkx;8 b( W6 _. M2 ^* S; L8 x
assign mcasp_ahclkr = mcasp_ahclkx;
% N8 d6 C* \; Oassign axr1 = axr0;
6 }3 u/ L) h8 i
" G9 x6 z  y! X! P( T7 t/ E7 E0 L
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
) M/ k, ]4 u. u1 g: \0 E
static void McASPI2SConfigure(void)
7 B  V% p( q1 N9 _% f' w{
" G: q6 I) d% O- z- K8 j# ~McASPRxReset(SOC_MCASP_0_CTRL_REGS);. F9 e4 G# X0 d1 T! e* a! L8 z
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
; [1 p, y7 P* F6 {+ e- t1 E7 ~McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
8 H' o; o, F! e% x- R* RMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
( n: t0 n# n: k/ d* S8 CMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
& i: ?5 P: O" y; }/ eMCASP_RX_MODE_DMA);. Z) l+ s" V1 K* Z
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,+ R7 ~1 d1 p- H. K( R
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */# {2 y( t3 D1 m7 D2 Z
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
! }, \  t) f$ g6 D- OMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
) G% B! X4 h2 G- y4 W, ?# }McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
" h+ M% C7 I9 n4 bMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
! W6 ~) }, c9 b# j" g6 ^+ E0 SMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);0 A! ^0 ]: ], {
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ) D# o4 @$ m3 u' x, Q2 ]( ^/ C
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
0 A$ m: @6 _( P4 `8 H0x00, 0xFF);
/* configure the clock for transmitter */6 n8 S% l& d2 K# H, J1 _
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
; m( _5 q$ r- [' s& n! ?McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ; _9 r' Q' n# j* b' L3 w" u
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,) @& s4 y4 u* v
0x00, 0xFF);
! l+ ^' e# O# T6 @* v2 ~% \5 G$ Z' U+ D
/* Enable synchronization of RX and TX sections */ 1 W2 {1 h/ ]  g4 a! l' w
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */+ o- B/ D3 C( [0 K
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);; r8 l, y7 [  O, j' W2 n
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*) b6 w+ v% J, T) @; p0 u7 L+ @
** Set the serializers, Currently only one serializer is set as
% T; m$ J$ |4 y; e. X  i* I* p** transmitter and one serializer as receiver.
! z$ t: `  }$ M( Y2 ~- \*/
" K: ~2 P# k; ^6 zMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);  x6 J" L/ ^9 T1 C$ a: R8 M
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
0 v# I+ I2 N6 y/ I- Y% h** Configure the McASP pins + ]" f( u/ p, d" U9 J# _6 j' v' @9 d
** Input - Frame Sync, Clock and Serializer Rx
8 w" S1 b( O/ E& S9 G' O3 ]# `** Output - Serializer Tx is connected to the input of the codec 8 P/ d4 t5 m( J
*/- T! S: `; j6 G- v, ]4 `7 _( ?
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
7 r+ ?8 v! |4 h2 a1 F0 F2 RMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
. V( Q9 D4 L& b( X4 {+ G6 K. qMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX4 `( N- r8 l( U  G0 ~! ^3 E9 C0 }% @3 L
| MCASP_PIN_ACLKX) k6 F) s  Q; o, Y! F* f+ i
| MCASP_PIN_AHCLKX) n* ^& I: M  j9 p4 d) c
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */  `% E% D* F8 Z% @4 J* W" u
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 2 r& G* r3 B6 u7 Y( q8 `
| MCASP_TX_CLKFAIL
* A/ ^  I4 I* B! Y! @| MCASP_TX_SYNCERROR9 t- I5 |7 P0 X% w
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
8 h/ e- @+ }; o1 O| MCASP_RX_CLKFAIL$ ]. v5 q9 s+ v7 U- s
| MCASP_RX_SYNCERROR
( ?$ I! b/ h  R- o, ~| MCASP_RX_OVERRUN);
- n& }# t% e1 h8 w9 i2 ?9 K}
static void I2SDataTxRxActivate(void)
2 J" f9 B2 |4 l1 j# \{1 w+ y  [9 c: J2 j+ O( u, B
/* Start the clocks */
' O, R. l8 |! VMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);: a( b( \9 f6 L1 p' Q1 _4 O1 p5 u* w
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */$ D0 [, K- C0 F& r6 b$ n, _# ?8 B
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
8 X7 A8 i' `% {' k$ bEDMA3_TRIG_MODE_EVENT);- i# y  {3 o0 T- \  }
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ) s! c: z; k% K& {
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
6 a2 {/ K( E/ c/ r$ tMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
: q0 r" S' b  mMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
6 ~* H7 A* i  I9 Z+ Pwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
/ r$ W* L) k/ kMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
  N: Z, M. f7 \: \( g/ HMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
3 o8 f) V# J8 z  E}

; g, p4 j6 |, F/ Q! G+ E! L+ F
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

' ^- J. t7 _+ h. H, P( ~$ F3 R
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-3 22:04 , Processed in 0.041419 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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