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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12340|回复: 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,
! c; G4 J5 U  ~0 n5 U# E. ]input mcasp_ahclkx,
/ f% O1 A- H, Z" G, pinput mcasp_aclkx,
) E) u: [  r3 e8 }input axr0,
: m7 `& Y3 R( ^
% {$ ~% y" j3 L/ boutput mcasp_afsr,6 }4 ?+ G" T! |' V$ {+ D) l9 H
output mcasp_ahclkr,
" Z9 ^9 ^/ @5 |* n8 ~8 youtput mcasp_aclkr,. Y' h9 l. ?6 B! z, z
output axr1,4 U9 F; [( `" ~
assign mcasp_afsr = mcasp_afsx;% k& `; i, S1 r7 o! K4 M
assign mcasp_aclkr = mcasp_aclkx;  D# g; d# `* d: C3 T  n' N+ I
assign mcasp_ahclkr = mcasp_ahclkx;
5 o3 N- [# R) L! ]* Eassign axr1 = axr0;
6 j% Z* ~9 N# m9 R  O9 W
3 j6 q0 a' _9 F, G- S
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

) }, w/ y, z* m: |/ J9 ?0 [, q
static void McASPI2SConfigure(void)$ z4 h# g$ J0 m1 X% j3 [; K
{
6 ^9 a2 G4 {% z) z# f, _; S0 NMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
1 ~. M0 _! D+ Q, O. N; p. JMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
5 M8 ]* J. J! B. @McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);1 U: X7 M; L* R
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
3 |8 Y% r! P0 \( P/ N& {* g0 pMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,3 S2 |* j: b9 H$ ~9 z
MCASP_RX_MODE_DMA);9 S' \9 N! F" \: j* V- F
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
( b  ^1 P6 M7 z9 _2 UMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */) b9 H7 ~/ F" q/ H/ p
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
0 S4 J8 Z  f" @/ O: {& E$ ~MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
/ ^7 Z& P3 m( D+ MMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, : e* {: y% x8 l9 L6 W& e. E
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
3 x7 Y' B& e, b/ YMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);, i" x$ n# C* f% s: ~. V
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); : @8 S8 |) Z/ D. ?  Q
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
0 P' x. x" L1 M; b5 f0x00, 0xFF);
/* configure the clock for transmitter */, o/ o2 m. t, c' z' `+ m0 D
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);! ?. d6 x4 m0 ~$ u# v2 j
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); / c' Q2 c4 u  u
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
$ ]4 _- g, X5 F) B, ^0x00, 0xFF);- {4 _; ~7 i9 a& L9 h

# X4 _7 a8 B  Y5 d/* Enable synchronization of RX and TX sections */
# P* A6 \' d' a, F8 \8 F2 l* AMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */: K$ h3 {4 M! ?7 y/ ?/ X
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
) g- t9 @/ k+ v( T8 t1 M% x7 VMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/** ^9 ^: J0 [: s$ a' O
** Set the serializers, Currently only one serializer is set as
, M! }9 o! D$ S** transmitter and one serializer as receiver.
- X! |) p* j7 f0 p: O/ S; s*/- Z" L( ?3 }; H6 g3 y& s# H1 G
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
0 U1 ?9 y8 ]3 v+ ?# DMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
3 U& L. n" X3 g$ ~** Configure the McASP pins ; W% Y4 Z+ S8 I3 T6 P6 s9 N
** Input - Frame Sync, Clock and Serializer Rx/ b9 ^# |3 P8 v! R
** Output - Serializer Tx is connected to the input of the codec 6 B" q& O  w& p* S# B, @2 d1 m
*/
9 a+ }; q) U9 _" o* m9 HMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);4 V  a9 d7 ?2 T0 {" u7 x/ L$ E
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));! K, k( @9 Y+ z" Y) O( G. n
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX0 R: `% [% E5 [0 z
| MCASP_PIN_ACLKX
4 \) m, Z. f# ]& \* k, @| MCASP_PIN_AHCLKX
- ]2 ^8 V3 R! O; v1 B3 y0 T: B| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
. K6 H( k/ |& S5 A% U) \, W$ S" z1 FMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
! x% B0 C& n- T; t| MCASP_TX_CLKFAIL 8 {) F' I5 i; K3 y+ F+ j
| MCASP_TX_SYNCERROR% u' J# N- f: j) D7 E4 V6 s2 j; b
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
+ u( c( y# ?* U  B! Q; w# j| MCASP_RX_CLKFAIL6 V4 }: P8 n, e6 `
| MCASP_RX_SYNCERROR
  }& ]' T7 O7 L- N' T| MCASP_RX_OVERRUN);
/ h7 K* x' M& a0 A* S- m: c- K}
static void I2SDataTxRxActivate(void)
" U7 [$ x$ H$ M/ x( `{& J: V9 e) h: B* B' p7 G! s1 p
/* Start the clocks */
4 M2 q% X, l8 W' X' V0 NMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
3 n' T: m1 m# v8 kMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */  m& u! t5 W# \- P) ^
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,: K  x; X5 d3 g: @9 E. ^
EDMA3_TRIG_MODE_EVENT);
; R; f4 V/ S1 O3 eEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ( ]8 j/ A( b  Z0 g2 A4 S
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
( Z% d3 h8 {, q! V, l. fMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);- P) L) A7 U7 N) [( ]; c
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
) g1 I7 C; _# u2 g7 b! \2 Kwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
+ F- |( n/ n4 N$ \  f; I9 L' ?1 {McASPRxEnable(SOC_MCASP_0_CTRL_REGS);6 T$ T* R2 }3 J  {( U
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);! e. F" s, M! D& g5 _. v- z1 F% D
}
. _; C% i+ H. r/ J6 x& @- X$ y
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
8 S. ?7 O7 ~6 q" J# x2 E
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-6 02:00 , Processed in 0.038899 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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