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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12294|回复: 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,
6 R& I0 G, L$ m) |$ u( e" P" w/ oinput mcasp_ahclkx,
" Y/ f) R1 X( Q! @$ f: Ainput mcasp_aclkx,8 @2 ]( U/ M0 A, J* V% {: U8 V1 L
input axr0,
, ?# N! m+ v5 D" w0 Q7 Q: L$ A6 L8 k
$ D; L6 T; }' s; P+ I, moutput mcasp_afsr,/ u0 r5 H5 Q( T& I( K* T% n
output mcasp_ahclkr,; @1 U3 P' S- a$ e4 Y
output mcasp_aclkr,
8 W' e) V9 d# B# }" aoutput axr1," l: }2 d( K. G" K6 j* c# |& s
assign mcasp_afsr = mcasp_afsx;, a! t1 \6 O6 z+ b1 B/ K
assign mcasp_aclkr = mcasp_aclkx;
# e) Y$ ^6 W2 R! d# v  d2 uassign mcasp_ahclkr = mcasp_ahclkx;
) G6 x; I! N6 ?& E7 }8 h) passign axr1 = axr0;

6 D# W: ]' S& @  J0 N' g  x4 a
4 X4 i8 z' {$ M0 ^
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

4 W2 T* W. m* b/ g; q; P
static void McASPI2SConfigure(void)
, Y2 R% L9 F4 R6 e{8 P, ?/ Y3 Y9 L9 }4 J% L# E" E
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
! v# T2 e" i3 X% b3 O8 u& X; RMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */, K4 |  b  h9 C- h
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
' j. @' b8 M# e) h. {McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */7 h, B- t( i' y$ s2 }% o; f* `3 u7 S
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,+ Q$ i% v  @0 V% z! @7 ?
MCASP_RX_MODE_DMA);: g3 y; ~9 |* I) q/ m; t
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,2 U0 M$ f0 A1 B+ V# ]8 ^
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
* G7 k# J. V) X3 s7 RMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
, u/ }2 o' O/ ]MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
5 X  A0 C' n$ `* IMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
' p4 C8 u* l6 i& V; Q+ Q+ nMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */& s' l; U9 k4 l6 q: u2 ?
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
$ }5 \4 S5 `# {$ r' t( IMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); / f+ a0 m, p; z5 r2 @
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,: @! E( N( O- f% G
0x00, 0xFF);
/* configure the clock for transmitter */8 @/ v$ y% C" V- a+ c
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
9 g: t5 C' O2 M% }1 z- ]McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
9 d! i- _1 W' t! iMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,9 E, k5 s2 B2 ~) I  \1 }  @
0x00, 0xFF);% u$ q+ z: e" {0 t. y7 h0 x

7 d/ o* G$ x! B8 a" l" b/* Enable synchronization of RX and TX sections */ $ B) J% y9 o1 ~. G
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */1 _: Y: F, v3 ?0 u" F6 v3 T
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
$ Y! L" z2 P0 q4 J: Y+ CMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*5 N4 m; l# w  P: E# Y
** Set the serializers, Currently only one serializer is set as) o4 K3 X8 S% |' ]; u  W) B6 x
** transmitter and one serializer as receiver.
/ S9 |- \2 ^5 p2 l0 m2 h$ T! J*/
& C, E; c# ?/ P( I2 \+ q7 jMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);0 }5 u8 |! C: ]7 z
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*5 N9 p) ?! G2 ]$ @! h, g
** Configure the McASP pins 1 P# ]2 W. s0 k3 [: u# E% h+ R) F! g, l
** Input - Frame Sync, Clock and Serializer Rx
( Q( Y  L, v, ^4 p** Output - Serializer Tx is connected to the input of the codec
  P" k3 r' z& o; M8 D*/
/ ?4 i# u" i3 `  `  z8 C! }7 UMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);$ G! ?7 n4 s9 [" i9 U
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));& k) b+ B, s8 C% }9 b2 Y
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
, z$ V. u2 {& ]/ P$ X8 d| MCASP_PIN_ACLKX
9 |/ X. q( I+ N( x4 m| MCASP_PIN_AHCLKX
' M  |6 P! q0 N: [' o| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
/ U6 f4 ~9 p  w8 _. P- I# ~% o7 hMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR , g& j, ]( S$ V4 ]: n# b
| MCASP_TX_CLKFAIL
+ K5 \# p! M, T8 G! o  A# w/ f| MCASP_TX_SYNCERROR% i2 e8 E0 \) }2 k: m
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
# {& B# T. n; ?: [0 L! u: }4 d| MCASP_RX_CLKFAIL
  v2 I- `9 [# d# F+ s5 }| MCASP_RX_SYNCERROR
/ K/ l1 p* q, b# j4 v* F! \5 || MCASP_RX_OVERRUN);/ \) N; z) z4 r
}
static void I2SDataTxRxActivate(void)% O5 X9 a8 K  ~/ _
{9 t1 V6 D. p* @8 Q0 I$ q8 ^: p) n- U
/* Start the clocks */
! ^0 U% v1 w9 m( W: A) l1 MMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);- B; `3 U1 R& g
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
. t% B- K) A! P- U/ x% r8 t$ \$ E/ F! I( @EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
+ X0 ?, W/ W" \6 m# T; z9 X' i. c& MEDMA3_TRIG_MODE_EVENT);
5 ^' J# u8 R+ [; uEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, " Y% K* Q" n" C  D& [, [
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */% \+ y+ ]4 L: m- }3 t
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
' u5 f0 o+ p8 fMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */% @2 I* V& o/ ^6 p" s& k
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
; |& H9 }& @. y! w& H) \McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
, P- q8 h0 J5 C5 m4 k& ?, j! dMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
; P$ Q+ S# `# ~- A- ^" ~}
0 w7 W+ E! Q2 f( G
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

; V9 h) z1 a  f# S( [
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-4 09:21 , Processed in 0.037898 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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